Selenium未发现JavaScript错误

时间:2015-06-11 23:04:53

标签: javascript ruby selenium sinatra capybara

我正在使用Sinatra,我的测试环境设置如下。

Gemfile:

gem 'rspec'
gem 'capybara'
gem 'pry'
gem 'selenium-webdriver'

spec_helper.rb

require 'view_helpers'
require 'capybara/rspec'
require 'rspec'
require 'selenium-webdriver'

Capybara.javascript_driver = :selenium

staticpages_integration_test.rb

require 'capybara/rspec'
require './app'

Capybara.app = Sinatra::Application 
set :show_exceptions, false 

...


describe 'the home page should not have javascript errors', {:type => :feature } do

# Enable Selenium for JavaScript testing 
before :all do
    Capybara.current_driver = :selenium
    visit '/'
end

it 'the home page should run scripts without error', :js => true do 
    expect(page).not_to have_errors
end 

# Disable Selenium for standard testing 
after :all do
    Capybara.use_default_driver
end

end 

我的测试套件的其余部分加载正常并且Selenium运行并打开firefox浏览器,但随后输出以下错误:

Failure/Error: expect(page).not_to have_errors
   expected #<Capybara::Session:0x007f8146be1e90> to respond to     `has_errors?`

我错过了什么?我也尝试过使用error_message作为方法。问题似乎是Selenium没有运行/无法访问这些方法。我错过了依赖吗?感谢。

或者,如果有更简洁的方法来测试js错误,我很乐意学习。

2 个答案:

答案 0 :(得分:1)

Capybara不包含have_errors匹配器。要使用该匹配器,您需要使用capybara-webkit gem / driver而不是selenium

答案 1 :(得分:0)

如果你使用PhantomJS / Poltergeist与Capybara一起运行你的测试它会失败测试并输出任何错误(包括JS错误)......除此之外它还会输出JS警告,这不会使测试失败但是仍然让您可以看到您网站中的混乱......

如果JS错误对您正在测试的产品来说是一个大问题,我建议将它与茶匙一起使用......

关于Selenium WD,鉴于有特定工具可以监控页面上的JS错误,它有点超出范围...