Chr*_*ski 5 java selenium invisible wait
我提出了一项艰巨的任务.我对硒很新,并且仍然在研究等待元素和类似物的功能.
我必须操纵网站上的一些数据,然后继续操作另一个.问题:操作调用一个脚本,当在后台处理操纵数据时,会出现一个"Saving ..."标签.我必须等到可以进入下一个网站.
所以这就是:我如何等待和元素消失?事情是:它始终存在于DOM中,但只能通过某些脚本显示(我想,见下图).
这就是我尝试但它只是不起作用 - 没有等待,selenium只是进入下一步(并且因为"保存"而被警告问我是否要离开或停留在页面上. ..").
private By savingLableLocator = By.id("lblOrderHeaderSaving");
public boolean waitForSavingDone(By webelementLocator, Integer seconds){
WebDriverWait wait = new WebDriverWait(driver, seconds);
Boolean element = wait.until(ExpectedConditions.invisibilityOfElementLocated(webelementLocator));
return element;
}
Run Code Online (Sandbox Code Playgroud)
更新/解决方案:
我提出了以下解决方案:我构建了自己的方法.基本上它会在循环中检查CssValue是否会发生变化.
循环检查CSSVALUE"display"的一定时间,从"block"变为另一个状态.
public void waitForSavingOrderHeaderDone(Integer _seconds){
WebElement savingLbl = driver.findElement(By.id("lblOrderHeaderSaving"));
for (int second = 0;; second++) {
if (second >= _seconds)
System.out.println("Waiting for changes to be saved...");
try {
if (!("block".equals(savingLbl.getCssValue("display"))))
break;
} catch (Exception e) {
}
}
Run Code Online (Sandbox Code Playgroud)
小智 1
我不确定,但你可以尝试这样的事情:)
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //time in second
WebElement we = driver.findElement(By.id("lblOrderHeaderSaving"));
assertEquals("none", we.getCssValue("display"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22363 次 |
| 最近记录: |