我正在运行一个公共站点
当我尝试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不是谷歌。
我尝试了show_me_cookies
,但没有成功-详细信息:
添加了宝石:$ gem install show_me_the_cookies
Successfully installed show_me_the_cookies-4.0.0
Parsing documentation for show_me_the_cookies-4.0.0
Done installing documentation for show_me_the_cookies after 0 seconds
1 gem installed
我在规范中添加了以下代码(现在只使用了一个包含所有代码的文件(
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:in
块:未初始化的常量ShowMeTheCookies(NameError(`
Capybara不提供cookie API,因为它的主要目的是测试应用程序,在测试时直接设置cookie通常不是一个好主意。话虽如此,听起来你是在刮网而不是测试,所以你有两个选择。
-
访问驱动程序特定的cookie方法。由于您使用的是类似的Selenium驱动程序
page.driver.browser.manage.add_cookie(name: cookie_name, value: cookie_value)
-
使用一个在不同驱动程序之间提供通用cookie API的gem。这将是评论中推荐的
show_me_the_cookies
宝石。那就是create_cookie(cookie_name, cookie_value)
您可能会得到未初始化的常量,因为您需要在spec_helper/rails_heper 中使用require 'show_me_the_cookies'
这解决了它:
访问创建会话后,我使用:
browser = Capybara.current_session.driver.browser
browser.manage.add_cookie :name => 'ab', :value => 'true', :expires => Time.now + 3600