Mar*_*lis 5 java selenium-webdriver
如果使用以下代码检查缺少的元素:
// ...
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
try {
driver.findElement(By.cssSelector("td.name"));
} catch (NoSuchElementException e) {
// here you go, element not found
}
Run Code Online (Sandbox Code Playgroud)
你得到了正确的结果,但由于findElement
隐式等待的方法阻塞,运行时间总是30秒.
有没有办法避免这种行为,同时保持隐含的等待?
<EDIT>
测试将由非开发人员通过Selenium IDE生成,因此我需要一个解决方案,使他们的工作尽可能简单(保持等待隐含!). </EDIT>
谢谢,
马尔科
您也许可以使用 xpath 选择器来完成此操作。找到您知道应该存在的元素之前的元素,然后使用“following-sibling”来获取下一个元素。就像是:
//td.previous/following-sibling::td
Run Code Online (Sandbox Code Playgroud)
然后检查一下它是否没有返回“名称”。当然,只有存在另一个“td”元素时,这才有效。
就我个人而言,我很想放弃隐式等待,只在需要时使用等待。
private WebElement cssWait( final String css )
{
return new WebDriverWait( driver, 30 ).until( new ExpectedCondition< WebElement >()
{
@Override
public WebElement apply( WebDriver d )
{
return d.findElement( By.cssSelector( css ) );
}
} );
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11518 次 |
最近记录: |