2013-11-04 59 views
2

我正在使用Cucumber和Watir Webdriver進行自動化,我想知道是否有辦法清除瀏覽器的狀態,而不是在每次運行後關閉它,以便我可以使用場景大綱,並且只打開一個瀏覽器實例和瀏覽器中的示例表如何重置瀏覽器的狀態而不關閉它?

Scenario Outline: This is an example of what I want to achieve. 
    Given I visit the <Website> 
    Then the current page must be <page_title> 
    Example: 
    |Website|page_title| 
    |google| Google| 
    |Facebook|Welcome to Facebook| 
+0

你能詳細說明你的意思嗎?「清除瀏覽器的狀態」?你只是指餅乾?或者你也在談論其他事情,如歷史,記憶密碼等? –

+0

@JustinKo - 我想使用相同的瀏覽器實例,這樣我就不必爲表中的每個示例都打開一個新的瀏覽器實例,無論我有多少示例;我只打開瀏覽器的一個實例,運行測試,清除cookie並使用相同的瀏覽器窗口運行示例表中列出的下一個,並在執行完所有列出的示例後才終止瀏覽器。 – Vamsi

回答

2

假設,在重置瀏覽器方面,你只需要清除cookie,你可以使用下面的鉤子。

# Create a browser that will be used for all scenarios 
browser = Watir::Browser.new 
Before do 
    @browser = browser 
end 

# Clear the state (cookies) before each scenario 
Before do |scenario| 
    @browser.cookies.clear 
end 

# Close the browser after all scenarios completed 
at_exit do 
    browser.close 
end 
0

列出的其他例子境界清楚有U談論TITEL becuse如果您有任何教程在那裏,很容易嘗試typeing量變到質變THW的Titel的狀態在谷歌

+0

它與改變標題無關,我想打開瀏覽器一次,然後多次運行測試,而不是爲每次運行打開一個新的瀏覽器實例。 – Vamsi

+0

目前尚不清楚爲什麼你更願意打開瀏覽器。如果關閉,您的Cookie會在兩次運行之間重置。關閉時,我會研究黃瓜的各種鉤子。 –

+0

速度。打開和關閉瀏覽器需要時間..我運行相同的瀏覽器,並且只有在我知道給定場景需要它們的情況下才清除Cookie。我甚至讓用戶登錄,如果它是合適的用戶。我的'登錄'方法首先檢查用戶是否已經登錄,如果沒有,則它會呼叫註銷並登錄到正確的用戶,如果正確的用戶登錄,它就會繼續。這節省了大量的時間(接近1/3),尤其是在通過登錄同一用戶開始的場景輪廓中。 (不創建或銷燬數據的步驟/場景傾向於使用'fixture'用戶) –