【发布时间】:2015-06-14 08:57:11
【问题描述】:
我正在尝试在 Linux 机器上运行 selenium webdriver。所以我尝试使用 HtmlUnitDriver 来实现这一点。
执行 jquery 时出现以下错误。
TypeError: Cannot find function addEventListener in object [object HTMLDocument]. (http://localhost/xxx/js_lib/jquery2/jquery-2.1.0.min.js#2)
当HtmlunitDriver在没有以下任何浏览器版本的情况下使用时会发生上述异常,
HtmlUnitDriver driver = new HtmlUnitDriver();
driver.setJavascriptEnabled(true);
由于以下原因,junit 测试用例也失败了,
org.openqa.selenium.NoSuchElementException: Unable to locate element with ID: abcde
如果我通过如下浏览器版本,
HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_38);
driver.setJavascriptEnabled(true);
测试用例正在通过,但在控制台中抛出异常,例如,
SEVERE: Job run failed with unexpected RuntimeException: Exception invoking Window.getComputedStyle() with arguments [Text, String]
======= EXCEPTION START ========
Exception class=[java.lang.IllegalArgumentException]
com.gargoylesoftware.htmlunit.ScriptException: Exception invoking Window.getComputedStyle() with arguments [Text, String]
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:847)
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:513)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:779)
at com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest.setState(XMLHttpRequest.java:233)
at com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest.doSend(XMLHttpRequest.java:762)
at com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest.access$000(XMLHttpRequest.java:104)
at com.gargoylesoftware.htmlunit.javascript.host.xml.XMLHttpRequest$1.run(XMLHttpRequest.java:623)
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:513)
at com.gargoylesoftware.htmlunit.javascript.background.JavascriptXMLHttpRequestJob.run(JavascriptXMLHttpRequestJob.java:36)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl.runSingleJob(JavaScriptJobManagerImpl.java:415)
at com.gargoylesoftware.htmlunit.javascript.background.DefaultJavaScriptExecutor.run(DefaultJavaScriptExecutor.java:167)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.IllegalArgumentException: Exception invoking Window.getComputedStyle() with arguments [Text, String]
at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:193)
at net.sourceforge.htmlunit.corejs.javascript.FunctionObject.call(FunctionObject.java:449)
at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1536)
at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798)
at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:411)
at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:309)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3286)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$4.doRun(JavaScriptEngine.java:772)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:832)
... 13 more
Caused by: java.lang.IllegalArgumentException: java.lang.ClassCastException@4d3015e7
at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:153)
... 22 more
我有以下问题列表,
- 要在 HtmlUnitDriver 中使用 firefox 浏览器,我需要在 Linux 机器上安装 firefox 吗?
- 为什么会抛出上述异常?
- 是否有任何选项可以在没有 GUI 的 lunix 机器上运行 selenium?
我是 selenium 的初学者,需要您对此提出宝贵的意见。谢谢
【问题讨论】:
-
嗨.. 有什么建议吗?
标签: java linux selenium selenium-webdriver htmlunit-driver