给定一个站点,该站点具有大量用 Java 编写并使用 Selenium 的站点,并且该站点正在用 AngularJs 重写,如何集成 Selenium 测试进入新应用程序?
我调查了Protractor ,新推荐的使用 Selenium 的端到端测试运行器,但是,这似乎建议使用 Javascript 编写测试。 This article详细介绍了如何使此设置正常工作,但同样,测试是用 Javascript 编写的。
尽管我很想用 Javascript 编写测试,但我想避免重写,因此最好有一种方法来集成现有的测试。 Protractor 中是否有可以实现这种情况的配置?
最佳答案
恐怕这里没有适合您的解决方案。你的道路上有许多障碍。
- Protractor 是用 JavaScript 编写的,是 Selenium 的 WebDriverJS 实现的包装器。鉴于 WebDriverJS 使用与 Java WebDriver 截然不同的 API(由于节点的异步特性),即使在技术上有可能获得节点库来包装 Java 库,但在这种情况下也行不通。
- Protractor 和 Selenium 不支持相同的 API,因此即使有基于 Java 的 Protractor,您还是会发现自己需要进行一些重组。
- 如果您使用的是 Angular,那么虽然您页面的整体行为可能相同,但底层 DOM 结构等将不同。要么是这样,要么是您严重未能利用 Angular。因此,除非你有一个非常好的页面对象抽象层,否则你将不得不重写你的测试。如果您确实有一个好的页面对象层,您将需要在任何情况下重写该层。
在我看来,你最好的是:
如果您的规范本身是用更高级的规范语言编写的,例如 Cucumber,那么至少在理论上,可以使用 cucumber-js 将这些规范移植到 javascript,并且您可以简单地重新实现底层定义(这不是一项小任务)在 Protractor 之上。
如果这看起来比用 javascript 重写测试更省力,那么您可以雄心勃勃地将 Protractor 移植到 Java。然后您可以自由地将上面的问题 #2 最小化,但我仍然认为 #3 会让您得出结论,将测试移植到 javascript 具有较低的 LOE。
关于java - 使用用 Java 编写的现有 Selenium 测试的 AngularJs 端到端测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21768688/