使用Play框架进行多浏览器Selenium/Web Driver测试

3
我之前没有使用过Selenium/WebDriver测试。我知道Play支持使用Selenium,但是内置的支持并不能满足我的期望:
  1. 我希望建立一个自动化构建,可以在多个浏览器/操作系统上运行测试。像SauceLabs这样的网站为您提供了许多不同浏览器的易于访问的方式,并且希望利用它,但据我所知,内置的Selenium测试无法很好地与之配合。
  2. 更普遍的说,似乎内置的测试是用HTML编写的,而不支持使用Java编写测试(Java似乎是更好的选择)。
我试图扩展UnitTest并亲自使用SauceLabs。这似乎效果不错,但我在尝试在多个浏览器上运行同一测试时遇到了障碍。我尝试使用jUnit's Parametrized Tests,但效果并不理想(我不停地出现有关我的测试类拥有太多构造函数的错误消息)。
在Play中编写系统/Selenium测试的最佳实践是什么:
  1. 如何轻松地在连续集成系统的多个浏览器上运行测试?
  2. 如何使用Java,而不是HTML编写测试?

关于无法在Sauce的Java库上运行多浏览器测试,您可以获取此所有浏览器/操作系统组合的JSON,并使用另一个实用程序重新格式化它,将硬编码的浏览器数组“构建”到jUnit测试文件中。这解决了我在PHP库中遇到的类似问题。 - ljs.dev
3个回答

3

谢谢!我一有机会就会看看这个。 (暂时接受答案) - ripper234

0
你不需要做任何特别的事情来使用Play!框架运行Selenium 2/WebDriver测试。只需编写你的RemoteWebDriver测试并从play.test.UnitTest进行扩展。然后,这些测试将由Play! TestRunner执行,并且显然结果将以Play!标准方式保存。

0
这是完全可能的。但是,如果不使用Selenium/WebDriver Grid,要有效地实现这一点是很困难的。默认情况下,许多浏览器只允许在系统上安装一个版本。虽然您可以控制启动哪个浏览器,但无法控制其版本(或者仅限于当前安装的版本)。
使用Grid,您可以利用现有基础设施完成以下步骤:
- 建立一个Hub节点 - 使不同的节点(机器、虚拟机等)连接到此Hub。这些节点都包含不同的浏览器,并且这些“能力”在连接时会向Hub注册。 - 运行测试时,将测试分派到Hub而不是本地浏览器,Hub将尝试在已经在Grid上注册的节点中找到最佳匹配您指定的能力。Grid将执行所有必要的消息编组和解组,以便您可以透明地在Grid上运行测试,并具有与本地运行测试相同的易用性。
有关Grid的更多信息,请参见此处。虽然这些信息与Play框架没有特定关系,但希望对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接