以下是我的要素;
String sId = driver.findElement(By.xpath(path)).getAttribute("data-id");
由于现在属性值存储在“ sId”中,因此我现在需要告诉Selenium等待,直到data-id属性值与sID 不等于。 我没有运气尝试过下面的代码:
wait.until_not(ExpectedConditions.textToBePresentInElement(By.xpath(path), sId));
我得到了错误:
未定义方法until_not(ExpectedCondition) 键入WebDriverWait
即使我将“ until_not”更改为“ until”,我也会收到此警告:
类型中的方法textToBePresentInElement(By,String) ExpectedConditions已弃用
我该怎么做?
答案 0 :(得分:1)
如果您正在检查属性值,则检查文本将无济于事,这是两件事。
您可以为此组合not
和attributeToBe
ExpectedConditions
wait.until(ExpectedConditions.not(ExpectedConditions.attributeToBe(By.xpath(path), "data-id", sId)));
答案 1 :(得分:0)
您可以尝试在预期条件下不使用,例如:
wait.until(ExpectedConditions.not(ExpectedConditions.textToBePresentInElement(<element>, <elementtext>)));
或者您也可以使用预期条件隐身方法:
wait.until(ExpectedConditions.invisibilityOfElementWithText(locator, text));
答案 2 :(得分:0)
您可以尝试以下代码
String sId = driver.findElement(By.xpath(path)).getAttribute("data-id");
boolean expectedCondition = false;
boolean timeOut = false;
int second = 1;
do {
try {
//timeout for 60 seconds
if(second>60) {
timeOut = true;
}
String expectedId = driver.findElement(By.xpath(path)).getAttribute("data-id");
if(! expectedId.equals(sId)) {
expectedCondition=true;
}else {
second++;
}
} catch (Exception e) {
TimeUnit.SECONDS.sleep(1);
second++;
}
}while(expectedCondition==false && timeOut==false);