如何使用capybara / selenium映射浏览器对话框

时间:2015-06-16 12:31:21

标签: ruby selenium capybara

使用capybara / selenium处理浏览器对话框(使用ok / cancel按钮)的最佳方法是什么?

我发现最简单的方法是运行以下内容:

dialog = page.driver.browser.switch_to.alert
dialog.accept

对更好的方法有什么想法吗?

无论谁击落这个帖子,请给出正确的理由......没有任何理由对投票没有帮助

1 个答案:

答案 0 :(得分:1)

如果可能,您应该尽量避免直接使用底层驱动程序。通过使用Capybara的API,如果您想要更改驱动程序并且存在驱动程序API差异,那么(理论上)您将处于更好的位置。

Capyabara's project page开始,处理模态对话框的方法是:

  

在支持它的司机中,您可以接受,解雇和回复   提醒,确认和提示。

     

您可以通过包装代码来接受或取消警报消息   在块中产生警报:

accept_alert do
  click_link('Show Alert')
end
     

您可以通过将确认包装在一个块中来接受或取消确认   好:

dismiss_confirm do
  click_link('Show Confirm')
end
     

您也可以接受或取消提示,并提供文字   填写回复:

accept_prompt(with: 'Linus Torvalds') do
  click_link('Show Prompt About Linux')
end
     

所有模态方法都返回显示的消息。所以你可以   通过将返回值分配给变量来访问提示消息:

message = accept_prompt(with: 'Linus Torvalds') do
  click_link('Show Prompt About Linux')
end
expect(message).to eq('Who is the chief architect of Linux?')