Casperjs / PhantomJs与Selenium

我们使用Selenium来自动化我们的UI测试。 最近我们看到大部分使用Chrome的用户。 所以我们想知道 - 使用PhantomJS和Selenium的优缺点:

  • 在性能方面是否有真正的优势,例如执行测试用例所需的时间?
  • 什么时候应该选择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?