Capybara :: ElementNotFound仅适用于特拉维斯的所有规格

keb*_*mix 2 ruby selenium rspec ruby-on-rails capybara

我使用的硒,水豚使用RSpec进行测试,我发现所有的测试在本地通过,但特拉维斯所有测试失败,每个规格此错误.

Capybara::ElementNotFound:
Run Code Online (Sandbox Code Playgroud)

我不确定这里有什么问题,这是.travis.yml上的specs runner

script:
- xvfb-run bundle exec rspec spec/features/*.rb
Run Code Online (Sandbox Code Playgroud)

对于spec_helper.rb这里是我的配置:

RSpec.configure do |config|
  config.treat_symbols_as_metadata_keys_with_true_values = true
  config.use_transactional_fixtures = false
  config.infer_base_class_for_anonymous_controllers = false1
  config.filter_run_excluding :broken => true
  config.render_views

Capybara.default_driver = :selenium
Capybara.default_selector= :css
Capybara.run_server = true
Capybara.default_wait_time = 30
Run Code Online (Sandbox Code Playgroud)

keb*_*mix 5

好吧,我找到了问题的原因和解决方案.

原因:我们使用响应式设计,显然travis使用小窗口大小打开了移动设计,这就是它找不到元素的原因.

方案:

script:
- xvfb-run --server-args="-screen 0 1024x768x24" bundle exec rspec spec/features/*.rb
Run Code Online (Sandbox Code Playgroud)

您基本上将窗口大小设置为更大的大小.