我已经研究了Protractor,这是一个使用Selenium的新推荐的端到端测试运行器,但是,这似乎建议用Javascript编写测试. This article详细介绍了如何使这个设置正常工作,但同样,测试是用Javascript编写的.
尽管我想在Javascript中编写测试,但我想避免重写,因此将现有的集成方法集成起来会很好. Protractor中是否有配置可以实现这一点?
解决方法
> Protractor是用JavaScript编写的,是Selenium的WebDriverJS实现的包装器.鉴于WebDriverJS使用与Java WebDriver非常不同的API(由于节点的异步性质),即使技术上可以获得包装Java库的节点库,在这种情况下它也不起作用.
>量角器和Selenium不支持相同的API,所以即使有基于Java的量角器,你也会发现自己做了一些重组工作.
>如果您正在利用Angular,那么虽然您的页面的整体行为可能与底层DOM结构相同,但不会如此.无论是这个还是你都没有充分利用Angular.因此,除非你有一个非常好的页面对象抽象层,否则你将不得不重写你的测试.如果确实有一个好的页面对象层,则需要在任何情况下重写该层.
在我看来,你最好的最好的如下:
如果您的规范本身是用更高级别的规范语言(如Cucumber)编写的,那么理论上至少可以使用cucumber-js将其移植到javascript中,您可以简单地重新实现底层定义(不是小任务).量角器.
你可以真正雄心勃勃地将端口量角器转换为Java,如果它似乎比在javascript中重写你的测试更省力.然后,您可以自由地将问题#2最小化,但我仍然认为#3会让您得出结论,将您的测试移植到javascript具有较低的LOE.