Rails Capybara selenium 在特定浏览器版本上的测试和可视化测试
Rails Capybara selenium test on specific browser version and visualize test
我目前在功能测试中使用 Capybara selenium/webkit,我不太了解它在幕后是如何工作的。
查看Capybara文档,selenium默认使用firefox浏览器进行测试。它甚至没有提到它使用的是什么版本。 (我没有安装firefox,我认为它与gem selenium-webdriver
或capybara-webkit
一起出现)
我的问题:
1) 如果我想在特定的浏览器版本上触发我的测试,可以吗?我怎样才能做到这一点?例如,在 Chrome 浏览器版本 53.1.2.
2) 自动化功能测试全部在后台进行,是否可以将测试过程可视化?例如,Selenium 驱动程序启动浏览器并可视化 click/scroll/drag 效果以及测试 运行?
selenium-webdriver gem 不会安装 firefox,如果您在 运行 测试时没有看到浏览器打开,那么您实际上并没有在使用 selenium-webdriver ,因为当与桌面浏览器(firefox、chrome、IE、safari)一起使用时,它会打开这些浏览器,您可以看到它与被测试的应用程序交互。
当您 运行 测试时,Capybara 在每次测试开始时使用由 Capybara.current_driver
标识的驱动程序。在正常的 Capybara 配置中(使用 rspec 时),当前驱动程序设置在 before 块中 - https://github.com/teamcapybara/capybara/blob/2.12.0/lib/capybara/rspec.rb#L26 - to either the value of Capybara.javascript_driver
or Capybara.default_driver
depending on whether the test has a js: true
metadata tag or not - see https://github.com/teamcapybara/capybara/blob/2.12.0/README.md#drivers and https://github.com/teamcapybara/capybara/blob/2.12.0/README.md#using-capybara-with-rspec 。
默认情况下 Capybara.javascript_driver = :selenium
并且该驱动程序的默认配置将使用 firefox。因此,如果您将 js: true
元数据添加到您的测试之一,它将使用 selenium 驱动程序并尝试 运行 您的系统安装 firefox(根据安装的版本,您可能还需要安装 geckodriver),引发错误如果没有安装 FF。您还需要阅读 Capybara README 中的 database_cleaner 并正确安装它以进行测试。如果您没有指定 js: true
元数据,那么(默认情况下)您的测试使用的是 rack_test 驱动程序,它不处理 CSS 或 JS,实际上只对非常基本的形式有用, link 处理测试。如果您希望所有测试都使用 selenium 运行,您可以设置 Capybara.default_driver = :selenium
然后将其用于所有测试(您仍然需要设置 database_cleaner)
Capybara README 包含有关如何配置 :selenium 驱动程序以在需要时使用 Chrome 的说明(您还需要安装 chrome 驱动程序)和 selenium-webdriver 文档将详细说明如何指定浏览器的备用实例(如果安装了多个版本)。
另一方面,如果您想使用 capybara-webkit gem(或 Poltergeist),您需要指定已注册驱动程序的名称 - 例如 Capybara.javascript_driver = :webkit/:poltergeist
- 请参阅他们的自述文件,了解您在注册时可以为每个驱动程序指定的不同选项的详细信息。
我目前在功能测试中使用 Capybara selenium/webkit,我不太了解它在幕后是如何工作的。
查看Capybara文档,selenium默认使用firefox浏览器进行测试。它甚至没有提到它使用的是什么版本。 (我没有安装firefox,我认为它与gem selenium-webdriver
或capybara-webkit
一起出现)
我的问题:
1) 如果我想在特定的浏览器版本上触发我的测试,可以吗?我怎样才能做到这一点?例如,在 Chrome 浏览器版本 53.1.2.
2) 自动化功能测试全部在后台进行,是否可以将测试过程可视化?例如,Selenium 驱动程序启动浏览器并可视化 click/scroll/drag 效果以及测试 运行?
selenium-webdriver gem 不会安装 firefox,如果您在 运行 测试时没有看到浏览器打开,那么您实际上并没有在使用 selenium-webdriver ,因为当与桌面浏览器(firefox、chrome、IE、safari)一起使用时,它会打开这些浏览器,您可以看到它与被测试的应用程序交互。
当您 运行 测试时,Capybara 在每次测试开始时使用由 Capybara.current_driver
标识的驱动程序。在正常的 Capybara 配置中(使用 rspec 时),当前驱动程序设置在 before 块中 - https://github.com/teamcapybara/capybara/blob/2.12.0/lib/capybara/rspec.rb#L26 - to either the value of Capybara.javascript_driver
or Capybara.default_driver
depending on whether the test has a js: true
metadata tag or not - see https://github.com/teamcapybara/capybara/blob/2.12.0/README.md#drivers and https://github.com/teamcapybara/capybara/blob/2.12.0/README.md#using-capybara-with-rspec 。
默认情况下 Capybara.javascript_driver = :selenium
并且该驱动程序的默认配置将使用 firefox。因此,如果您将 js: true
元数据添加到您的测试之一,它将使用 selenium 驱动程序并尝试 运行 您的系统安装 firefox(根据安装的版本,您可能还需要安装 geckodriver),引发错误如果没有安装 FF。您还需要阅读 Capybara README 中的 database_cleaner 并正确安装它以进行测试。如果您没有指定 js: true
元数据,那么(默认情况下)您的测试使用的是 rack_test 驱动程序,它不处理 CSS 或 JS,实际上只对非常基本的形式有用, link 处理测试。如果您希望所有测试都使用 selenium 运行,您可以设置 Capybara.default_driver = :selenium
然后将其用于所有测试(您仍然需要设置 database_cleaner)
Capybara README 包含有关如何配置 :selenium 驱动程序以在需要时使用 Chrome 的说明(您还需要安装 chrome 驱动程序)和 selenium-webdriver 文档将详细说明如何指定浏览器的备用实例(如果安装了多个版本)。
另一方面,如果您想使用 capybara-webkit gem(或 Poltergeist),您需要指定已注册驱动程序的名称 - 例如 Capybara.javascript_driver = :webkit/:poltergeist
- 请参阅他们的自述文件,了解您在注册时可以为每个驱动程序指定的不同选项的详细信息。