2015-05-19 54 views
0

我使用Serenity(Thucydides)+ Cucumber在Chrome瀏覽器中測試Web應用程序。 我想驗證頁面上是否存在某些元素。如何在使用Cucumber場景大綱時防止頁面刷新?

Scenario Outline: Should see six tabs on the page 
    When I am on MainPage page 
    Then I should see the following <tab> as tab: 
    Examples: 
     | tab   | 
     | Tab_1  | 
     | Tab_2  | 
     | Tab_3  | 
     | Tab_4  | 

我成功驗證第一個選項卡,但在第一次迭代後無法驗證的其他選項卡的頁面重新加載。 如何留在同一頁面上?在我的情況下是否可以管理?

+0

如果你不想離開頁面,你考慮過一張表而不是一個大綱嗎? –

+1

我認爲你需要使用場景和表格來代替場景大綱。 –

回答

0

場景大綱爲每個示例元素創建一個單獨的場景。你想要一個單一的場景,尋找你的標籤。

寫一個更好的方法是命名標籤, foo-tabs然後編寫

Scenario: See foo tabs on main page 
    When I am on the main page 
    Then I should see foo tabs 

並在您的步驟定義中執行您的編程以查找選項卡,例如

Then "should see foo tabs" do 
    foo_tabs.each do |tab| 
    expect(page).to have # do something with the tab here 
    end 
end 

(以上爲ruby'ish代碼,但你應該能夠適應JAVA)

現在你將有一個場景,也如果添加/刪除選項卡,你不會必須改變你的功能。

+0

是的,我知道如何檢查單獨的元素,我希望功能文件中的代碼和測試報告看起來更具可讀性,所以我在方案大綱中使用了表格數據。我的問題是,是如何防止頁面重新加載。 – Alex

+0

我發現在每一步之後,打開使用@DefaultUrl設置的頁面。所以我應該以某種方式管理它? – Alex

+1

我已經向您展示瞭如何使您的功能更具可讀性。您無法繞過Scenario Outlines的工作方式,他們會爲示例組中的每個事物創建一個單獨的場景。如果您繼續使用大綱,則無法解決您的問題。 – diabolist

0

我用過之前夾具不正確。 我已經通過設置Global Hook BeforeAll解決了這個問題。