isDisplayed()方法总是为某些元素返回true

时间:2013-09-19 15:36:48

标签: java selenium selenium-webdriver

当输入字段为空时,我正在使用Selenium来测试错误消息的外观。设计为输入元素标签的错误消息。 当邮件不可见时,它具有属性“display:none;”

当我通过文本找到该消息并调用 isDisplayed()方法时,即使消息不可见,它也始终返回true。我在Java上编写测试,所以我没有 isVisible()消息。

我尝试了方法 getAttribute(“style”),但它返回空字符串。 方法 getCssValue(“display”)返回“block”,即使在页面上有值“none”

在调用 click()方法后,我预计 ElementNotVisibleException ,但什么也没发生!

有什么想法吗?解决方法?

这里是HTML的例子:

<form id="from id" style="display: block;">

<input id="input" name="input">

<label for="input" generated="true" style="display: none;">Error text here.</label>

</from>

1 个答案:

答案 0 :(得分:1)

尝试使用WebDriverWait()查找WebElement,您可以等待元素的可见性:

/**
 * 
 * Get a Web Element using WebDriverWait()
 * 
 */

public WebElement getInputBox() throws TimeoutException {

    WebElement webElement = null;
    WebDriverWait driverWait = new WebDriverWait(5);

    // find an element using a By selector

    driverWait.until(
            ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#input")));

    webElement = driver.findElement(By.cssSelector("#input"));

    return webElement;
}