【问题标题】:Multi-browser Selenium/web driver testing with Play Framework使用 Play 框架进行多浏览器 Selenium/Web 驱动程序测试
【发布时间】:2012-03-22 08:30:57
【问题描述】:

我之前没有任何 Selenium/WebDriver 测试的经验。我知道 Play 开箱即用地支持 Selenium,但坦率地说,内置支持似乎不符合我的期望:

  1. 我想设置一个在多个浏览器/操作系统上运行测试的自动构建。我知道像 SauceLabs 这样的网站可以让您轻松访问许多不同的浏览器,并且希望利用这一点,但从我收集到的信息来看,内置的 Selenium 测试并不能很好地发挥作用。
  2. 更一般地说,内置测试似乎是用 HTML 编写的,并且不支持用 Java 编写测试(在我看来这是一个更好的选择)。

我尝试扩展 UnitTest 并自己使用 SauceLabs。这似乎运作良好,但我在尝试在多个浏览器上运行相同的测试时遇到了障碍。我尝试使用jUnit's Parametrized Tests,但效果不佳(我不断收到关于我的测试类有太多构造函数的错误)。

是否有在 Play 中编写系统/Selenium 测试的最佳实践:

  1. 作为持续集成系统的一部分,是否可以轻松多个浏览器上运行?
  2. 是用 Java 而非 HTML 编写的吗?

【问题讨论】:

  • 关于无法在 Sauce 的 Java 库上运行多浏览器测试,您可以获取此 JSON of all their browser/OS combos 并使用另一个“构建”硬编码浏览器数组的实用程序重新格式化它jUnit 测试文件。这克服了我在 PHP 库中遇到的类似问题

标签: java selenium playframework


【解决方案1】:

我确实开发了这部剧!模块,我认为它也可能对您有用:

https://github.com/miguelrgonzalez/Play--Selenium-webdrive

它仍处于早期阶段,但已经可以使用。

随意分叉!

【讨论】:

  • 谢谢!当我有机会时,我一定会看看这个。 (暂时接受答案)
【解决方案2】:

这当然是可能的。但是,如果不使用 Selenium/WebDriver Grid,很难有效地实现这一点。默认情况下,许多浏览器只允许在系统上安装它们自己的一个版本。虽然您可以控制启动哪个浏览器,但您无法控制哪个版本(或者您仅限于当前安装的版本)。

使用网格,您可以通过以下步骤利用现有基础架构:

  • 建立Hub节点
  • 让不同的节点(机器、虚拟机等)连接到此 Hub。这些节点各自包含不同的浏览器,并且这些“功能”在连接时注册到 Hub。
  • 运行测试时,不要在本地浏览器上运行它,而是将测试分派到集线器,集线器将尝试在已在网格上注册的节点中找到与您指定的功能的最佳匹配。 Grid 将执行所有必要的消息来回编组,以便您可以透明地在 Grid 上运行测试,并且与在本地执行测试一样易于使用。

有关网格的更多信息,请参阅here。虽然这些信息与 Play 框架没有特别的关系,但希望它会有所帮助。

【讨论】:

    【解决方案3】:

    您无需执行任何特殊操作即可使用 Play 运行 Selenium 2/WebDriver 测试!框架。

    只需编写您的 RemoteWebDriver 测试并从 play.test.UnitTest 扩展它们。然后,这些测试将由 Play 执行! TestRunner,显然,结果将保存在 Play!标准方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多