我目前正在使用Capybara selenium / webkit进行功能测试,我真的不明白它是如何在幕后工作的。
通过检查Capybara文档,默认情况下selenium使用firefox浏览器进行测试。它甚至没有提到它正在使用的版本。 (我没有安装firefox,我认为它与gem selenium-webdriver
或capybara-webkit
一起来了)
我的问题:
1)如果我想在特定浏览器版本上触发测试,是否可能?我怎样才能做到这一点?例如,在Chrome浏览器版本53.1.2上。
2)所有在幕后进行的自动功能测试是否可以直观地显示测试程序?例如,Selenium驱动程序启动浏览器并可视化点击/滚动/拖动效果以及测试运行?
答案 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_driver
或Capybara.default_driver
的值,具体取决于测试是否具有{是否{1}}元数据标记 - 请参阅https://github.com/teamcapybara/capybara/blob/2.12.0/README.md#drivers和https://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
- 有关不同选项的详细信息,请参阅其自述文件您可以在注册时为每个驱动程序指定。