Rails RSpec意外警报打开

Sam*_*uel 2 ruby selenium rspec ruby-on-rails

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

视图中按钮的代码是:

<%= link_to "&times".html_safe, material, method: :delete, data: { confirm: 'Are you sure?' }
Run Code Online (Sandbox Code Playgroud)

我想为它编写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
Run Code Online (Sandbox Code Playgroud)

我一直得到的错误是:

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)
Run Code Online (Sandbox Code Playgroud)

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

为了记录我正在使用Selenium-webdriver + chromedriver-helper gem来测试Google Chrome.

小智 6

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

page.driver.browser.switch_to.alert.accept

或者.dismiss如果那就是你需要的.