使用capybara / selenium处理浏览器对话框(使用ok / cancel按钮)的最佳方法是什么?
我发现最简单的方法是运行以下内容:
dialog = page.driver.browser.switch_to.alert
dialog.accept
对更好的方法有什么想法吗?
无论谁击落这个帖子,请给出正确的理由......没有任何理由对投票没有帮助
答案 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?')