2015-11-25 12 views
0

我使用Senticity的Cucumber-JVM(報告庫)。該步驟實現使用硒進行瀏覽器自動化。無論如何,我可以刪除我的硒測試的片狀?

我使用像

waitForRenderedElementsToBePresent(By.cssSelector(<css>)); 
waitFor(ExpectedConditions.visibilityOf(getDriver().findElement(By.cssSelector(<css>)))); 

但仍方法我的測試中,從片狀苦的時候。我不想用明確的等待。

有什麼辦法可以讓我的測試更可靠嗎?

+0

爲什麼你不想使用明確的等待?它就是爲了這個目的。 – JeffC

+0

我已經使用顯式等待,但它不工作得很好。有時它會通過,有時它會隨機失敗 –

+0

它何時失敗,爲什麼? – JeffC

回答

2

我在同一個問題上掙扎很多,我並不喜歡使用ExpectedConditions,也沒有使用顯式等待。最終我開始使用Awaitility框架。

它基本上可以讓你像這樣寫代碼:

await("Element did not show foo.").atMost(60,TimeUnit.SECONDS) .until(() -> driver.findElement(By.id("some-element").getText().contains("foo"));

我發現它與硒的webdriver工作非常好再加上我認爲它使你的代碼更易讀。

+0

非常感謝您的回覆。讓我在我的代碼中嘗試這個 –

+0

只是一個問題,如果UI中的元素Awaitilty也處理渲染。因爲有一段時間它發生DOM有元素但不可見,因爲渲染仍在進行中? –

+0

我認爲這是使用DOM,而不是看GUI(因爲它仍然使用Selenium方法)。如果它不在DOM中,findElement將返回null,因此它將不符合await語句的標準。它會在您提供的超時期限內保持輪詢。 – thebobblob

相關問題