Rails + 水豚:'Unexpected Alert Open' 适用于 Selenium 驱动程序
Rails + Capybara: 'Unexpected Alert Open' for Selenium Driver
我正在使用 Capybara 和 Chrome 作为我的默认 selenium 浏览器。
测试:
it "is successful with deleting a user", js: true do
visit '/users'
expect(User.count).to eq(1)
expect(user.email).to eq("ryan@drake.com")
expect(page).to have_content("Manage Users")
click_link 'Delete User'
page.driver.browser.confirm.accept
user.reload
visit '/users'
expect(User.count).to eq(0)
end
我的测试遇到这个错误:
Failure/Error: visit '/users'
Selenium::WebDriver::Error::UnhandledAlertError:
unexpected alert open
我在测试中尝试了以下方法:
page.driver.browser.switch_to.confirm
page.driver.browser.switch_to.accept
page.driver.browser.confirm.accept
我应该在测试中尝试任何其他变化吗?
尝试将启动警报提示的代码包装在 accept_alert
块中,如下所示:
it "is successful with deleting a user", js: true do
visit '/users'
expect(User.count).to eq(1)
expect(user.email).to eq("ryan@drake.com")
expect(page).to have_content("Manage Users")
# Change is here:
accept_alert do
click_link 'Delete User'
end
user.reload
visit '/users'
expect(User.count).to eq(0)
end
我有点担心您在删除资源时希望使用警报而不是确认,但这取决于您。警报只是告诉您将要发生某些事情,同时确认允许用户通过点击取消而不是确定来改变主意。如果您使用确认模式而不是警报模式,那么 accept_alert
部分需要更改为 accept_confirm
.
查看 the modal documentation rubydoc 了解更多信息。
我刚遇到同样的错误。
查看 rubydoc.info 的水豚文档,我发现以下方法可以解决问题:
accept_confirm: "执行区块,接受确认。"
dismiss_confirm: "执行区块,解除确认。"
我正在使用 Capybara 和 Chrome 作为我的默认 selenium 浏览器。
测试:
it "is successful with deleting a user", js: true do
visit '/users'
expect(User.count).to eq(1)
expect(user.email).to eq("ryan@drake.com")
expect(page).to have_content("Manage Users")
click_link 'Delete User'
page.driver.browser.confirm.accept
user.reload
visit '/users'
expect(User.count).to eq(0)
end
我的测试遇到这个错误:
Failure/Error: visit '/users'
Selenium::WebDriver::Error::UnhandledAlertError:
unexpected alert open
我在测试中尝试了以下方法:
page.driver.browser.switch_to.confirm
page.driver.browser.switch_to.accept
page.driver.browser.confirm.accept
我应该在测试中尝试任何其他变化吗?
尝试将启动警报提示的代码包装在 accept_alert
块中,如下所示:
it "is successful with deleting a user", js: true do
visit '/users'
expect(User.count).to eq(1)
expect(user.email).to eq("ryan@drake.com")
expect(page).to have_content("Manage Users")
# Change is here:
accept_alert do
click_link 'Delete User'
end
user.reload
visit '/users'
expect(User.count).to eq(0)
end
我有点担心您在删除资源时希望使用警报而不是确认,但这取决于您。警报只是告诉您将要发生某些事情,同时确认允许用户通过点击取消而不是确定来改变主意。如果您使用确认模式而不是警报模式,那么 accept_alert
部分需要更改为 accept_confirm
.
查看 the modal documentation rubydoc 了解更多信息。
我刚遇到同样的错误。
查看 rubydoc.info 的水豚文档,我发现以下方法可以解决问题:
accept_confirm: "执行区块,接受确认。"
dismiss_confirm: "执行区块,解除确认。"