gpt4 book ai didi

java - 使用 selenium wait 刷新页面后,当 webelement 的状态从初始值 "xxx"更改为更改值 "yyy"时,如何处理?

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

这是我尝试过的,但没有成功,
不确定我哪里出错了?

   if (("xxx").equals(messageStatus)) {      
FluentWait<WebDriver> wait = new FluentWait<WebDriver> (driver)
.withTimeout(90, TimeUnit.SECONDS)
.pollingEvery(500, TimeUnit.MILLISECONDS)
.ignoring(NoSuchElementException.class);

wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver webDriver) {
String messageStatus =
MessageLogPage.messageStatus.getText();
if (messageStatus.equals("yyy")){
MessageLogPage.receivedPresentation.click();
}
return null;
}
});

非常感谢任何帮助/建议。提前致谢!

最佳答案

我认为问题可能是,如果您的页面真正刷新,则对 MessageLogPage.messageStatus 的旧引用将变得无效。 IE。不仅 messageStatus 文本发生变化,元素实例本身也会发生变化。

因此,我会更改算法,以便每次在获取其文本之前获取该元素。另外,您不应该单击“等待”内,请在以下时间后执行:

  wait.until(new ExpectedCondition<WebElement>() {      
@Override public WebElement apply(WebDriver webDriver) {
try {
WebElement element = webDriver.findElement(By.<...>); // however you can locate MessageLogPage.messageStatus
if(element.getText().equals("yyy")) {
return element;
}
}
catch(Exception e) { } // keep going (retun null)
return null;
});

wait.until 将多次调用此函数,直到返回值不为 null 或超时,在这种情况下会抛出异常。因此,wait.until 之后的下一行可以是单击:

 wait.until(...); // above code
MessageLogPage.receivedPresentation.click(); // we are here only if wait.until did not throw the exception

尽管如果页面刷新,MessageLogPage.receivedPresentation也可能无效。

您甚至可以通过返回 Boolean 来进一步简化它,因为您在找到该元素后并不真正关心它:

  wait.until(new ExpectedCondition<Boolean>() {      
@Override public Boolean apply(WebDriver webDriver) {
try {
WebElement element = webDriver.findElement(By.<...>); // however you can locate MessageLogPage.messageStatus
return element.getText().equals("yyy");
}
catch(Exception e) { } // keep going (return false)
return false;
});

关于java - 使用 selenium wait 刷新页面后,当 webelement 的状态从初始值 "xxx"更改为更改值 "yyy"时,如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37902281/

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