rspec - 当第一个页面与第二个页面具有相同的字段时,等待第二个页面加载 Capybara 的正确方法

标签 rspec capybara rspec2

我在访问两个表单上具有相同字段(“电子邮件”)的两个表单时遇到了问题。如果我不手动休眠,Capybara 似乎会在测试的第二部分中的第一次访问中找到“电子邮件”字段。

# visit the first form and fill out a subscription
visit new_front_form_subscription_path(@web_form_1.id)
fill_in "Email", with: "subscriber@example.com"
fill_in "Field 1", with: "my first data"
click_button "Subscribe"

# visit the second form and fill out a subscription
visit new_front_form_subscription_path(@web_form_2.id)
sleep 1
fill_in "Email", with: "subscriber@example.com"
fill_in "Field 2", with: "my second data"
click_button "Subscribe"
随着 sleep 在那里,规范通过了绚丽的色彩。如果没有 sleep ,第二个表单提交会得到一个验证错误——归咎于一个空白的“电子邮件”值。
有没有适当的方法来处理这个问题?我不喜欢在规范中引入手动 sleep 。

最佳答案

以下是您可以使用的几种方法来解决它:

  • 使用仅出现在第二页的另一个定位器来选择“电子邮件”字段:
    find('#second_page #email').set('subscriber@example.com')
    
  • 编写一条语句,等待第二页加载而不是 sleep :
    visit new_front_form_subscription_path(@web_form_2.id)
    expect(page).to have_css('locator_present_only_at_second_page')
    fill_in "Email", with: "subscriber@example.com"
    
  • 关于rspec - 当第一个页面与第二个页面具有相同的字段时,等待第二个页面加载 Capybara 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313885/

    相关文章:

    ruby-on-rails - capybara 无法识别ajax加载的元素。?

    ruby-on-rails - RSpec/Capybara 测试 have_selector 难题

    ruby - RSpec定位资源路径

    javascript - 如何在 Rspec 功能规范期间创建 Javascript stub 对象?

    ruby-on-rails - 升级到 Rails 4 后 : Specs fail in combination while passing in isolation

    rspec - Capybara:在 page.all 节点中查找元素

    ruby-on-rails-3 - 使用带有标签的套件钩子(Hook)之前的 RSpec

    ruby-on-rails - Rspec:在每个之前 js:true specs only

    html - 如何使用 Capybara 找到未命名的 iframe

    ruby-on-rails - 有没有办法提供更好的 rspec 测试描述