我们正在使用硒来自动化我们的 UI测试。最近我们看到大多数用户都在使用 Chrome。所以我们想知道使用 PhantomJS 和 Selenium 的利弊:
UI
他们在解决不同的问题。由于 PhantomJS 在命令行上运行良好,因此它适合作为冒烟测试的第一层,无论是作为开发工作流程的一部分还是作为持续集成服务器的一部分。Selenium 面向多个浏览器,因此确保跨浏览器的一致性和在不同操作系统之间进行广泛的测试非常有用。
如果您的 Web 应用程序需要在各种 Web 浏览器上运行,那么仅使用 PhantomJS 运行 UI 测试将不会产生最大的测试覆盖率。然而,在进行深入测试之前,启动 PhantomJS 并执行一些基本的健全性检查是完全可行的。想象一下,在测试一个金融应用程序时,登录屏幕无意中出现了故障并且不能正常工作,这是多么疯狂的一件事!
请注意,由于最新的 PhantomJS 中最近支持 WebDriver,这两者之间的界限有点模糊。现在可以首先使用 PhantomJS 快速运行测试,然后(假设没有遇到严重错误)在 Selenium 设置中继续彻底执行相同的测试。
通过最近的 WebDriver 集成(如 Ariya 所说) ,您现在可以使用 Selenium 来驱动 PhantomJS。
这是非常强大的。
您可以在每次签入时通过 CI 在无头 Unix 服务器上运行一组完全自动化的 Selenium 测试(使用 PhantomJS 作为 WebDriver 实现)。然后,如果你想测试浏览器兼容性,你可以通过将底层的 WebDriver 实现更改为 Chrome、 Firefox 等来在本地运行测试。
我目前正在编写一个 Web 抽取框架。我有524个测试,使用 XPath 从250个网站获取数据。最初这个框架使用了一个 HTML 解析器,HTMLCleaner,但是我目前正在研究使用 硒,因为我需要对 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 正在重写 我正在分析失败的原因
也就是说,HtmlUnit 是最快的 Selenium 驱动程序,但它也不可靠。这种不可靠性不仅关系到 Javascript,处理“混乱、肮脏、真实世界”的 HTML 也存在问题,因为标签平衡算法似乎出现了问题。一对夫妇的问题已经提出了这一点,但他们还没有得到修复-见 HTML-UNIT 1423和 HTML-UNIT 1046。
Firefox 是最慢的 Selenium 驱动程序,尽管我正在禁用图像加载和样式表。这是因为它的加载和初始化速度最慢,比 Chrome 慢得多,每次提取失败时,我都需要重新加载驱动程序(在测试中,我创建了一个5个驱动程序的池,以减轻所有 Selenium Web 驱动程序的 URL 检索延迟)。
PhantomJS 比 Firefox 的精确度更高,略低于 Chrome,但大约只有 Firefox 的一半时间。更重要的是,我可以在我的开发箱上运行它,它不会通过启动多个浏览器来“接管我的机器”,这样我就可以继续工作了。
我强烈推荐 PhantomJS。
利用硒和 PhantomJS 的力量 PhantomJS 具有无头浏览器功能,因此可以将其用作具有硒元素的浏览器之一(除了 IE、 Chrome 等传统浏览器之外) 这种方法的优点:
我在使用 PhantomJS 时面临的挑战:
我的应用程序为网络应用程序定价: