簡體   English   中英

如何訪問 cookies(Capybara/Selenium Chrome Webdriver)

[英]How to access cookies (Capybara/Selenium Chrome Webdriver)

我已經能夠找到大量聲稱page.driver.cookies應該可以工作的示例,但是Selenium::WebDriver::Chrome::Driver上沒有這種方法(這就是page.driver )。

我一直在嘗試用 pry 挖掘任何響應cookiescookie_jarset_cookieclear_cookies的東西,但似乎什么都沒有。 不在pagepage.driverpage.driver.browser

我也不太明白閱讀 cookies 不是測試中的事情(RackTest 驅動程序公開#cookie_jarRack::Test::Methods僅轉發set_cookieclear_cookies )。 為什么我不應該測試在某些條件下設置 cookie 的中間件?

您不應該直接測試 cookies 的原因是因為功能/系統測試是錯誤的地方。 這些類型的測試旨在從用戶的角度進行測試,用戶實際上並沒有看到 cookies,他們只是看到了 cookies 啟用的行為。 因此,在 Capybara 測試中,您應該只測試 cookies 啟用的行為,而不是設置實際的 cookies。 cookies 的設置/清除確實應該在 controller 中進行測試或請求測試。

如果您仍然堅持直接訪問 cookies 則可以使用 JS 通過evaluate_script或通過 selenium 驅動程序特定方法page.driver.browser.manage.all_cookies等訪問它們 - 盡管任何時候您調用page.driver.xxx您都是可能做一些你不應該做的事情。

僅僅通過閱讀本文檔,您是否嘗試過這樣的事情:

require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome

begin
  driver.get 'https://www.example.com'

  # Adds the cookie into current browser context
  driver.manage.add_cookie(name: "key", value: "value")
ensure
  driver.quit
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM