zoukankan      html  css  js  c++  java
  • 如何解决Selenium中"Cannot find function addEventListener in object [object HTMLDocument]"的错误

    project: blog
    target: how-to-resolve-cannot-find-function-addEventListener-error-in-selenium.md
    status: publish
    date: 2016-04-28
    update: 2016-04-28
    tags: 
      - Selenium
      - Java
      - JavaScript
      - HTMLUnit
    categories: 
      - Selenium
    

    今天遇到一个很坑爹的问题,某Selenium自动化用例老是失败,报错如下:

    1) AppTests***********
    FacebookWebDriverExceptionUnknownServerException: TypeError: Cannot find function addEventListener in object [object HTMLDocument]. (http://**********/*)
    Failed to take screen-shot: org.openqa.selenium.htmlunit.HtmlUnitDriver cannot be cast to org.openqa.selenium.TakesScreenshot
    

    Google了下这个错误,发现暂时没有适合我的解决方案:

    1. 有的方案建议换firefox来测试 -- 可是我们的这个自动化用例是要跑在一台linux服务器上,装firefox不现实
    2. 有点方案建议禁用js -- 可是现在这个页面越来越复杂,js禁用的话就侧不起来了,没意义
    3. 有点方案建议换PhantomJs -- 这个PhantomJs确实不会报这个错误,以前也用过,但是PhantomJs速度太慢,也是坑

    怎么办呢?本来想到HtmlUnit的官方网站上反馈这个bug,结果一搜,已经有人反馈过这个bug了: https://sourceforge.net/p/htmlunit/bugs/1536/. 这个状态为closed,说明已经解决了!

    那为啥还报这个错误呢?怀疑是Selenium引用的HtmlUnit版本太低导致的。我使用的Seleniumselenium-server-standalone-2.52.0.jar, 目前最新版本的Selenium2.53.0,然而不能升级到2.53.0,因为2.53.0中没有自带HtmlUnit.

    咋办呢?幸好懂那么一丢丢Java —— 下载个HtmlUnit的最新版本,然后重新打包selenium-server-standalone-2.52.0.jar我是不会啦,不过可以指定下classloader的加载路径:

    java -Djava.ext.dirs=./lib -jar selenium-server-standalone-2.52.0.jar
    

    ./lib就是放HtmlUnit的一堆jar文件的目录。这样子classloader加载HtmlUnit的类的时候就会使用./lib里面的了,就不会使用selenium-server-standalone-2.52.0.jar中的老版本中的了。

    以此配置重新启动下Selenium的服务,然后再运行对应的测试用例,果然一切OK了。

    完事,收工~

  • 相关阅读:
    (转载)C++ string中find() ,rfind() 等函数 用法总结及示例
    UVA 230 Borrowers (STL 行读入的处理 重载小于号)
    UVA 12100 打印队列(STL deque)
    uva 12096 The SetStack Computer(STL set的各种库函数 交集 并集 插入迭代器)
    uva 1592 Database (STL)
    HDU 1087 Super Jumping! Jumping! Jumping!
    hdu 1176 免费馅饼
    HDU 1003 Max Sum
    转战HDU
    hust 1227 Join Together
  • 原文地址:https://www.cnblogs.com/pcy0/p/ru-he-jie-jueSelenium-zhongCannot-find-function-ad.html
Copyright © 2011-2022 走看看