2017-08-09 246 views

回答

5

當談到與時機的問題,它是誘人的,容易把一個「快」 browser.sleep(),繼續前進。

問題是,它有一天會失敗。對於要設置的睡眠超時值沒有黃金/通用規則,因此,在某些情況下,由於網絡或性能或其他問題,可能需要更多時間才能加載頁面或使元素變爲可見等。另外,大部分那時候,你最終會等到比你實際應得的更多。

browser.wait()另一方面的工作方式不同。您爲Protractor/WebDriverJS提供Expected Condition function執行並等待函數的結果評估爲true。量角器將持續執行該功能,並在該功能的結果爲真或達到可配置的超時後停止。

有多種內置預期條件,但您也可以創建並使用自定義條件(樣本here)。

2

browser.sleep()

時刻表一個命令,以使駕駛者睡眠的時間給定的量。

browser.wait()

調度命令等待狀態以保持或承諾得到解決。

此功能阻止WebDriver的控制流,而不是JavaScript運行時。它只會延遲將來的webdriver命令的執行(例如,它會導致Protractor在將未來的命令發送到硒服務器之前等待),並且僅在啓用webdriver控制流時纔會執行。

文檔鏈接http://www.protractortest.org/#/api