水豚:有时能找到元素,有时找不到

Capybara: Sometimes finds elements, sometimes doesn't

你好亲爱的 Whosebugers。

我的水豚测试遇到了一些非常烦人的麻烦。它似乎有自己的想法,有时会决定 运行 零问题,有时会决定不查找元素,单击任何内容,通常只是糟糕。我不知道这是为什么。

我已经研究了好几天,试图确定我的逻辑,找到 'best' 查找和单击元素或填写字段的方法,但没有取得任何进展。请帮忙,如果我还有头发,我会把它拔掉。

我还使用了 Selenium Web 驱动程序。所有宝石都是最新的。

提前致谢。

它会随机决定不点击 'Amtrak 1234' 并且有时会完全错过 find('#atedrop4').click 或者会决定点击我的测试中指定的甚至没有关闭的元素。我很困惑,迫切需要一些帮助。

it 'can view the itinerary print and export', js: true do
visit '/admin/login'
fill_in 'Email', with: "evan@tripwing.com"
fill_in 'Password', with: "guest"
click_button 'Login'

click_link 'Trips'
expect(page).to have_content 'Trips'

click_link('View Trip Page', match: :first)
new_window=windows.last
page.within_window new_window do
  expect(page).to have_content 'A Test To Forget'
  find('.showItinerary').click
  expect(page).to have_content "DAY 1, AMSTERDAM"

  find(:xpath, "//a[@href='#flight1day1']").click
  expect(page).to have_content "SINGAPORE AIRLINES FLIGHT 326"
  click_link 'Add to Calendar'
  find('.ategoogle').click
  new_window=page.driver.browser.window_handles.last
  page.driver.browser.switch_to.window(new_window) do
    fill_in "Email", with: "evan@tripwing.com"
    fill_in "Password", with: "boarder1"
    find("#signIn").click
    expect(page).to have_content "evan@tripwing.com"
    page.driver.browser.close
  end
  find(:xpath, "//a[@href='#flight1day1']").click


  find(:xpath, "//a[@href='#train1Day1']").click
  click_link('Export to Calendar', match: :first)
  find('.ategoogle').click
  new_window=page.driver.browser.window_handles.last
  page.driver.browser.switch_to.window(new_window) do
    expect(page).to have_content "evan@tripwing.com"
    page.driver.browser.close
  end
  find(:xpath, "//a[@href='#train1Day1']").click



  find(:xpath, "//a[@href='#carRentalDay1']").click
  click_link('Export to Calendar', match: :first)
  find('.ategoogle').click
  new_window=page.driver.browser.window_handles.last
  page.driver.browser.switch_to.window(new_window) do
    expect(page).to have_content "evan@tripwing.com"
    page.driver.browser.close
  end
  find(:xpath, "//a[@href='#carRentalDay1']").click


  find(:xpath, "//a[@href='#hotelDay1']").click
  click_link('Export to Calendar', match: :first)
  find('.ategoogle').click
  new_window=page.driver.browser.window_handles.last
  page.driver.browser.switch_to.window(new_window) do
    expect(page).to have_content "evan@tripwing.com"
    page.driver.browser.close
  end
  find(:xpath, "//a[@href='#hotelDay1']").click


  find(:xpath, "//a[@href='#carTransfer1Day1']").click
  click_link('Export to Calendar', match: :first)
  find('.ategoogle').click
  new_window=page.driver.browser.window_handles.last
  page.driver.browser.switch_to.window(new_window) do
    expect(page).to have_content "evan@tripwing.com"
    page.driver.browser.close
  end
  find(:xpath, "//a[@href='#carTransfer1Day1']").click

在水豚测试中使用 save_and_open_page 会有帮助。这样您就可以打开测试页的 html 源并验证您的 html id 和 类 是否确实存在/是否按照您认为的方式呈现。当我做嵌套表单并动态添加 html 到页面时,这对我来说尤其如此。