Selenium仅在!=循​​环的一部分为空时执行,并且不运行循环的“否则为null”部分

时间:2019-09-21 19:22:08

标签: java selenium if-statement selenium-webdriver selenium-chromedriver

我有一条if-else语句,其中:

条件1:ID匹配,并且某些字段是自动填充的。然后,if语句仅填充其余字段

条件2:ID不匹配,所有字段均为空白。 ELSE语句填充了所有内容

当我使条件1为真时,代码将运行If语句并正常工作。 当我使条件2为真时,代码再次运行If语句而不是else语句

我正在使用Selenium Java进行自动化。

我尝试为每个字段对象放置单独的if-else语句,我尝试了在if!= null,if!field.equals(null)之间交替。我也尝试过执行field.gettext(),将其分配给变量并检查variable.length!= 0。

if (driver.findElement(By.name("city")) != null) {

    object.setField6;
    object.setField7;
    object.setField8;
    object.setField9;

} else {

    object.setField2;
    object.setField3;
    object.setField4;
    object.setField5;
    object.setField6;
    object.setField7;
    object.setField8;
    object.setField9;
}

我为if语句选择了一个随机地址字段。

if (cityField != null) {

     Only fill the three remaining fields

} else {

     Fill all 8 fields (i.e. including address fields)

}

运行此命令并输入有效的ID号时,if语句可以正常工作。但是,当我放置一个无效的ID(使“ cityField”为空)时,将执行if语句而不是“ else”语句,并且仅填充3个字段而不是全部8个字段。

这是我在每个字段的对象方法中要做的所有事情:

method() {
  city.click();
  city.sendKeys(cityName); 
}

1 个答案:

答案 0 :(得分:0)

 if (driver.findElements(By.name("city")).size() > 0) {

                object.setField6;
                object.setField7;
                object.setField8;
                object.setField9;

            } else {

                object.setField2;
                object.setField3;
                object.setField4;
                object.setField5;
                object.setField6;
                object.setField7;
                object.setField8;
                object.setField9;
            }

或者,您可以

         try   {
                driver.findElement(By.name("city"));
                object.setField6;
                object.setField7;
                object.setField8;
                object.setField9;

               } catch(WebDriverException wde)
            {
                object.setField2;
                object.setField3;
                object.setField4;
                object.setField5;
                object.setField6;
                object.setField7;
                object.setField8;
                object.setField9;
            }