【发布时间】:2017-01-04 12:01:16
【问题描述】:
我正在尝试编写测试。有一个带有元素和删除按钮的站点,用于删除该元素。如果手动完成,它会按预期工作。
目前,测试如下所示:
visit "/argumentation#!/overview"
expect(page).to have_content("Philosophie")
save_screenshot
click_button "Delete"
save_screenshot
click_button "Yes, delete it!"
save_screenshot
sleep 5
save_screenshot
expect(page).not_to have_content("Philosophie")
(截图如下)。
为了确保click_button "Yes, delete it!" 实际上与弹出窗口中显示的按钮相同,我在click_button "Delete" 操作之前添加了click_button "Yes, delete it!"。这会发生:
Capybara::ElementNotFound:
Unable to find button "Yes, delete it!"
有谁知道,为什么测试失败了?
在其他stackoverflow-questions中,有人询问rails_helper.rb中的配置,这是我的:
Capybara.javascript_driver = :poltergeist
Capybara.default_driver = :poltergeist
【问题讨论】:
-
你试过
page.driver.browser.switch_to.alert.accept吗? -
@fabersky 我收到此错误:Failure/Error: page.driver.browser.switch_to.alert.accept NoMethodError: undefined method `switch_to' for #<:poltergeist::browser:0x0055761e8b8348>你的意思是? switch_to_frame
-
这不是一个系统模式,所以
switch_to.alert是行不通的。此外,当它是系统模式时,更喜欢Session#accept_alert而不是驱动程序特定的方法
标签: angularjs capybara sweetalert