【问题标题】:Capybara Selenium with Javascript fetch fails with unauthorizedCapybara Selenium with Javascript fetch 因未经授权而失败
【发布时间】:2019-06-19 16:54:19
【问题描述】:

设置

带有 capybara 和远程 selenium (standalone-chrome-debug docker image) 驱动程序的 Rspec。使用 StimulusJS 作为 Javascript 框架。

问题

使用常规浏览器,一切正常。当我尝试使用 capybara selenium 测试 javascript fetch 事件时 - POST 请求因 unauthorized 而失败。感觉就像是另一个浏览器会话。例如,常规登录表单也可以正常工作 - 只是 javascript 'ajax' 调用不起作用。

水豚配置

Capybara.app_host = "http://#{ENV['TEST_APP_HOST']}:#{ENV['TEST_PORT']}"
Capybara.run_server = false
Capybara.javascript_driver = :selenium

args = ['--no-default-browser-check', '--start-maximized']
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => args})
Capybara.register_driver :selenium do |app|
  Capybara::Selenium::Driver.new(
    app,
    browser: :remote,
    url: "http://#{ENV['SELENIUM_HOST']}:#{ENV['SELENIUM_PORT']}/wd/hub",
    desired_capabilities: caps
  )
end

HTML 片段

<a data-action="click->checkout-special-category#toggle" id="checkout-special-category-0" href="/dashboard/websites/db9cfdc39a7e251859f525b911466fd7/toggle_special_category?c=special-category-0">Click</a>

测试片段

first('#checkout-special-category-0').click
expect(first('#checkout-special-category-0')).to have_selector('.checkout-special-categories--is-active')

日志

Started POST "/dashboard/websites/db9cfdc39a7e251859f525b911466fd7/toggle_special_category?c=database-research" for 172.21.0.3 at 2019-06-19 15:14:53 +0000
Processing by Dashboard::WebsitesController#toggle_special_category as */*
  Parameters: {"c"=>"database-research", "id"=>"db9cfdc39a7e251859f525b911466fd7", "website"=>{}}
Completed 401 Unauthorized in 0ms (ActiveRecord: 0.0ms)

【问题讨论】:

    标签: ruby-on-rails selenium rspec capybara


    【解决方案1】:

    最可能的原因是获取的域名与设置会话 cookie 的域名不同 - 即 localhost 与 127.0.0.1 等。

    【讨论】:

    • 然后请编辑您的问题以显示更大的测试部分,显示您如何登录等,以及点击触发的 JS 代码。
    • @Oliver - 哦——你不会碰巧使用旧版本的 Chrome 吧? fetch 的默认凭据初始化选项在几个版本前已更改。 fetch 和 XMLHttpRequest API 之间的最大区别之一是 fetch 默认情况下不发送任何 cookie。
    猜你喜欢
    • 1970-01-01
    • 2017-09-09
    • 2020-11-13
    • 2015-09-10
    • 2019-08-30
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多