WebDriver API说用于findElements
检查. WebElement
此方法受隐式超时值的约束。因此,如果我想编写一个方法来检查是否存在,并且我不希望该方法等待隐式超时,我可以像这样暂时抑制它:
protected boolean doesElementExist(By by) {
// Temporarily set the implicit timeout to zero
driver.manage().timeouts().implicitlyWait(0, TimeUnit.MILLISECONDS);
// Check to see if there are any elements in the found list
boolean exists = driver.findElements(by).size() > 0;
// Return to the original implicit timeout value
driver.manage().timeouts()
.implicitlyWait(Properties.TIMEOUT_TEST, TimeUnit.SECONDS);
return exists;
}
但这需要您WebDriver
管理超时值。我目前正在将上述方法移动到By
调用的自定义子类中,Locator
以便我可以从驱动程序或特定的调用这些方法WebElement
,并且还可以扩展Locator
正则表达式匹配和其他形式的信息检索。
问题是在我的Locator
课堂上,我没有WebDriver
,我有SearchContext
。我想应该有一种方法可以findElements
从WebElement
. 有没有这样的方法?或者我是否必须在我的自定义WebDriver
和WebElement
实现中抑制这些方法的实现中的超时值(为了使这些新方法可供他们使用,它们也已扩展)?谢谢!