在執行時,我們能否在瀏覽器中處理Cookie??我們可以使用Page Object處理瀏覽器cookies嗎?
其實我需要從瀏覽器中獲取cookie,並且需要在場景執行之間設置修改後的cookie。我們可以用頁面對象來做到嗎?
我檢查頁面對象寶石,我們有清晰的餅乾寶石,但我需要獲取和設置一些餅乾值。任何建議請....,
在執行時,我們能否在瀏覽器中處理Cookie??我們可以使用Page Object處理瀏覽器cookies嗎?
其實我需要從瀏覽器中獲取cookie,並且需要在場景執行之間設置修改後的cookie。我們可以用頁面對象來做到嗎?
我檢查頁面對象寶石,我們有清晰的餅乾寶石,但我需要獲取和設置一些餅乾值。任何建議請....,
您將需要直接與watir-webdriver(或selenium-webdriver)瀏覽器交互訪問添加/刪除cookie的API。
假設你正在使用的Watir-的webdriver:
page.browser.cookies.clear
page.browser.cookies.add 'foo', 'bar'
page.browser.cookies.delete 'foo'
注意page.browser
用於訪問該頁面對象的基礎的Watir-webdriver的瀏覽器。
你可以閱讀更多有關的Watir-webdriver的餅乾API:
如果您正在使用硒的webdriver沒有的Watir-webdriver的,API的使用記錄Selenium::WebDriver::Options。
在任何PageObject頁面(類)中,您都可以定義一個方法來處理Cookie,並使用PageObject訪問它。有幾種方法可以實現PageObject,具體取決於您可能使用的其他框架,但以下是使用IRB的示例。
# Using watir-webdriver
class MyPage
include PageObject
def delete_cookies
# Just wrapping this so it's convenient in my PageObject
@browser.cookies.clear
end
def get_cookies_as_array
# Returns an array of hashes for each cookie
@browser.cookies.to_a
end
def set_browser_cookies(cookie_hash)
# Store the cookie name and value
@browser.cookies.add(cookie_hash[:name], cookie_hash[:value])
end
def restore_browser_cookies(cookie_array)
cookie_array.each do | cookie_hash_from_array |
self.set_browser_cookies(cookie_hash_from_array)
end
end
end
IRB示例:
>> require "watir-webdriver"
>> require "page-object"
>> @browser = Watir::Browser.start "http://stackoverflow.com"
>> my_page = MyPage.new(@browser)
>> @cookies_to_keep = my_page.get_cookies_as_array
# Observe the cookies look like this:
# [0]
# ...
# [5] {
# :name => "gauthed",
# :value => "1",
# :path => "/",
# :domain => "stackoverflow.com",
# :expires => nil,
# :secure => false
# }
#
>> my_page.delete_cookies
"" # Empty string is returned
>> my_page.get_cookies_as_array
[] # Empty Array returned because there are no cookies
>> my_page.restore_browser_cookies(@cookies_to_keep)
# Cookie array is returned
原始餅乾恢復了與它們的原始:名稱和:值。
Justin Ko指出你的API Docs是一個非常有價值的參考。
嗨,謝謝你的建議。但我需要知道,如何**使用Page Object **註釋來交互Selenium/Watir驅動程序。我需要用於獲取瀏覽器的當前cookie並設置/更新cookie值並運行瀏覽器的命令。 – KAK
這個答案是使用頁面對象命令 - 「頁面」是頁面對象。在頁面對象gem中沒有直接的方法來做到這一點(儘管你可以很容易地添加它)。這就是爲什麼我們稱'瀏覽器'來訪問底層watir-webdriver。 –