如何使用webdriver等待页面中不会出现的元素

时间:2014-04-28 11:55:55

标签: selenium webdriver

有人可以对我的查询提出一些建议吗?

查询: 在我的应用程序中,有一个经常出现的弹出窗口,但有时它不会出现。 我必须检查弹出窗口是否存在,然后对其执行操作。此弹出窗口也需要一些时间才能显示在页面中。

我的解决方案: 首先,我通过明确的等待条件等待弹出窗口。 然后通过if循环检查是否在页面上显示弹出窗口。 如果显示然后执行操作,否则执行其他操作。

现在,如果弹出窗口没有出现,我就会超时。

这是我的代码:

FluentWait<WebDriver> wait_1 = new FluentWait<WebDriver>(driver)
 .withTimeout(30, TimeUnit.SECONDS)
 .pollingEvery(5, TimeUnit.SECONDS)
 .ignoring(NoSuchElementException.class)
 .ignoring(TimeoutException.class);

 //getting time out exception if pop up does not exists
 wait_1.until(ExpectedConditions.visibilityOfElementLocated(By.id("some id")));

 if(driver.findElement(By.id("some id")).isDisplayed()) { 
 System.out.println(driver.findElement(By.id("some id")).getText());
 //click some elements
 }
 else{
 // `enter code here`
 }

1 个答案:

答案 0 :(得分:0)

您可以尝试类似

的内容
int count = 0;
do {
    if (driver.getWindowHandles().size() > 1) {
        String parentWindow = driver.getWindowHandle();
        Set<String> windowHandles = driver.getWindowHandles();
        Iterator<String> iterator = windowHandles.iterator();
        while (iterator.hasNext()) {
            String handle = iterator.next();
            if (!handle.contains(parentWindow)) {
                driver.switchTo().window(handle);
                // Alert is present do something
            }
        }
        driver.switchTo().window(parentWindow);
        break;
    }
    count++;
} while (count < 100);

这将等到警报出现或计数达到100.您可以根据您的要求更改计数值。