【问题标题】:Capybara, Sweet-Alert, click_button seems to work, but does not trigger the actionCapybara,Sweet-Alert,click_button 似乎可以工作,但不会触发动作
【发布时间】: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


【解决方案1】:

我想通了:click_button“是的,删除它!”发生得太快了。随着延迟,它可以工作:

click_button "Delete"
sleep 5
click_button "Yes, delete it!"

【讨论】:

  • 您的警报按钮是否在屏幕上显示动画?如果是这样,这可能就是为什么如果按钮正在移动,点击可能会错过按钮。检查您用于警报的库,看看是否有一种方法可以在测试环境中禁用动画。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 2013-01-12
  • 2013-10-31
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
相关资源
最近更新 更多