Rails Capybara selenium测试特定浏览器版本并可视化测试

时间:2017-01-25 05:09:36

标签: ruby-on-rails selenium selenium-webdriver capybara selenium-chromedriver

我目前正在使用Capybara selenium / webkit进行功能测试,我真的不明白它是如何在幕后工作的。

通过检查Capybara文档,默认情况下selenium使用firefox浏览器进行测试。它甚至没有提到它正在使用的版本。 (我没有安装firefox,我认为它与gem selenium-webdrivercapybara-webkit一起来了)

我的问题:

1)如果我想在特定浏览器版本上触发测试,是否可能?我怎样才能做到这一点?例如,在Chrome浏览器版本53.1.2上。

2)所有在幕后进行的自动功能测试是否可以直观地显示测试程序?例如,Selenium驱动程序启动浏览器并可视化点击/滚动/拖动效果以及测试运行?

1 个答案:

答案 0 :(得分:1)

selenium-webdriver gem没有安装firefox,如果你在运行测试时没有看到浏览器打开,你实际上并没有使用selenium-webdriver,因为当用于桌面浏览器时(firefox,chrome,IE, safari)它将打开这些浏览器,你可以看到它与正在测试的应用程序进行交互。

当您运行测试时,Capybara会在每次测试开始时使用Capybara.current_driver标识的驱动程序。在正常的Capybara配置中(使用rspec时),当前驱动程序在前一个块中设置 - https://github.com/teamcapybara/capybara/blob/2.12.0/lib/capybara/rspec.rb#L26 - 设置为Capybara.javascript_driverCapybara.default_driver的值,具体取决于测试是否具有{是否{1}}元数据标记 - 请参阅https://github.com/teamcapybara/capybara/blob/2.12.0/README.md#drivershttps://github.com/teamcapybara/capybara/blob/2.12.0/README.md#using-capybara-with-rspec

默认情况下js: true,该驱动程序的默认配置将使用firefox。因此,如果您将Capybara.javascript_driver = :selenium元数据添加到其中一个测试中,它将使用selenium驱动程序并尝试运行系统安装的firefox(取决于安装的版本,您可能还需要安装geckodriver),如果没有,则会引发错误安装FF。您还需要阅读Capybara README中的database_cleaner,并正确安装以进行测试。如果您没有指定js: true元数据,那么(默认情况下)您的测试使用的是rack_test驱动程序,该驱动程序不处理CSS或JS,并且实际上仅对非常基本的表单和链接处理测试有用。如果您希望所有测试都使用selenium运行,您可以设置js: true,然后将其用于所有测试(您仍需要设置database_cleaner)

Capybara README提供了如何配置:selenium驱动程序以便在需要时使用Chrome的说明(您还需要安装chromedriver),selenium-webdriver文档将详细说明如何指定浏览器的备用实例(如果您安装了多个版本)。

另一方面,如果您想使用capybara-webkit gem(或Poltergeist),则需要指定已注册驱动程序的名称 - 例如Capybara.default_driver = :selenium - 有关不同选项的详细信息,请参阅其自述文件您可以在注册时为每个驱动程序指定。