我想在 Cucumber 测试中使用 Capybara 删除特定的 cookie,并且不想使用 Webkit / Poltergeist

I want to delete a particular cookie using Capybara within Cucumber test and don't want to use Webkit / Poltergeist

我尝试了几种方法,例如使用 browser.manage.delete_cookie 以及通过执行以下操作将 cookie 设置为空:page.driver.browser.manage.set_cookie("#{'cookie_name'}:") 但其中 none 有帮助。

这是我的步骤定义文件

Given('I am on Learn Page') do
  page.driver.browser.manage.window.resize_to(1800,990)
  #tried this to click on the radio button from chrome settings to disable all cookies, but failed
  visit "chrome://settings/cookies" 
  find('.//*[@id="label"]/text()').click
  #find('#radioCollapse').click
  
  
  #failed with this too
  visit "https://mylearnwebsite.com/"
  browser = Capybara.current_session.driver.browser
  browser.manage.delete_cookie 'my_cookie'
     
   #and with this as well
   page.driver.browser.manage.set_cookie("{'my_cookie'}:")
end

他们都说无法定位元素或 Selenium::WebDriver::Error::NoSuchElementError

我是 Capybara 的新手,尝试使用 same.It 自动化一些 Web 应用程序功能,如果小组中的任何人建议如何在此处进行操作,那将是一个很大的帮助。

您需要位于 cookie 有效的页面上才能与 cookie 交互(WebDriver 规范限制)。假设 https://mylearnwebsite.com/ 是 cookie 有效的站点,并且您使用的是 selenium 驱动程序,那么

visit "https://mylearnwebsite.com/"
page.driver.browser.manage.delete_cookie 'my_cookie' # this is driver specific
page.refresh # to reload the page without the cookie
...

将删除 cookie。由于您没有显示删除 cookie 后实际检查的内容,因此很难猜测您要实际测试的行为是什么,因此上面的代码只是调用 refresh 来查看没有 cookie 的页面状态.

Noe:从一般的 system/feature 测试目的来看,手动与 cookie 交互通常没有价值,通常最好只测试具有修改 cookie 副作用的用户行为。