使用Play Framework进行多浏览器Selenium / web驱动程序测试

时间:2012-03-22 08:30:58

标签: java selenium playframework

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

  1. 我想设置一个自动构建,在多个浏览器/操作系统上运行测试。我知道像SauceLabs这样的网站可以让你轻松访问许多不同的浏览器,并希望利用它,但从我收集到的内置Selenium测试中,它不会很好用。
  2. 更一般地说,似乎内置的测试是用HTML编写的,并且不支持用Java编写测试(在我看来这似乎是一个更好的选择)。
  3. 我尝试自己扩展UnitTest并使用SauceLabs。这似乎运作良好,但我遇到了试图在多个浏览器上运行相同测试的障碍。我尝试使用jUnit's Parametrized Tests,但是效果不好(我的测试类中包含太多构造函数的错误)。

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

    1. 轻松多个浏览器上运行持续集成系统
    2. 是用Java编写的,而不是HTML?

3 个答案:

答案 0 :(得分:3)

我确实开发了这个游戏!模块,我认为也可能适合你:

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

它仍然处于一个非常早期的阶段,但它已经在运作。

随意分叉!

答案 1 :(得分:0)

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

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

  • 建立集线器节点
  • 让不同的节点(计算机,虚拟机等)连接到此集线器。这些节点每个都包含不同的浏览器,这些“功能”在连接时注册到Hub。
  • 运行测试时,不是针对本地浏览器运行测试,而是将测试分派给Hub,Hub将尝试找到您在Grid上注册的节点中指定的功能的最佳匹配。 Grid将来回执行所有必要的消息编组,这样您就可以透明地运行Grid上的测试,并且具有与本地操作相同的易用性。

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

答案 2 :(得分:0)

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

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