Jon*_*nik 54 java selenium webdriver selenium-ide selenium-webdriver
使用"HTML"Selenium测试(使用Selenium IDE或手动创建),您可以使用一些非常方便的命令,如WaitForElementPresent
或WaitForVisible
.
<tr>
<td>waitForElementPresent</td>
<td>id=saveButton</td>
<td></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
在用Java编写Selenium测试时(Webdriver/Selenium RC-我不确定这里的术语),是否有类似内置的东西?
例如,用于检查对话框(需要一段时间才能打开)是可见的...
WebElement dialog = driver.findElement(By.id("reportDialog"));
assertTrue(dialog.isDisplayed()); // often fails as it isn't visible *yet*
Run Code Online (Sandbox Code Playgroud)
编码此类检查的最简洁的方法是什么?
Thread.sleep()
在整个地方添加调用将是丑陋和脆弱的,并且滚动自己的while循环似乎也非常笨拙...
Pet*_*ček 97
隐含的等待
隐式等待是指在尝试查找一个或多个元素(如果它们不是立即可用)时,WebDriver轮询DOM一段时间.默认设置为0.设置后,将为WebDriver对象实例的生命周期设置隐式等待.
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)
显式等待+ 预期条件
显式等待是您定义的代码,用于在进一步执行代码之前等待某个条件发生.最糟糕的情况是Thread.sleep(),它将条件设置为等待的确切时间段.提供了一些便捷方法,可帮助您编写仅在需要时等待的代码.WebDriverWait与ExpectedCondition相结合是一种可以实现的方法.
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.id("someid")));
Run Code Online (Sandbox Code Playgroud)
小智 9
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
Run Code Online (Sandbox Code Playgroud)
在抛出TimeoutException之前等待最多10秒,或者如果它发现元素将在0-10秒内返回它.WebDriverWait默认情况下每500毫秒调用一次ExpectedCondition,直到它成功返回.对于所有其他ExpectedCondition类型,ExpectedCondition类型的布尔返回true或非null返回值成功返回.
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
Run Code Online (Sandbox Code Playgroud)
元素是可点击的 - 它显示并启用.
归档时间: |
|
查看次数: |
146531 次 |
最近记录: |