我使用 selenium、capybara 和 rspec 进行测试,我注意到所有测试都在本地通过,但在 travis 上,所有测试都失败,每个规范上都出现此错误。
Capybara::ElementNotFound:
我不确定这里出了什么问题,这是 .travis.yml 上的规范运行器
script:
- xvfb-run bundle exec rspec spec/features/*.rb
对于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
最佳答案
好吧,我找到了问题的原因和解决方案。
原因:我们使用响应式设计,显然 travis 使用了较小的窗口尺寸,这开启了移动设计,这就是为什么它找不到元素。
解决方案:
script:
- xvfb-run --server-args="-screen 0 1024x768x24" bundle exec rspec spec/features/*.rb
您基本上将窗口大小设置为更大的尺寸。
关于ruby-on-rails - Capybara::ElementNotFound 的所有规范仅在 Travis 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713471/