2017-02-04 31 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