无法使用Poltergeist单击引导模式对话框按钮

时间:2014-12-08 11:59:56

标签: rspec capybara poltergeist

当我点击按钮时,会显示一个引导模式弹出窗口。我尝试使用如下的Poltergeist函数单击确定或取消按钮,但没有一个工作。功能无效或外部点击。

<div class="modal-footer">
<a class="btn cancel" data-dismiss="modal" href="#">Cancel</a>
<a class="btn proceed btn-primary" href="#">OK</a>
</div>

click_link "Release"
page.driver.render('ReleaseOKCANCEL.jpg', :full =>true)

单击“释放”,将出现带有“确定”和“取消”按钮的引导模式,可以使用屏幕截图进行验证。尝试使用以下命令单击“确定”按钮。

  1. page.find( 'btn.proceed.btn基色 ')。触发(' 点击')
  2. click_link('确定')
  3. page.execute_script( '$( “btn.proceed.btn-主 ”)。触发器(“ 点击”)')
  4. page.execute_script( '$( “btn.proceed.btn-主 ”)。触发器(“ 悬停 ”)。触发器(“ CLI CK”)')
  5. page.all( “.//*[@ ID = 'confirmation_dialog'] / DIV [3] / A [2]”)。first.click
  6. click_button“确定”
  7. click_on“确定”
  8. page.dismiss_confirm do page.find('。btn.proceed.btn-primary')。click end
  9. page.find( '模态 ')。找到('。模态尺 ')。找到('。btn.proceed.btn基色 ')。特里格ER(' 点击')
  10. 但没有任何作用。单击“确定”按钮后,应用程序中将发生状态更改。但这不会发生。

2 个答案:

答案 0 :(得分:0)

过去几周我一直在编写一系列功能/集成规范 - 并且已经在bootstrap模式中定位了很多字段和按钮(虽然类名已经从bootstrap默认值更改)。

这里的测试对我来说非常适合使用vanilla bootstrap模式:

 it "displays edit profile page pre-filled for editing after successful form submission" do
    click_link "List a Property"

    within("form#new_user") do
      fill_in "user[login]", with: user.username
      fill_in "user[password]", with: user.password
      fill_in "user[email]", with: user.email
      fill_in "user[first_name]", with: user.first_name
      fill_in "user[last_name]", with: user.last_name
      fill_in "user[phone_number]", with: user.phone_number
      click_button "List My Properties"
    end

    expect(current_path).to eq account_path(:profile)
    within(".profile-name") { expect(page).to have_content user.username }
    find_field("user[first_name]").value.should eq user.first_name
  end

在Capybara中使用within()方法通常可以节省很多我可能会遇到的目标问题。

我还应该注意,所有测试都是使用以下行启用js:

describe "User", js: :true do

答案 1 :(得分:0)

我能够在 Bootstrap 模态上单击元素的唯一方法是

execute_script("document.querySelector('.multiselect__tags').click()")

querySelector 选择元素的地方