Selenium::WebDriver::Error::UnknownError: Invalid Content-Type
Selenium::WebDriver::Error::UnknownError: Invalid Content-Type
在我的 Ruby on Rails 5 应用程序中,我有以下测试在没有对代码进行任何更改的情况下开始失败:
require 'rails_helper'
RSpec.describe 'Agent Groups Index Page' do
let(:active_user) {FactoryBot.create(:agent)}
let(:user_group) {FactoryBot.create(:group, servicing_agent_id: active_user.id)}
let(:other_user) {FactoryBot.create(:agent, :other_agent)}
let(:other_group) {FactoryBot.create(:group, servicing_agent_id: other_user.id)}
let(:zip_code) {FactoryBot.create(:zip_code)}
before do
visit new_user_session_path
fill_in 'user_email', with: active_user.email
fill_in 'user_password', with: active_user.password
click_button 'Login'
end
context 'has no groups' do
before do
other_user
other_group
visit groups_path()
end
scenario 'sees empty list', js: true do
expect(page).to have_content 'No data available in table'
end
end
end
它 returns 出现以下错误:
Failure/Error: click_button 'Login'
Selenium::WebDriver::Error::UnknownError:
Invalid Content-Type
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/common.rb:81:in `new'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/common.rb:81:in `create_response'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/default.rb:104:in `request'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/common.rb:59:in `call'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/bridge.rb:164:in `execute'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/w3c/bridge.rb:535:in `execute'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/w3c/bridge.rb:358:in `click_element'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/common/element.rb:72:in `click'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/selenium/node.rb:94:in `click'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/node/element.rb:133:in `block in click'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/node/base.rb:83:in `synchronize'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/node/element.rb:133:in `click'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/node/actions.rb:58:in `click_button'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/session.rb:740:in `block (2 levels) in <class:Session>'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/dsl.rb:51:in `block (2 levels) in <module:DSL>'
# ./spec/support/helpers/session_helpers.rb:7:in `signin'
# ./spec/features/agents/groups/groups_index_spec.rb:11:in `block (2 levels) in <top (required)>'
知道什么会导致这种奇怪的行为吗?
我在 Docker-based CI 设置中遇到了同样的问题。我能够通过指定与 Capybara 交谈的 Selenium 图像的版本来修复它。
所以在 docker-compose.yml
中我们的配置来自:
firefox:
image: selenium/standalone-firefox
volumes:
- /dev/shm:/dev/shm
收件人:
firefox:
image: selenium/standalone-firefox:3.11
volumes:
- /dev/shm:/dev/shm
除上述之外,我们在 Gemfile
中为该项目指定了 capybara
和 selenium-webdriver
的版本,以确保兼容性。我们将在未来同步升级它们,但这是同时保持工作正常的好方法。
在我的 Ruby on Rails 5 应用程序中,我有以下测试在没有对代码进行任何更改的情况下开始失败:
require 'rails_helper'
RSpec.describe 'Agent Groups Index Page' do
let(:active_user) {FactoryBot.create(:agent)}
let(:user_group) {FactoryBot.create(:group, servicing_agent_id: active_user.id)}
let(:other_user) {FactoryBot.create(:agent, :other_agent)}
let(:other_group) {FactoryBot.create(:group, servicing_agent_id: other_user.id)}
let(:zip_code) {FactoryBot.create(:zip_code)}
before do
visit new_user_session_path
fill_in 'user_email', with: active_user.email
fill_in 'user_password', with: active_user.password
click_button 'Login'
end
context 'has no groups' do
before do
other_user
other_group
visit groups_path()
end
scenario 'sees empty list', js: true do
expect(page).to have_content 'No data available in table'
end
end
end
它 returns 出现以下错误:
Failure/Error: click_button 'Login'
Selenium::WebDriver::Error::UnknownError:
Invalid Content-Type
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/common.rb:81:in `new'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/common.rb:81:in `create_response'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/default.rb:104:in `request'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/http/common.rb:59:in `call'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/bridge.rb:164:in `execute'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/w3c/bridge.rb:535:in `execute'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/remote/w3c/bridge.rb:358:in `click_element'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/selenium-webdriver-3.11.0/lib/selenium/webdriver/common/element.rb:72:in `click'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/selenium/node.rb:94:in `click'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/node/element.rb:133:in `block in click'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/node/base.rb:83:in `synchronize'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/node/element.rb:133:in `click'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/node/actions.rb:58:in `click_button'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/session.rb:740:in `block (2 levels) in <class:Session>'
# /Users/override23/.rvm/gems/ruby-2.5.1@-global/gems/capybara-3.0.2/lib/capybara/dsl.rb:51:in `block (2 levels) in <module:DSL>'
# ./spec/support/helpers/session_helpers.rb:7:in `signin'
# ./spec/features/agents/groups/groups_index_spec.rb:11:in `block (2 levels) in <top (required)>'
知道什么会导致这种奇怪的行为吗?
我在 Docker-based CI 设置中遇到了同样的问题。我能够通过指定与 Capybara 交谈的 Selenium 图像的版本来修复它。
所以在 docker-compose.yml
中我们的配置来自:
firefox:
image: selenium/standalone-firefox
volumes:
- /dev/shm:/dev/shm
收件人:
firefox:
image: selenium/standalone-firefox:3.11
volumes:
- /dev/shm:/dev/shm
除上述之外,我们在 Gemfile
中为该项目指定了 capybara
和 selenium-webdriver
的版本,以确保兼容性。我们将在未来同步升级它们,但这是同时保持工作正常的好方法。