我在java中编写了一个使用selenium的方法,它将清除表单条目,也就是说,几个框可能包含文本。我的方法将单击“清除搜索表单”,然后等待所有框清除。我尝试了以下方法:
WebDriverWait wt = new WebDriverWait(driver, 30);
click("Clear Search Form", clearSearchForm);
for (int ind = 0; ind < boxes.size(); ind++) {
wt.until(ExpectedConditions.textToBePresentInElementValue(boxes.get(ind), ""));
}
但是,看起来预期条件等待文本包含“”而不是等于“”,因此任何文本都将包含“”。我忘了输入clearSearchForm点击,即使文本框不清楚,方法仍然成功,因为它们都包含“”。
我试图找到一个ExpectedConditions,使其值等于“”并且不包含它,但我不能。
我看到人们重写了一个等待方法,以便他们可以根据自己的需要进行自定义。当我用谷歌搜索时,我找不到例子,虽然我确信有例子,正如我以前见过的那样。我现在找不到它们。任何人都可以指导我这样的例子(或只是输入一个)吗?
由于
答案 0 :(得分:0)
这是一个可能的解决方案
public static ExpectedCondition<WebElement> textInValue(final WebElement el) {
return new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return el.getAttribute("value").equals("") ? el : null;
}
}
}
并像这样使用
for (int ind = 0; ind < boxes.size(); ind++) {
try {
wt.until(textInValue(boxes.get(ind)));
}
catch (TimeoutException e) {
// print message
}
}