gpt4 book ai didi

java - 等待多个元素变得不可见 Selenium Java

转载 作者:行者123 更新时间:2023-12-01 20:53:20 25 4
gpt4 key购买 nike

我使用此代码来检查不可见性:

WebDriverWait wait = new WebDriverWait(driver,40);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath(<some xpath>)));

如果网页中只有 一个 元素与 xpath 相对应,则此方法非常有效。

我在尝试为其编写脚本的网页中有三个,并且我需要 Selenium 来等待所有三个。

注意:我没有使用绝对 xpath。

最佳答案

ExpectedConditions.invisibilityOfElementLocated 检查第一个元素。在您的情况下,您可以编写自己的 ExpectedCondition 实现,其中您必须检查是否为找到的每个元素显示该对象。

例如(未测试):

private static void waitTillAllVisible(WebDriverWait wait, By locator) {

wait.until(new ExpectedCondition<Boolean>() {

@Override
public Boolean apply(WebDriver driver) {

Iterator<WebElement> eleIterator = driver.findElements(locator).iterator();
while (eleIterator.hasNext()) {
boolean displayed = false;
try {
displayed = eleIterator.next().isDisplayed();
}
catch (NoSuchElementException | StaleElementReferenceException e) {
// 'No such element' or 'Stale' means element is not available on the page
displayed = false;
}
if (displayed) {
// return false even if one of them is displayed.
return false;
}
}
// this means all are not displayed/invisible
return true;
}
});
}

关于java - 等待多个元素变得不可见 Selenium Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42827433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com