2013-02-15 72 views
3

我可以長時間等待Selenium Web Driver嗎?Selenium Web驅動程序等待很長時間

儘管我可以像下面那樣設置隱式等待命令,但我不會等待我給出的時間。

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

這裏有什麼不對嗎?

在我的情況下,我需要執行一個測試用例並等待4分鐘,然後執行下一個測試用例。 我在這裏使用Java。

+0

這不是什麼隱式等待函數 - 如果您在測試之間有一個等待期,則需要輸入自己的邏輯。 – Arran 2013-02-15 12:53:53

回答

5

其實這不是我的答案,兩天前我在這裏看到了這個答案,但我沒有時間去應用它。今天我試了一下,那就是我想要的。

不幸的是現在我在這裏看不到這個答案。所以我添加了這個答案,所有的學分都應該發給這個答案的用戶。

在這種情況下,我想要做的是等待司機5分鐘,直到執行週期性的cron工作。

Thread.sleep(4000);暫停執行程序。

+5

另一個答案比這個答案好得多。 – 2013-02-18 07:07:59

+5

只有你誤解了kushan的原始問題才更好。他想知道如何在測試之間等待,這最好通過使用thread.sleep來完成。艾倫是對的;等待功能並不意味着這種事情。如果問題是如何等待元素,Aimbire的答案更爲正確,但事實並非如此。 Kushan提出了他實際詢問的問題的解決方案,而不是一個人似乎認爲他問的問題。爲此降低對他的評價是不公平的。 – bsg 2013-07-19 15:03:14

+1

我有和kushan一樣的問題,謝謝你有這個轉貼:) – Sikian 2014-07-07 16:13:19

9

考慮到您需要等待某個特定元素,我會在下面的ExplicitWait行中執行一些操作。

WebDriverWait wait = new WebDriverWait(driver, 300); // The int here is the maximum time in seconds the element can wait. 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("someId"))); 

在這種情況下,您可以使用任何您想要的ExpectedConditions。 也不必在一些非常特殊的情況下使用很長的等待時間。這imho是一個很好的做法。

+1

謝謝aimbire;但實際上,我想在這裏等待什麼,只是睡覺線程,直到執行一些後端腳本。您可能會誤導隱式等待命令。 – kushan 2013-02-18 06:19:49

+1

所以你應該用這個等待它來等待一個觸發器(這可以讓你知道在DOM中完成了腳本的工作) – aimbire 2013-05-06 10:53:54