我们正在使用Selenium来自动化UI
测试。最近,我们看到大多数用户使用Chrome。因此,我们想知道-使用PhantomJS与Selenium的优缺点:
- 在性能方面是否有任何真正的优势,例如执行测试用例所花费的时间?
- 什么时候应该比Selenium更喜欢PhantomJS?
我们正在使用Selenium来自动化UI
测试。最近,我们看到大多数用户使用Chrome。因此,我们想知道-使用PhantomJS与Selenium的优缺点:
Answers:
他们正在攻击不同的问题。由于PhantomJS可以在命令行上完美运行,因此无论作为开发工作流的一部分还是在持续集成服务器中,它都适合作为烟雾测试的第一层。Selenium面向多个浏览器,因此对于确保跨浏览器的一致性并在不同操作系统之间进行广泛的测试非常有用。
如果您的Web应用程序需要在各种Web浏览器上运行,则仅使用PhantomJS运行UI测试不会获得最多的测试覆盖率。但是,在进行深入测试之前,启动PhantomJS并进行一些基本的健全性检查是完全可以的。想象一下在登录屏幕意外损坏且无法正常运行的情况下测试金融应用程序的疯狂程度!
请注意,最新的PhantomJS对WebDriver的最新支持使两者之间的界限变得有些模糊。现在可以首先使用PhantomJS快速运行测试,然后(假设没有遇到严重的错误)继续在Selenium设置中彻底执行相同的测试。
我目前正在编写一个Web提取框架。我有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 Web驱动程序)。
PhantomJS的准确性比Firefox更好,略低于Chrome,但大约是Firefox的一半。而且,我可以在开发箱上运行它,而不会通过启动多个浏览器来“接管我的机器”,因此我可以继续工作。
我强烈推荐PhantomJS。
利用Selenium和PhantomJS的强大功能 功能PhantomJS具有无头浏览器功能,因此最好将它用作带有硒的浏览器之一(除了IE,Chrome等传统浏览器之外),这种方法的优点:
使用PhantomJS时遇到的挑战:
我的应用程序为Web应用程序定价: