在 Rails 中进行 Javascript 测试的 Selenium 或 Watir

Posted

技术标签:

【中文标题】在 Rails 中进行 Javascript 测试的 Selenium 或 Watir【英文标题】:Selenium or Watir for Javascript Testing in Rails 【发布时间】:2010-10-02 13:16:11 【问题描述】:

我们在 Rails 应用程序中使用了 RSpec 和 Cucumber,效果很好。 Webrat 非常适合非 AJAX 交互,但我们正准备重新开始为我们的 javascript 编写测试。

Webrat 内置了对 Selenium 的支持,我们之前也使用过 Selenium,但我很好奇是否有人在使用 Watir 和 Cucumber 时取得了良好的效果,以及 Watir 与 Selenium 的优缺点是什么。

【问题讨论】:

【参考方案1】:

作为 OpenQA 和 Selenium RC 的创始人,我显然倾向于将 Selenium 作为一个不错的选择。我们最近刚刚发布了 1.0 beta 2 版本,并且非常接近 1.0 最终版。

但是,Watir/FireWatir 也不会出错。 Adam 关于 WebDriver 将合并形成 Selenium 2.0 的评论是正确的,但他暗示 Watir 不使用本机钩子是不正确的。如果 Watir 只是一个 Selenium 克隆并且还使用了 JavaScript 注入,我会说它不值得一看。

但是因为它有原生的钩子,它可以做一些 Selenium 目前做不到的事情。虽然它支持的浏览器较少,但它在它支持的主浏览器 (IE) 中更深入一些,并允许您控制页面/画布之外的内容。

总而言之:两者都可以,Selenium 很棒,如果您使用 Selenium 再坚持一段时间,您很快就会在 WebDriver/Selenium 2.0 中获得两全其美的效果。

【讨论】:

【参考方案2】:

我通过 JRuby 使用 Cucumber with Celerity 取得了不错的效果。

Celerity 是一个无头浏览器,它使用与 Watir 兼容的 API 封装 htmlUnit,并支持 JavaScript 和 AJAX 测试。

无头可让 Celerity 更快、更容易地集成到持续集成构建周期中。

由于 Celerity 与 Watir 的 API 兼容,因此您可以相当轻松地在 Watir 和 Celerity 之间切换。有一些注意事项,但值得付出努力。

【讨论】:

您可能还想将它与 capybara 一起使用,它可以让您轻松地在 celerity 和 selenium 之间切换。关于它的好文章在这里allenwei.cn/…【参考方案3】:

我会说 Watir 更圆滑,但用处不大。它主要是一个 IE 自动化系统,具有相当不稳定的 Firefox 支持。 (我承认有一段时间没有检查 FireWatir,它可能已经改进了。)

在 Watir 上有对 Selenium-RC 的实验性支持。这绝对是两全其美。

【讨论】:

【参考方案4】:

您可能想试试WebDriver。将来会become part of Selenium。与 JRuby 一起使用。

它与 Selenium、Sahi 或 Watir 的不同之处在于它以原生方式控制浏览器,不使用 JavaScript,并且不受其他解决方案存在的许多问题的影响。

【讨论】:

【参考方案5】:

我试过 Watir,但没有用黄瓜。这是为java应用程序。我们面临的问题是试图确定页面已加载。在找到解决方案之前,我们不得不稍微搜索一下论坛。否则很好。

【讨论】:

【参考方案6】:

Watir 2.0 也将使用 WebDriver。

【讨论】:

【参考方案7】:

如果您想在 Rails 3 上使用 Watir。

您可以使用“watir-webdriver-rails”gem(我是创建者)。

【讨论】:

看起来很可爱。在使用 webrat 或 capybara 进行 rspec 集成测试时,我总是遇到一些问题。我将检查 watir-webdriver-rails gem。 谢谢,我在所有项目中都使用了这个 gem。我希望它对你也有好处。【参考方案8】:

我发现它的 Env-Js http://github.com/smparkes/env-js 的最佳解决方案 它类似于 webrat,但支持 JS

【讨论】:

webrat 怎么样?它们似乎无关。【参考方案9】:

不要忽略像 QUnit 或 Jasmine 这样的东西来对你的 javascript 进行单元测试。如果不出意外,它将减少您必须在 cucumber/selenium/capybara/whatever 中编写的全栈测试的数量

【讨论】:

以上是关于在 Rails 中进行 Javascript 测试的 Selenium 或 Watir的主要内容,如果未能解决你的问题,请参考以下文章

Rails 5 Test Prescriptions 第9章 Testing-JavaScript: Integration Testing

CoffeeScript单元测试?

如何在 Rails 中正确使用 ActiveStorage 进行模型测试?

在 Rails 3.1 中使用 Capybara、Rspec 和 Selenium 进行测试时登录失败

Cucumber (rails 2) 没有加载 jQuery

在 Rails 上使用 javascript 和 ruby​​ 进行地理定位