gpt4 book ai didi

java - 在 while 循环中验证 isDisplayed() WebElement 属性

转载 作者:行者123 更新时间:2023-11-28 21:03:26 24 4
gpt4 key购买 nike

我正在尝试编写一个 while 循环来检查加载元素的 isDisplayed() 属性,如果加载窗口可见则打印“它正在加载”。如果加载窗口消失,则 while 循环将退出。

private By superPoseLoading = By.xpath("//span[@class='loading']");

while (true) {

if (driver.findElement(superPoseLoading).isDisplayed() == true) {
System.out.println("is loading");

}else {
break;
}
}

但即使if条件为真,程序也不发送消息,循环中断。

最佳答案

我的方法与其他一些答案略有不同——如果它们都不适合您,请随意尝试:

By loadingIndicator = By.xpath("//span[@class='loading']");
boolean loadingFinished = false;

while (!loadingFinished)
{
System.out.println("is loading");

// attempt to find the loading indicator, catch exception if it is not found
try {
WebElement loader = driver.findElement(loadingIndicator);

// check isDisplayed(), set found to true
if (!loader.isDisplayed()) loadingFinished = true;

// handle exception where loadmask no longer exists
} catch (NoSuchElementException e) {
loadingFinished = true;
e.printStackTrace();
}
}

这段代码正在检查加载掩码是否存在,并处理如果不存在则可能出现的 NoSuchElementException。如果 loader.isDisplayed() 为 false,或者在加载器上调用 findElement 返回,我们将 loadingFinished 设置为 true NoSuchElementException,表示元素不存在,加载完成。

但是,如果你想让这段代码更简单,你可以只使用 ExpectedConditions 类:

WebDriverWait wait = new WebDriverWait(driver, 30);

// first, wait for the loadmask to be visible to avoid race condition
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@class='loading']")));

// now, wait for load mask to disappear -- loading complete after this
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//span[@class='loading']")));

关于java - 在 while 循环中验证 isDisplayed() WebElement 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58750681/

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