Casperjs / PhantomJs与Selenium
我们使用Selenium来自动化我们的UI
测试。 最近我们看到大部分使用Chrome的用户。 所以我们想知道 - 使用PhantomJS和Selenium的优缺点:
他们正在攻击不同的问题。 由于PhantomJS在命令行上完美运行,因此它适合作为第一层烟雾测试,无论是作为开发工作流程的一部分和/或连续集成服务器。 Selenium以多个浏览器为目标,因此确保跨浏览器一致性并跨不同操作系统进行大量测试非常有用。
如果您的Web应用程序需要在各种Web浏览器上运行,仅使用PhantomJS运行UI测试将不会产生最大的测试覆盖率。 但是,在进行深入测试之前启动PhantomJS并进行一些基本的理性检查是完全正确的。 想象一下在测试金融应用程序时疯狂的情况,登录屏幕无意间被破坏并且无法使用!
请注意,两者之间的界限随着最近PhantomJS中最新的WebDriver支持而略有模糊。 现在可以先使用PhantomJS快速运行测试,然后(假设没有遇到严重错误)继续在Selenium设置中执行相同的测试。
随着最近的WebDriver集成(正如Ariya指出的那样),您现在可以使用Selenium来驱动PhantomJS。
这是非常强大的。
您可以在每台登机手续上通过无人Unix服务器上的配置项运行一系列全自动Selenium测试(使用PhantomJS作为WebDriver实施)。 然后,如果你想测试浏览器兼容性,你可以通过改变底层的WebDriver实现到Chrome,Firefox等来在本地运行你的测试。
我目前正在编写一个网页提取框架。 我有524个测试使用XPath从250个网站获取数据。 最初,框架使用了HTML解析器HTMLCleaner,但我目前正在研究使用Selenium,因为我需要Javascript支持。 我已经针对HtmlUnit,Chrome,Firefox和PhantomJS驱动程序运行了测试。 下面是每种方法所花费的时间和失败次数的比较:
Failures Time (secs)
HtmlCleaner 0 82
HtmlUnit 169 102
Google Chrome 38 562
Firefox 46 1159
PhantomJS 40 575
一些评论:
在某些情况下,“失败”可能根本不是失败,可能是因为Javascript正在重写DOM,提取器失败。 我正在分析失败以找出原因。
也就是说,HtmlUnit是最快的Selenium驱动程序,但它也不可靠。 这种不可靠性不仅仅涉及Javascript,还有处理“杂乱,脏,现实世界”HTML的问题,因为在标签平衡算法中某些东西似乎被破坏了。 关于这个问题已经提出了一些问题,但是它们还没有被修复 - 参见HTML-UNIT 1423和HTML-UNIT 1046。
Firefox是最慢的Selenium驱动程序,尽管我正在禁用图像加载和样式表。 这是因为它加载和初始化速度最慢,比Chrome慢得多,并且每次提取失败时都需要重新加载驱动程序(在测试中,我创建了一个包含5个驱动程序的缓冲池,以缓解所有网址的URL检索延迟Selenium网络驱动程序)。
PhantomJS的实现比Firefox更精确,略低于Chrome,但在Firefox的一半左右。 更重要的是,我可以在我的开发箱上运行它,它不会通过启动多个浏览器来“接管我的机器”,因此我可以继续工作。
我会强烈推荐PhantomJS。
链接地址: http://www.djcxy.com/p/73475.html上一篇: Casperjs/PhantomJs vs Selenium
下一篇: How to implement a good Pronoun Resolver algorithm in OpenNLP?