Cookies Rails中具有恶作剧的持久登录Cookie不工作
我正在开发一个Rails应用程序,从使用Cookies Rails中具有恶作剧的持久登录Cookie不工作,cookies,capybara,phantomjs,poltergeist,Cookies,Capybara,Phantomjs,Poltergeist,我正在开发一个Rails应用程序,从使用selenium webdriver和firefox过渡到使用poltergeist和phantomjs来测试capybara和rspec。这是一个庞大的、成熟的代码库,所以可以预见我会遇到一些麻烦 我遇到的问题是在测试开始时尝试使用cookies登录测试用户。Poltergeist在我的spec\u helper.rb文件中设置如下: Capybara.register_driver :poltergeist do |app| options =
selenium webdriver
和firefox
过渡到使用poltergeist
和phantomjs
来测试capybara
和rspec
。这是一个庞大的、成熟的代码库,所以可以预见我会遇到一些麻烦
我遇到的问题是在测试开始时尝试使用cookies登录测试用户。Poltergeist在我的spec\u helper.rb
文件中设置如下:
Capybara.register_driver :poltergeist do |app|
options = {
:js_errors => false,
:inspector => true,
:window_size => [1280, 1024]
}
Capybara::Poltergeist::Driver.new(app, options)
end
Capybara.default_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
在spec/support/helpers.rb中,我有以下helper方法:
def login_as(user,redirect=nil)
cookie_jar = ActionDispatch::Cookies::CookieJar.new
signed_jar = ActionDispatch::Cookies::SignedCookieJar.new cookie_jar,
AppName::Application.config.secret_token
signed_jar[:session_31] = {
value: {
:'warden.user.user.key' =>
["User", [user.id], user.password_salt] } }
visit '/test.html' unless current_path
cookie_options = { :expires => Time.now + 15.years }
page.driver.set_cookie(
:session_31,
cookie_jar[:session_31],
cookie_options)
visit redirect if redirect
end
将此与我为selenium webdriver所做的比较:
def login_as(user,redirect=nil)
cookie_jar = ActionDispatch::Cookies::CookieJar.new
signed_jar = ActionDispatch::Cookies::SignedCookieJar.new cookie_jar,
AppName::Application.config.secret_token
signed_jar[:session_31] = {
value: {
:'warden.user.user.key' =>
["User", [user.id], user.password_salt] } }
visit '/test.html' unless current_path
page.driver.browser.manage.add_cookie(
name: :session_31,
value: cookie_jar[:session_31])
visit redirect if redirect
end
然后我的测试在(:each)
块之前的中调用这个helper方法
before(:each) do
# Setup users and such
login_as(@user)
end
在这两种情况下都会创建cookie,但用户没有使用poltergeist
登录。在这两种情况下显示的cookies也略有不同。与恶鬼:
["session_31",
#<Capybara::Poltergeist::Cookie:0x000fffffffffff
@attributes=
{"domain"=>"localhost",
"expires"=>"Tue, 09 Jan 2029 15:48:08 GMT",
"expiry"=>1862686088,
"httponly"=>true,
"name"=>"session_31",
"path"=>"/",
"secure"=>false,
"value"=>
"secret ;)"}>]]
我不知道这是不是闹鬼、幻影、我自己的代码库的问题,或者是魔法侏儒造成的。我真是不知所措。有人有什么想法吗?为什么不像用户那样通过用户界面登录?您找到了解决方案吗?您可能会遇到什么问题?
[{:name=>"session_31",
:value=>
"secret ;)",
:path=>"/",
:domain=>"localhost",
:expires=>Wed, 09 Jan 2030 18:40:58 +0000,
:secure=>false}]