xPath的WebDriver findElement,如果未找到元素,则没有超时,屏幕只是挂在那里。

cL8*_*L83 3 selenium xpath webdriver selenium-webdriver

我遇到了一个问题,即由于我的测试语句无法找到该元素,因此该测试仅挂在那里(浏览器打开,无法继续进行下一个测试)。

我的TestStatemet像这样:

driver.findElement(By.xpath("//input[@name='AID' and contains(@value,'sampleDataThatwillNotFound')]"));
Run Code Online (Sandbox Code Playgroud)

该测试仅在通过XPATH查找时挂起,而在通过NAME / ID查找时则没有问题。我已将超时设置为60秒,在60秒之后,它仍然挂起。

有人遇到过这个问题吗?还是有人知道如何解决此问题?

小智 5

好吧,我遇到了同样的问题,并在webdriver api doc中发现了这一问题: findElement不应用于查找不存在的元素,而应使用findElements(By)和声明零长度响应。

所以我用类似

List<WebElement> found = driver.findElements(By.id("elementid"));
if (found.size() > 0) 
{
    // get the 1st element
} else {
    // time out
}
Run Code Online (Sandbox Code Playgroud)

解决此问题。findElements在我的情况下,隐式超时可以正常工作。