java - Selenium 在java中的while循环中查找元素

标签 java eclipse firefox selenium while-loop

所以,我有一个 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/

相关文章:

java - Maven 构建在下载 Artifact 时获取连接重置

java - 在 eclipse 中安装 opencsv + 文档在哪里

c# - 获取 Firefox 网址?

java - Angular js : How to pass "." character into a parameter for $resource

java - JPanel 到底做了什么?据我所知,它创建了内容 Pane ,我们可以在其中添加组件,是这样吗?

java - 为什么 System.getProperty 在 eclipse + Java 8 中不起作用?

java - 当断点命中时,从更高的堆栈级别查看变量的值,而无需手动爬升堆栈

javascript - 尝试登录时 Firefox 的 Selenium 测试失败

html - Firefox 在记住表单输入时没有选择用户名/电子邮件字段

java - 舞台还是 window ?