AngularJs使用Java编写的现有Selenium测试进行端到端测试

时间:2014-02-14 00:40:12

标签: java javascript angularjs selenium protractor

鉴于一个网站现有大量用 Java 编写的测试用例,使用Selenium作为网站,并且该网站正在AngularJs中重写,如何整合Selenium测试进入新的应用程序?

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

尽管我想在Javascript中编写测试,但我希望避免重写,因此集成现有的方法会很好。 Protractor中是否有配置可以实现这一点?

1 个答案:

答案 0 :(得分:1)

我担心这里没有好的解决方案。你的方式有很多障碍。

  1. Protractor是用JavaScript编写的,是Selenium的WebDriverJS实现的包装器。鉴于WebDriverJS使用与Java WebDriver非常不同的API(由于节点的异步性质),即使技术上可以获得一个节点库来包装Java库,在这种情况下也不会起作用。 / LI>
  2. 量角器和Selenium不支持相同的API,所以即使有基于Java的量角器,你也会发现自己做了一些重组。
  3. 如果您正在利用Angular,那么虽然您的页面的整体行为可能与底层DOM结构相同,但不会如此。无论是这个还是你都没有充分利用Angular。因此,除非你有一个非常好的页面对象抽象层,否则你将不得不重写你的测试。如果你确实有一个好的页面对象层,你将需要在任何情况下重写该层。
  4. 在我看来,你最好的是如下:

    如果您的规范本身是用更高级别的规范语言编写的,比如Cucumber,那么至少在理论上,那些可以使用cucumber-js移植到javascript,你可以简单地重新实现基础定义(不是小任务)在量角器之上。

    如果看起来比在javascript中重写测试更省力,你可以真正雄心勃勃并将端口量角器转换为Java。然后,您可以自由地将问题#2最小化,但我仍然认为#3会让您得出结论,将您的测试移植到javascript具有较低的LOE。