Selenium元素可见的监听器

时间:2014-08-18 01:48:15

标签: java selenium selenium-webdriver

在我的测试应用程序中,错误和成功的消息将在具有5-10秒超时的元素中可见。只有在出现错误和成功消息时才会显示该元素。它不是弹出式消息。我写了一个方法来在发生故障时截取屏幕截图。但是由于它的超时,屏幕截图中的错误不可见。 如果你能告诉我如何实现一个监听器以捕获error元素的可见性,我将不胜感激。我可以在每个提交命令后编写findelement。但我认为这不实用。

2 个答案:

答案 0 :(得分:1)

您甚至可以像这样使用FluentWait -

public Boolean fluentWait(WebDriver driver, final By awaitedElement) {
    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(30, TimeUnit.SECONDS)
            .pollingEvery(1, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class);

    Boolean flag = wait.until(new Function<WebDriver, Boolean>() {
        public Boolean apply(WebDriver driver) {
            return driver.findElement(locator).isDisplayed();
        }
    });

    return flag;
};

答案 1 :(得分:0)

您可以使用WebDriverWait之类的

/**
 * Method to wait until element is visible
 * @param driver WebDriver instance
 * @param identifier identifiers used to select element
 * @param timeout Timeout duration
 * @return Element
 */
public WebElement waitUntilElementIsVisible(By identifier, long timeout) {
    WebDriverWait wait = new WebDriverWait(driver, timeout);
    WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(identifier));
    return element;
}