2014-09-10 65 views
0

我想等待一个元素上是可见的,所以我已经设置在波纹管的方法隐含的等待:隐含的等待没有在硒工作的webdriver

public boolean isDisplayed(String xpathElement,int timeOut) { 
    boolean found = true; 

    try { 
     driver.manage().timeouts().implicitlyWait(timeOut , TimeUnit.SECONDS); 
     driver.findElement(By.xpath(xpathElement)).isDisplayed(); 

    } catch(NoSuchElementException e) { 
     driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS); 
     found = false; 
    } 
    driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS); 
    return found; 
} 

我废了隐含的等待,因为我用的是webDriverWait我不想问题,但isDisplayed()显示该元素仍然不可见,它表明超时是0秒,而不是方法中传递的超时。

+0

是否有任何理由不选择使用可能适合您目的的“显式等待”功能? – 2014-09-10 10:31:01

+0

嗨马克,感谢您的评论事情是,我希望有这种方法通过我的所有项目,而不是依赖于特定的测试用例,但你的权利,我实际上可以使用明确的等待“elemenetToBeClicable”,它会'已解决问题 – 2014-09-10 11:25:34

回答

0

问题实际上与元素的可见性有关,元素由于某种原因不可见。

0

看来,您在使用.isDisplayed()时犯了一个错误。你必须使用硒webdriver的isDisplayed()和你的代码表明你打算使用0秒超时。所以这可能是你在执行日志中看到0秒的原因。

建议:更改您的方法名称并再次使用它。

+0

您好,感谢您的评论,我实际上使用了定制的isDisplay()方法,并且在元素无法显示并且元素可见后隐式等待设置为0,所以它应该不是问题。 – 2014-09-10 11:27:56