2017-07-02 128 views
-1

我給隱含等待像以下------> d.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS); //我寫了3個locaters d.findElement(By.id("element1")).click(); //assume it take to load 20 seconds d.findElement(By.id("element2")).sendKeys(""); //assume it take to load 10 seconds d.findElement(By.id("element3")).click(); //現在我的問題是,有多少時間的webdriver等待3元素3? ,是60-20 + 10 = 30秒還是全時60秒?Implicitlywait硒的webdriver

對不起,我爲了清楚而改變了我的問題。

回答

0

現在implicitly_wait()(Python)或implicitlyWait()(Java)方法告訴腳本,更確切地說,它告訴Webdriver輪詢DOM一段時間,持續30或60秒,或者任何時間指定,當試圖找到一個或多個元素,如果他們不是立即可用。這裏通過民意調查,我們的意思是一次又一次檢查DOM。

一旦定義,隱式等待將定義Webdriver對象實例的整個生命週期,直到它被更改。因此,一旦在腳本中定義,它將在腳本的生命週期中保持活動狀態,直到修改爲止。對於element1,element2element3,它將等待相同的數量,即60秒。如果在規定的時間內找到元素,則執行下一個命令。但是,如果不是時間,WebDriver會引發一個異常。

+0

謝謝,我寫了我的懷疑比之前更清楚 –

1

隱式等待「告訴」findElement()方法查找元素達到指定的時間或直到元素存在於DOM中(不一定顯示)。這是針對每個搜索單獨進行的,搜索之間沒有任何依賴關係。

+0

謝謝,我寫了我的懷疑比之前更清晰 –

+0

@Sambam正如我在我的回答中所寫的那樣,每次搜索之間都沒有依賴關係。每次調用findElement()時,它都會嘗試定位元素,直到您提供的時間限制(在您的示例中爲60秒)。 – Guy

+0

@Sambam想象一下,如果你有70次搜索並且每次搜索都會花費一分鐘,會發生什麼。你認爲劇本在60次搜索後會停止工作嗎? – Guy