java - 使用用 Java 编写的现有 Selenium 测试的 AngularJs 端到端测试

标签 java javascript angularjs selenium protractor

给定一个站点,该站点具有大量用 Java 编写并使用 Selenium 的站点,并且该站点正在用 AngularJs 重写,如何集成 Selenium 测试进入新应用程序?

我调查了Protractor ,新推荐的使用 Selenium 的端到端测试运行器,但是,这似乎建议使用 Javascript 编写测试。 This article详细介绍了如何使此设置正常工作,但同样,测试是用 Javascript 编写的。

尽管我很想用 Javascript 编写测试,但我想避免重写,因此最好有一种方法来集成现有的测试。 Protractor 中是否有可以实现这种情况的配置?

最佳答案

恐怕这里没有适合您的解决方案。你的道路上有许多障碍。

  1. Protractor 是用 JavaScript 编写的,是 Selenium 的 WebDriverJS 实现的包装器。鉴于 WebDriverJS 使用与 Java WebDriver 截然不同的 API(由于节点的异步特性),即使在技术上有可能获得节点库来包装 Java 库,但在这种情况下也行不通。
  2. Protractor 和 Selenium 不支持相同的 API,因此即使有基于 Java 的 Protractor,您还是会发现自己需要进行一些重组。
  3. 如果您使用的是 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/

相关文章:

java - 单链表的 addToRear 方法

java - 无法启动jdk 1.8.0_65-b17

javascript - 未捕获( promise )SyntaxError : Unexpected end of JSON input

javascript - Angular 播放按钮未在音频完成时更新

angularjs - 输入时未验证 Angular ui-bootstrap datepicker 思维

java - 异常 : java. lang.ClassNotFoundException : javax.activation.DataHandler 即使 javax.mail.jar 位于类路径下?

java - 如何让一个函数循环一段时间

javascript - 删除谷歌地图数据层顶点

javascript - Angularjs:在数组上映射 Angular 过滤器

angularjs - 重新打开并向已引导的应用程序添加依赖项