如何使用 capybara + headless chrome 测试 confirm/alert 消息
How to test confirm/alert messages with capybara + headless chrome
最近我将我的验收测试从 capybara-webkit 切换到了 headless chrome。在某些情况下,我需要检查警报消息(例如,确认在用户离开页面时放弃更改)。使用 capybara-webkit 我按以下方式完成了
confirm_messages = page.driver.browser.confirm_messages
expect(confirm_messages.first).to include "Do you want to discard your changes?"
# or
expect(page.driver.browser.confirm_messages).to be_empty
现在,当我尝试使用 chrome/headless chrome 获取确认消息时,出现以下错误:
undefined method `confirm_messages' for #<Selenium::WebDriver::Chrome::Driver:0x007fa5478d8a08> (NoMethodError)
如何测试水豚和无头警报 chrome?
你需要使用 Capybaras 模态处理方法的 text
参数 (accept_confirm
/accept_alert
/etc) -https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Session#accept_confirm-instance_method - 这将检查它之前的消息accepts/dismisses系统模态
accept_confirm "Do you want to discard your changes?" do
# whatever action triggers the modal to be shown
click_link("Go somewhere else")
end
技术上 accept_confirm
也 returns 框的文本,这样你就可以做类似
msg = accept_confirm do
# action which triggers modal to be shown
end
expect(msg).to eq "Do you want to discard your changes?"
尽管如果您确切知道消息的文本,第一个示例会更好读。请注意,这也适用于 capybara-webkit,无需使用特定于驱动程序的方法。
最近我将我的验收测试从 capybara-webkit 切换到了 headless chrome。在某些情况下,我需要检查警报消息(例如,确认在用户离开页面时放弃更改)。使用 capybara-webkit 我按以下方式完成了
confirm_messages = page.driver.browser.confirm_messages
expect(confirm_messages.first).to include "Do you want to discard your changes?"
# or
expect(page.driver.browser.confirm_messages).to be_empty
现在,当我尝试使用 chrome/headless chrome 获取确认消息时,出现以下错误:
undefined method `confirm_messages' for #<Selenium::WebDriver::Chrome::Driver:0x007fa5478d8a08> (NoMethodError)
如何测试水豚和无头警报 chrome?
你需要使用 Capybaras 模态处理方法的 text
参数 (accept_confirm
/accept_alert
/etc) -https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Session#accept_confirm-instance_method - 这将检查它之前的消息accepts/dismisses系统模态
accept_confirm "Do you want to discard your changes?" do
# whatever action triggers the modal to be shown
click_link("Go somewhere else")
end
技术上 accept_confirm
也 returns 框的文本,这样你就可以做类似
msg = accept_confirm do
# action which triggers modal to be shown
end
expect(msg).to eq "Do you want to discard your changes?"
尽管如果您确切知道消息的文本,第一个示例会更好读。请注意,这也适用于 capybara-webkit,无需使用特定于驱动程序的方法。