ruby-on-rails - Rails RSpec 意外警报打开

标签 ruby-on-rails ruby selenium rspec

我正在尝试使用 RSpec 和 Capybara 测试网页上的删除功能。

View 中按钮的代码为:

<%= 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 block ,但这还没有帮助。

郑重声明,我正在使用 Selenium-webdriver + chromedriver-helper gem 对 Google Chrome 进行测试。

最佳答案

警报通常是客户端 JavaScript。在您的点击删除操作上方试试这个:

page.driver.browser.switch_to.alert.accept

.dismiss 如果这是您的需要。

关于ruby-on-rails - Rails RSpec 意外警报打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42557331/

相关文章:

java - org.openqa.selenium.WebDriverException : unknown error: cannot determine loading status

post - 如何使用 browsermob-proxy 和 selenium 捕获 http POST 请求

ruby-on-rails - 使用 git 进行标记和修复的适当策略

javascript - 如何使用 Jquery 更新数据确认属性内的消息?

ruby - 向现有模型添加单表继承 (STI)

ruby-on-rails - OAuth2::Error,invalid_request:redirect_uri 与应用程序配置不匹配

Selenium Chromedriver 导致 Chrome 在没有配置插件、书签和其他设置的情况下启动

ruby-on-rails - 使用 spork 的 Rails 项目 - 总是必须使用 spork?

ruby-on-rails - 为什么我的 Rails 应用程序在控制台启动时忽略环境变量 DATABASE_URL?

Ruby - 用符号替换字符串中的字符