2014-09-10 60 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

相關問題