2017-01-12 25 views
-2

我想填充一个动态的,从中自动生成用户信息。所以我想设置其他条件为from的字段。所以我用的if else循环步骤defenition但如果条件真其确定的代码EXCUTE假设,但如果“如果条件不能停留在其他循环的代码why.Please帮助Selenium - webdriver测试if-else循环卡住/出错

的代码如下

\t @And("^Input Height in add report$") 
 
\t public void Input_Height_in_add_report(DataTable newHeight) throws Throwable { 
 
\t \t 
 
\t \t 
 
\t \t if(driver.findElement(By.xpath("//label//span[contains(text(),'Height')]")).isDisplayed()){ 
 
\t \t \t Thread.sleep(2000); 
 
\t \t \t List<List<String>> data = newHeight.raw(); 
 
\t \t \t driver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/form/div[7]/div[1]/div/div/input")).sendKeys(data.get(1).get(1)); 
 
\t \t \t \t } 
 
\t \t else{ 
 
\t \t \t 
 
\t \t } 
 
\t 
 
\t }

+0

是的,我知道,但它卡在其他循环。它不会用于下一步。 –

+0

如果问题出现在'else'块中,您应该发布代码并确切指出问题所在。 – Guy

回答

0

的问题是,如果findElement发现它去if语句,但如果它doenst找到元素它给NosuchElementFound例外。为了解决这个问题哟可以使用try-catch块在else运行代码,检查元素以下:

@And("^Input Height in add report$") 
public void Input_Height_in_add_report(DataTable newHeight) throws Throwable { 

    try { 
    if(driver.findElement(By.xpath("//label//span[contains(text(),'Height')]")).isDisplayed()){ 
     Thread.sleep(2000); 
     List<List<String>> data = newHeight.raw(); 
     driver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/form/div[7]/div[1]/div/div/input")).sendKeys(data.get(1).get(1)); 
    } 
    } 
    catch(Exception e) { 

    // your else code should be here 

    } 
} 
+0

我不想为其他条件执行任何其他代码,我应该保留空白。 –

+0

@MithuKhan如果需要,您可以打印或记录异常以便以后调试。你可以接受答案吗? –

+0

在接受答案之前,我想用您的代码运行测试。 我告诉你,如果我离开catch(){}, 空白是否有问题?我的意思是,如果我不写在别的代码 赶上(例外五){任何 //你的代码,否则应该在这里 } 假像现在这将是一个问题,或者我必须执行代码在其他条件。我ma bigginer在java –