所以,我有一个 selenium webdriver 命令,它是 while 循环的条件,如下所示:
while (driver.findElement(By.cssSelector("a[action='cancel']")).isDisplayed() == true){
driver.navigate().refresh();
TimeUnit.SECONDS.sleep(5);
driver.findElement(By.id("479510558845313")).sendKeys(InstagramAievx.spamusernameinput);
driver.findElement(By.id("263795143794707")).sendKeys(InstagramAievx.spamcommentinput);
driver.findElement(By.id("u_0_4")).sendKeys(x);
driver.findElement(By.id("u_0_5")).click();
}
TimeUnit.SECONDS.sleep(2);
driver.findElement(By.xpath("//a[contains(text(),'Okay')]")).click();
killFirefox();
所以,我的问题是,当条件为假时,它不会跳过 while 循环并转到其下面的内容。它尝试这样做: driver.findElement(By.cssSelector("a[action='cancel']"))
这会使程序失败。当它为 false 时,如何让它跳过它并转到循环外的内容?谢谢。
最佳答案
在检查元素是否可见之前,您需要处理元素不存在的情况:
while (true){
WebElement button = null;
try {
button = driver.findElement(By.cssSelector("a[action='cancel']"));
} catch (NoSuchElementException ex){
break; // button is missing, exit the loop
}
if (button.isDisplayed() == false) {
break; // button is hidden, exit the loop
}
driver.navigate().refresh();
TimeUnit.SECONDS.sleep(5);
driver.findElement(By.id("479510558845313")).sendKeys(InstagramAievx.spamusernameinput);
driver.findElement(By.id("263795143794707")).sendKeys(InstagramAievx.spamcommentinput);
driver.findElement(By.id("u_0_4")).sendKeys(x);
driver.findElement(By.id("u_0_5")).click();
}
关于java - Selenium 在java中的while循环中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35835002/