Selenium 仅在 != 循环的空部分执行,并且不运行循环的"else if null "部分



我有一个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); 
}
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;
}

最新更新