【问题标题】:Rails Capybara selenium test on specific browser version and visualize testRails Capybara selenium 测试特定浏览器版本和可视化测试
【发布时间】:2017-01-25 05:09:35
【问题描述】:

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

通过查看Capybara文档,selenium默认使用firefox浏览器进行测试。它甚至没有提到它使用的是什么版本。 (我没有安装firefox,我认为它与gem一起提供了selenium-webdrivercapybara-webkit

我的问题:

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

2) 自动化功能测试都是在幕后进行的,是否可以将测试过程可视化?例如,Selenium 驱动程序启动浏览器并可视化单击/滚动/拖动效果以及测试运行?

【问题讨论】:

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


【解决方案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 的值,具体取决于测试是否具有 js: true 元数据标记- 见 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

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

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

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

【讨论】:

  • 是的!现在我知道我在哪里感到困惑了,我在我的 gem 文件中看到了selenium-webdriver,我以为我在使用它,但实际上我没有使用 selenium,我实际上是在使用capybara-webkit,这就是为什么没有启动浏览器的原因用我的测试。
  • @GMsoF capybara-webkit 和 poltergeist 都是无头驱动程序,因此无法观看运行测试。他们在他们支持的网络技术方面也都相对落后(例如,不支持 ES5+,尽管 Poltergeist 和 PhantomJS 2.5 稳定时应该是最新的)。如果答案足够完整,请不要忘记接受它(复选标记),这样问题就会被标记为已回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
相关资源
最近更新 更多