利用selenium通过RSpec测试Javascript元素会导致RSpec测试的其他部分失败

时间:2015-05-11 15:35:52

标签: javascript ruby-on-rails ruby selenium rspec

我正在尝试将Stripe集成到我正在构建的Web应用程序中。但是,当我尝试测试“Pay with Card”按钮时,我遇到了一个琐碎的问题。无论我做什么,rspec都会抛出 ElementNotFound 错误。

经过一番搜索,我发现这是因为默认驱动程序 rack_test 不支持Javascript。然后我提到了一些文档:https://github.com/jnicklas/capybara#drivers并添加了:js =>对我的一个RSpec场景是真的,以及我的gemfile的 selenium-webdriver gem。

然而,这引入了另一组问题。现在每当我运行测试时,我都被告知我使用了无效的用户名/密码组合,我无法进入测试的下一部分,看看我是否可以点击该死的按钮! Selenium似乎没有识别和/或使我的用户工厂无效。

举手。

任何帮助将不胜感激。

规格/特征/ user_upgrade_premium_spec.rb:

require 'rails_helper'

describe "Upgrade from Standard to Premium Plan" do
    before do
     @user = create(:user)
     visit root_path
     click_link "Sign In"
     fill_in 'Email', with: @user.email
     fill_in 'Password', with: @user.password
     click_button "Sign In"
     expect(page).to have_content "Signed in successfully."
  end

  scenario "Successfully", :js => true do
    click_link "My Account"
    click_link "Upgrade Account"

    click_button "Pay with Card"
 end
end  

规格/工厂/ user.rb

FactoryGirl.define do
  factory :user do
    name "User One"
    sequence(:email, 100) { |n| "person#{n}@example.com" }
    password "helloworld"
    password_confirmation "helloworld"
    confirmed_at Time.now
  end
end

1 个答案:

答案 0 :(得分:0)

在超时类别下尝试implicit_wait,例如page_load@driver.manage.timeouts.script_timeout = 15 ;全局声明它,让我们看看它是如何工作的!

<span>Select depatament</span><span>
    <select id="department" onchange="EnableSlaveSelectBox(this)" data-slaveelaments='{"a": 1, "b": "2"}'>
       <option selected disabled>-Select-</option>
    </select>
</span>