gpt4 book ai didi

capybara - 如何使用 capybara + headless chrome 测试确认/警报消息

转载 作者:行者123 更新时间:2023-12-04 01:19:29 24 4
gpt4 key购买 nike

最近,我将验收测试从 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)

如何使用 capybara 和 headless Chrome 测试警报?

最佳答案

您需要使用 Capybaras 模态处理方法 (text/accept_confirm/etc) 的 accept_alert 参数 - 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

从技术上讲 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?"

虽然如果你确切地知道消息的文本,第一个例子读起来会更好。请注意,这也适用于 capybara-webkit,而无需使用特定于驱动程序的方法。

关于capybara - 如何使用 capybara + headless chrome 测试确认/警报消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53497922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com