【问题标题】:Selenium isn't catching JavaScript errorsSelenium 没有捕捉到 JavaScript 错误
【发布时间】:2015-08-27 20:43:43
【问题描述】:

我正在使用 Sinatra,我的测试环境是这样设置的。

宝石文件:

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 错误,我很乐意学习。

【问题讨论】:

    标签: javascript ruby selenium sinatra capybara


    【解决方案1】:

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

    【讨论】:

    • 好的,有道理。谢谢
    【解决方案2】:

    如果你使用 PhantomJS/Poltergeist 和 Capybara 来运行你的测试,它将导致测试失败并输出任何错误(包括 JS 错误)......同时它还会输出 JS 警告,这不会导致测试失败但仍然可以让您看到网站中的混乱情况...

    如果 JS 错误对您正在测试的产品来说很重要,我建议将它与茶匙一起使用...

    关于 Selenium WD,监控页面上的 JS 错误有点超出范围,因为有特定的工具可以做到这一点......

    【讨论】:

    • 太好了,我没听说过 PhantomJS/Poltergeist。我试试看。
    猜你喜欢
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2016-01-26
    相关资源
    最近更新 更多