等待 和出现WebElement
很方便。WebDriverWait
ExpectedConditions
问题是,如果WebElement.findElment
是唯一可能的定位元素的方法,因为它没有 id、没有名称、没有唯一的类?
WebDriverWait
的构造函数只接受WebDriver
作为参数,而不接受WebElement
.
我已经设置了implicitlyWait
时间,所以使用 似乎不是一个好主意try{} catch(NoSuchElementException e){}
,因为我不想为这个元素等待那么长时间。
这是场景:
input
有一个包含许多标签的表单的网页。每个input
标签都有格式要求。
当不满足格式要求时,div
此标记后会出现动态标记。input
由于标签太多input
,我创建了一个通用方法,例如:
public WebElement txtBox(String name) {
return driver.findElement(By.name(name));
}
而不是为每个input
标签创建一个数据成员。
然后我创建了一个方法isValid
来检查某些用户输入是否input
有效。我应该做的isValid
就是检查div
标签是否存在于 之后inputboxToCheck
,代码如下:
public boolean isValid(WebElement inputboxToCheck) {
WebElementWait wait = new WebElementWait(inputboxToCheck, 1);
try {
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("./following-sibling::div")));
return false;
} catch (TimeOutException e) {
return true;
}
}
WebElementWait
是一个虚构的(不存在的)类,其工作方式与WebDriverWait
.