Hir*_*103 3 confirm alert capybara google-chrome-headless
最近,我将验收测试从 capybara-webkit 切换到无头 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
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用 chrome/headless chrome 获取确认消息时,出现以下错误:
undefined method `confirm_messages' for #<Selenium::WebDriver::Chrome::Driver:0x007fa5478d8a08> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
如何使用水豚和无头镀铬测试警报?
您需要使用textCapybaras 模态处理方法 ( accept_confirm/ accept_alert/etc) 的参数 - https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Session#accept_confirm-instance_method - 它将在接受之前检查消息/关闭系统模式
accept_confirm "Do you want to discard your changes?" do
# whatever action triggers the modal to be shown
click_link("Go somewhere else")
end
Run Code Online (Sandbox Code Playgroud)
从技术上讲,accept_confirm还返回框的文本,因此您可以执行以下操作
msg = accept_confirm do
# action which triggers modal to be shown
end
expect(msg).to eq "Do you want to discard your changes?"
Run Code Online (Sandbox Code Playgroud)
虽然如果你确切地知道消息的文本,第一个例子读起来会更好。请注意,这也适用于 capybara-webkit,而无需使用特定于驱动程序的方法。
| 归档时间: |
|
| 查看次数: |
1027 次 |
| 最近记录: |