等到盒子/盒子里没有文字

时间:2016-03-17 13:13:32

标签: java selenium wait

我在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,使其值等于“”并且不包含它,但我不能。

我看到人们重写了一个等待方法,以便他们可以根据自己的需要进行自定义。当我用谷歌搜索时,我找不到例子,虽然我确信有例子,正如我以前见过的那样。我现在找不到它们。任何人都可以指导我这样的例子(或只是输入一个)吗?

由于

1 个答案:

答案 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
    }
}