【发布时间】:2019-09-21 19:22:08
【问题描述】:
我有一个 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);
}
【问题讨论】:
-
我会假设页面有元素,元素的值没有被
driver.findElement(By.name("city"))检查 - 只是它存在。 -
only populates 3 fields你的意思是说只有 3 个字段填满了值吗?检查这个>driver.findElement(By.name("city")) 1=null的目的是什么?此检查是否意味着您只看到 3 个字段?问题不够清楚 -
@Dev 不,我在这两种情况下都看到了所有 9 个字段。唯一的区别是当 ID 有效时,会自动填充 4 个地址字段(所以我不想碰它)。出于这个原因,我只填充剩余的字段(与用户相关的),而单独留下地址字段。对于ELSE语句,ID无效,所以我要填充所有字段,包括地址字段
-
driver.findElement 返回一个 WebElement。您确定要验证字段/WebElement 的值而不是元素本身吗? (例如 WebElement 元素 = driver.findElement(...);字符串值 = element.getText())。可能您想检查该值是 null 还是空,而不是 WebElement。
-
@ApostolosEmmanouilidis 感谢您的建议!不知道为什么我从来没有想到要打印到控制台并检查。想通了这个问题。 GetText 没有获取自动填充的值。但是 getAttribute("value") 成功了。代码正在运行!
标签: java selenium if-statement selenium-webdriver selenium-chromedriver