gpt4 book ai didi

ruby - capybara 的未定义方法 'set_cookie' 如何创建 cookie?

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:42 29 4
gpt4 key购买 nike

我正在针对一个公共(public)站点运行

当我尝试 set_cookie 时,我得到:

undefined method 'set_cookie' for #<Selenium::WebDriver::Driver:0x531e792e4b07692c browser=:chrome>

require 'rspec'
require 'capybara'
require 'capybara/rspec'
require 'capybara/dsl'
require 'pry'

Capybara.run_server = false
Capybara.app_host = 'http://www.google.com/'

Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end

root='/'

describe 'Form flow works', :type => :feature do

before :each do
Capybara.current_driver = :chrome
end

it 'Collect the customer data', :happy do
visit( root )
page.driver.browser.set_cookie('test_disabled', 'true', :domain => 'www.google.com')

目前关于 SO 的答案都没有解决我的问题或有效。
实际 url 不是 google。

我试过 show_me_cookies 但没用 - 详情:
添加了 gem :$ gem 安装 show_me_the_cookies
成功安装 show_me_the_cookies-4.0.0
show_me_the_cookies-4.0.0 的解析文档
0 秒后完成 show_me_the_cookies 的安装文档
安装了 1 个 gem

我在规范中添加了以下代码(现在只使用 1 个包含所有代码的文件)

RSpec.configure do |c| 
c.treat_symbols_as_metadata_keys_with_true_values = true
c.include ShowMeTheCookies, :type => :feature
end

然后我在规范中添加了 show_me_the_cookies 但我得到的只是 ...spec/foo_spec.rb:17:inblock in ': uninitialized constant ShowMeTheCookies (NameError)`

最佳答案

Capybara 不提供 cookie API,因为它的主要目的是测试应用程序,在测试时直接设置 cookie 通常不是一个好主意。话虽这么说,听起来你是在抓取网络而不是测试,所以你有两个选择。

  1. 访问特定于驱动程序的 cookie 方法。由于您使用的是像这样的 Selenium 驱动程序

    page.driver.browser.manage.add_cookie(name: cookie_name, value: cookie_value)
  2. 使用可在不同驱动程序之间提供通用 cookie API 的 gem。那将是评论中推荐的 show_me_the_cookies gem。那就是

    create_cookie(cookie_name, cookie_value)

你可能得到未初始化的常量,因为你需要在你的 spec_helper/rails_heper 中require 'show_me_the_cookies'

关于ruby - capybara 的未定义方法 'set_cookie' 如何创建 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53435811/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com