gpt4 book ai didi

java - Selenium (Java) - 持续单击按钮,直到元素中出现特定文本,如果超过一定时间则失败

转载 作者:行者123 更新时间:2023-11-30 07:31:28 24 4
gpt4 key购买 nike

我有一个场景,我可以通过单击启动后台进程的按钮来停止引擎,并且每次只有在单击Refresh Status按钮后才能看到引擎的当前状态页。问题是引擎停止的时间从 30 秒到 2 分钟不等,具体取决于服务器上的负载。我真的不想用 Thread.sleep() 编写一个 while 循环,因为这是一个坏主意,并且会不必要地增加 Selenium 中的测试时间。有没有一种直观的方法,每次等待 20 秒,然后单击“刷新状态”按钮,直到元素中出现“离线”文本,并且整个过程的超时时间为 3 分钟?

最佳答案

如果您发现实现非常简单,您可以扩展 ExpectedConditions 类并覆盖静态方法 textToBePresentInElementLocated:

public static ExpectedCondition<Boolean> textToBePresentInElementLocated(
final By locator, final String text) {

return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
try {
String elementText = findElement(locator, driver).getText();
return elementText.contains(text);
} catch (StaleElementReferenceException e) {
return null;
}
}

@Override
public String toString() {
return String.format("text ('%s') to be present in element found by %s",
text, locator);
}
};
}

只需将此方法中的 element.click() 添加到适当的位置,然后在 WebDriverWait 中使用您的类扩展类

关于java - Selenium (Java) - 持续单击按钮,直到元素中出现特定文本,如果超过一定时间则失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36058908/

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