java - Selenium WebDriver Java - 如何执行 "if exists, then click, else skip"?

标签 java selenium if-statement webdriver alerts

在我的页面上,有时会显示提醒。 (这些实际上是 Salesforce 中的通知)这些警报破坏了我的脚本,因为我的脚本无法找到警报背后的元素。我想检查警报,如果它们存在,请将其关闭。如果它们不存在,则继续下一步。

次要问题是这些警报可能不止一个。因此,它可能会在任何地方关闭 1 到 6 个或更多警报。

我已将这段代码添加到我的测试脚本中,如果有一个警报,它就会起作用。显然,如果警报不止一个或警报为零,我的脚本就会失败。

driver.findElement(By.xpath("//button[contains(@title,'Dismiss notification')]")).click();

我还在学习java,所以请温柔点。 ;) 但我很乐意将其放入一个方法中,以便它可以查找那些按钮,如果它们存在则单击,继续查找直到找不到,然后继续。我只是不知道该怎么做。

我也在使用 TestNG,我知道这在允许和不允许的方面有所不同。

谢谢!

最佳答案

您可以使用 wait 和 try/catch 来获取所有按钮并单击每个按钮(如果存在)。

1.如果所有警报同时出现,请使用以下代码:

try{
      new WebDriverWait(driver, 5)
              .ignoring(ElementNotVisibleException.class, NoSuchElementException.class)
              .until(ExpectedConditions.visibilityOfAllElements(driver.findElements(By.cssSelector("button[title*='Dismiss notification']"))))
      .forEach(WebElement::click);
} catch (Exception ignored){ }

2.如果单独出现警告,使用下面的代码:

try{
    while(true) {
        new WebDriverWait(driver, 5)
                .ignoring(ElementNotVisibleException.class, NoSuchElementException.class)
                .until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("button[title*='Dismiss notification']"))))
                .click();
    }
} catch (Exception ignored){ }

关于java - Selenium WebDriver Java - 如何执行 "if exists, then click, else skip"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52392081/

相关文章:

python - 使用 Selenium 滚动页面的有效方法

java - 在 Java 中使用 "else if"语句在自定义方法中出错

java - Play Framework 版本1.2.4

java - Do Loop变量无法解析为变量

firefox - 运行 MTAF 时使用 selenium server 2.24.1 和 firefox 13 截屏

javascript - IOS:当我尝试执行某些触摸操作时出现 "Failed: Method is not implemented"错误

java - 为什么这个方法会导致并发问题呢?

java - 子类的抽象类和强制方法?

java - Java猜数程序问题

java - 否则没有if?