2012-11-16 48 views
1

默認情況下,Selenium IDE中的Java Junit導出器將設置一個30秒implicit wait。這意味着,測試元素的斷言不存在將導致30秒的不必要的延遲。在Selenium中快速聲明不存在元素

我嘗試過使用顯式等待(WebDriverWait類),超時時間爲1,但仍需要大約30秒。

因此,是否有繞過隱式等待各種定位器(即By類)?

回答

0
boolean isElementPresent(By by) { 
    try { 
     driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); 
     driver.findElement(by); 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
     return true; 
    } 
    catch(Exception e){ 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
     return false; 
    } 
} 

噁心,但作品。似乎隱含地等待的每個命令應該能夠被重載。但查找元素沒有2參數版本。也許它在By中?

2

未設置隱等待,如果你使用明確的:

driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS); 
+0

但其他代碼可能取決於30秒隱含等待... –

+0

仍然是一個很好的提示,謝謝。 – Steve