【发布时间】:2016-12-05 00:51:19
【问题描述】:
这个问题与下面的问题类似:
即如何等到进度条消失。
How to wait dynamically until the progress bar to load completely in Selenium Webdriver?
我的情况有点不同。在我的场景中,当出现进度条时,所有元素都被禁用。我正在使用显式等待,但仍然出现异常。
场景:
在注册页面中提供所有详细信息后,脚本单击“创建帐户”按钮。此时会出现一个圆形进度条,并持续 1 或 2 秒。如果输入的密码无效,则会在注册页面顶部显示错误消息。我现在需要单击“取消”按钮并重复该过程。
当进度条出现时,整个页面被禁用。用户只有在进度条消失后才能继续。
这是我的代码:
WebDriverWait myWaitVar = new WebDriverWait(driver,20);
单击“创建帐户”按钮后,将显示进度条。代码现在应该等到“取消”按钮出现。
//Click on the "Create Account" button.
driver.findElement(By.id("createAccount")).click();
//Wait till the "Cancel" button shows up -- this may take some time.
myWaitVar.until(ExpectedConditions.elementToBeClickable (By.id("cancelRegister")));
//Click on the "Cancel" button.
driver.findElement(By.id("cancelRegister")).click();
当我执行上面的代码时,我总是在最后一行得到NoSuchElementException。
我尝试使用ExpectedCondition.visibilityOfElement(),但这也会产生NoSuchElementException。
我可以让它工作的唯一方法是强迫它进入睡眠状态:
Thread.sleep(3000);
脚本在睡眠中运行良好。
WebDriverWait 为什么不等到进度条消失?该代码成功解析了elementToBeClickable(),但在单击“取消”按钮时总是抛出异常。
【问题讨论】:
标签: java selenium selenium-webdriver