Rails RSpec意外警报打开

时间:2017-03-02 13:54:13

标签: ruby-on-rails ruby selenium rspec

使用RSpec和Capybara,我试图在网页上测试删除功能。

视图中按钮的代码是:

<%= link_to "&times".html_safe, material, method: :delete, data: { confirm: 'Are you sure?' }

我想为它编写RSpec测试,以便能够单击确认框中的“确定”按钮。到目前为止,我得到了以下

feature 'Delete materials' do
  before do
    @user = FactoryGirl.create(:user)
    @group = FactoryGirl.create(:group)
    @user.groups << @group
    @material_1 = FactoryGirl.create(:material, user: @user, group: @group)
    login_as(@user, scope: :user)
  end

  scenario "in the index should give a confirmation box", js: true do
    visit materials_path
    expect(Material.count).to eq(1)

    accept_confirm do
      find('a[data-method="delete"]').click
      click_link "OK"
    end

    expect(Material.count).to eq(0)
  end
end

我一直得到的错误是:

Selenium::WebDriver::Error::UnhandledAlertError:
       unexpected alert open: {Alert text : Are you sure?}
         (Session info: chrome=56.0.2924.87)
         (Driver info: chromedriver=2.27.440175(9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.8.0-39-generic x86_64)

我用谷歌搜索并搜索周围,一个解决方案是chromedriver可能不是最新的。据我所知,我使用的是最新的驱动程序。 另一个解决方案是使用accept_confirm块,但这还没有帮助。

为了记录,我使用Selenium-webdriver + chromedriver-helper gem进行Google Chrome测试。

1 个答案:

答案 0 :(得分:6)

警报通常是客户端JavaScript。在点击删除操作上方尝试此操作:

page.driver.browser.switch_to.alert.accept

.dismiss如果这就是您所需要的。

相关问题