2017-02-04 38 views
0

当我试着运行下面的代码时,visibilityOfElementLocated工作得很好,webdriver等待给定时间的元素。visibilityOfElementLocated vss visibilityOf

dr.get("http://www.seleniumframework.com/Practiceform/"); 
WebDriverWait wait=new WebDriverWait(dr,30); 
WebElement we = wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Element5"))); 

,但如果我使用visibilityOf以同样的方式,它给了我

NoSuchElementException异常

WebElement we = wait.until(ExpectedConditions.visibilityOf(dr.findElement(By.linkText("Element3")))); 

你能解释我为什么我得到这个例外?

回答

4

,但如果我使用“visibilityOf”以同样的方式,它给了我NoSuchElementException异常

其实,你是这行代码得到Exceptiondr.findElement(By.linkText("Element3")),在你提供的这行代码将执行第一,如果元素会发现那么ExpectedConditions.visibilityOf()调用将被执行。

仅供参考,WebDriver.findElement()或者抛出异常或返回WebElement

visibilityOfElementLocatedvisibilityOf Vs的: -

  • visibilityOfElementLocated用于检查一个元件是存在于页面和可见的DOM。意味着它使用By对象,而不是可赎回功能WebElement对象先找到该元素,然后检查该元素是可见或不可见。

  • visibilityOf用于检查已知的元素,以存在于一个页面的DOM,是可见的。意味着你已经发现,元素,刚刚检查可见性。

6

根据this

visibilityOf:不检查为元素存在作为错误解释它。

visibilityOfElementLocated:检查是否该元素是并且还可见。要检查的知名度,它确保该元素具有的高度和宽度大于0