0

我正在尝试开始使用 Webdriver 和无头浏览器,但遇到了一些困难。不幸的是,我不能分享我所有的代码,但我可以展示我是如何设置它的。因此,让我在此之前先说我尝试实现的基本用例是我使用 chrome 驱动程序实现的,以确保它不是像糟糕的 xpath 这样更普通的东西,并且脚本运行良好。下面是我初始化 htmlunit 的方式,下面是出现的许多错误中的一些

HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.CHROME)   
driver.setJavascriptEnabled(true)

在我的登录页面上使用 htmlunit 驱动程序就像一个冠军,一旦我进入应用程序的主页,但是事情就崩溃了。

SEVERE: Job run failed with unexpected RuntimeException: TypeError: Cannot call method     "add" of undefined (http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js#12)
======= EXCEPTION START ========
EcmaError: lineNumber=[12] column=[0] lineSource=[null] name=[TypeError] sourceName=    [http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js] message=[TypeError: Cannot     call method "add" of undefined (http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js#12)]
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot call method "add" of     undefined (http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js#12)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:684)
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:616)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:591)
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:985)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptFunctionJob.runJavaScript(JavaScriptFunctionJob.java:53)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutionJob.run(JavaScriptExecutionJob.java:102)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl.runSingleJob(JavaScriptJobManagerImpl.java:328)
at com.gargoylesoftware.htmlunit.javascript.background.DefaultJavaScriptExecutor.run(DefaultJavaScriptExecutor.java:162)
at java.lang.Thread.run(Unknown Source)
Caused by: net.sourceforge.htmlunit.corejs.javascript.EcmaError: TypeError: Cannot call method "add" of undefined (http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js#12)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3603)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3587)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3608)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3624)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.undefCallError(ScriptRuntime.java:3638)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2195)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2189)
at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1333)
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:405)
at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:309)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3031)
at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:103)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$4.doRun(JavaScriptEngine.java:609)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:669)
... 10 more
Enclosed exception: 
net.sourceforge.htmlunit.corejs.javascript.EcmaError: TypeError: Cannot call method     "add" of undefined (http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js#12)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3603)
at     net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3587)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3608)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3624)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.undefCallError(ScriptRuntime.java:3638)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2195)
at    net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2189)
at     net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1333)
at script(http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js:12)
at script.Og(http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js:105)
at script.Pg(http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js:105)
at script(http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js:115)
at script(http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js:108)
at script.Tg(http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js:105)
at script(http://s.ytimg.com/yts/jsbin/www-embed-player-vfl2yUXMY.js:117)
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:405)
at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:309)
at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3031)
at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:103)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$4.doRun(JavaScriptEngine.java:609)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:669)
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:602)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:616)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:591)
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:985)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptFunctionJob.runJavaScript(JavaScriptFunctionJob.java:53)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutionJob.run(JavaScriptExecutionJob.java:102)
at com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl.runSingleJob(JavaScriptJobManagerImpl.java:328)
at com.gargoylesoftware.htmlunit.javascript.background.DefaultJavaScriptExecutor.run(DefaultJavaScriptExecutor.java:162)
at java.lang.Thread.run(Unknown Source)
== CALLING JAVASCRIPT ==

 function () {
      Tg(d, b);
  }

除此之外,我还收到大量这样的警告:

2013 年 11 月 19 日下午 1:51:42 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler 警告

我怀疑由于所有这些错误,我的javascript实际上没有加载。为了验证这一点,我在使用 Chrome 运行测试时在我的主页上获取了页面源,然后对 HtmlUnit 做了同样的事情,这证实了我的怀疑。javascipts 生成的 html 都不存在。我们的网站使用 JQuery、Knockout 和其他几个插件,所有这些库都很常见,当我运行应用程序时,它们都不是 chrome 驱动程序的问题或在开发工具控制台中引发任何类型的错误。任何帮助将不胜感激。

4

0 回答 0