2016-08-04 27 views
0

Selenium Webdriver必須等待代碼中提到的30秒和5秒。但注意到webdriver跳過了。什麼原因以及如何讓webdriver等待。隱含等待在下面提到的代碼中沒有等待指定的持續時間

System.out.println("Before 5"+date.toString()); 

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 

System.out.println("After 5"+date.toString()); 

鏈接到完整的代碼可以在這裏找到 https://drive.google.com/file/d/0B4SgyzyvwKhiUk9KVldTa2ZGUkE/view?usp=sharing

+0

能否請你讓我知道你說什麼基礎它不在等待?它是否在等待5秒後拋出'NoSuchElememt'或元素未找到執行? – Siva

+0

沒有錯誤。通過打印等待之前和等待之前的時間計算出來。 –

+0

請查看已發佈的答案。 – Siva

回答

1

隱等待不喜歡,你把5s時間和你的主線程被暫停,等待5秒鐘,正常Thread.sleep()工作。

它將與WebDriver Instance一起使用,它將等待網頁上的特定元素出現在等待中提及的時間。如果沒有元素可以識別,即元素已經在dom中加載,那麼隱含的等待不會等待那段時間。

所以,當你說: -

System.out.println("Before 5"+date.toString()); 
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 
System.out.println("After 5"+date.toString()); 

它不會告訴你5秒的時間差。

如果會有任何沒有加載的元素,它會等待5秒鐘。在Waits

+0

嗨@pArAs,謝謝你的回答。有一個建議。最近,我收到了SO的評論,要求不要提及外部網站回答。如果將來外部頁面被移除,則在引用線程時用戶可能難以得到正確的答案。所以建議將有用的內容放入答案中。 – Siva

+0

這就是爲什麼我修改了我的答案來解釋2代碼示例。我只是多提一點理解。相反,我會更新對「Selenium」主網站的引用。 – Paras

0

你想等

System.out.println("Before 5"+date.toString()); 
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 
driver.findElement(By.id("some id")).sendKeys("Some Text") 
System.out.println("After 5"+date.toString()); | 
               |------- Here if the element isn't loaded in dom, then webdriver would wait for 5 seconds. 

更多信息5s.You可以嘗試:

  1. Thread.sleep(5000);
  2. (new WebDriverWait(driver, 5)) .until(new ExpectedCondition<WebElement>()

相關問題