[英]RSpec, capybara, bootbox.js, Rails-3.2. Strange behavior of :selenium driver
我想测试几个按钮单击事件的行为。 这是我的* _spec.rb
***pause_spec.rb***
require 'spec_helper'
require 'rspec'
describe CreditApplicationsController, type: :controller do
render_views
before do
visit '/users/sign_in' #### FIRST SIGN IN
#user = User.find_by_email("mymail@example.com") #### AND FILL REQUIRED FIELDS
@user = FactoryGirl.create(:user)
sign_in @user
fill_in_fields(@user)
main_page_available?(@user) #### *** ####
end
it 'should check pause_on button' do
click_link 'pause-link' ### OK HERE, after this - pop up bootbox.js
### confirm window
#click_link 'Pause-confirm' ### HERE IS MY PROBLEM ###
### click_link / click_button can't find
### button within my bootbox.js
assert has_selector? "leave"
end
end
我尝试了另一种方法来通过水豚脚本对此进行测试。
我尝试了以下方法:
describe CreditApplicationsController, type: :controller,
js: true, driver: :selenium do
.....
并改变
click_link 'Pause-confirm'
=>
find('.btn-success').trigger('click')
... or ...
page.execute_script("$('.btn-success').click()")
它没有任何结果,而且我的方法main_page_available?(@ user)中出现错误,只是因为我为describe部分添加了js:true (如果在其中“应该...”部分中添加js:true ,则结果相同)。
我在spec_helper.rb中的方法fill_in_fields(user)和main_page_available?(user)
def fill_in_fields(user)
# @user = User.find_by_email("a.solodkov@prbb.com")
fill_in "user[email]", with: user.email
fill_in "user[password]", with: "12345678"
click_button "Sign in"
## Success with sign in action?
if has_selector? 'input#user_net_name'
assert has_selector? 'input#user_net_name'
fill_in "user[net_name]", with: user.net_name
fill_in "user[password]", with: "12345678"
fill_in "user[password_confirmation]", with: "12345678"
click_button 'change-button'
end
end
def main_page_available?(user)
# Main page?
if has_selector? 'small.pull-right'
within "small.pull-right" do
assert has_content? "#{user.id}"
end
else
assert has_selector? 'table#admin-credit-application'
end
end
我究竟做错了什么?
提前致谢! 任何帮助将不胜感激!
如果在检查js模态窗口(在我的情况下为bootbox.js-CustomConfirmBox)中检查元素时遇到问题,则必须为规格指定js:true 。
这是我解决上述问题的方法:
it 'should check pause_on pause_off', js: true do #, driver: :selenium
click_link 'pause-link'
page.should have_xpath("//div[@class='modal-body']")
page.should have_xpath("//div[@class='bootbox modal fade in']")
page.should have_xpath("//a[@class='btn btn-success']")
click_link 'Pause'
page.should have_xpath("//a[@class='btn btn-block btn-success']")
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.