2009-07-22 127 views
3

我正在使用java HtmlUnit包提交表单。我能够获取页面并提交表单,但在一页上,我收到一个ScriptException错误。该消息是“无法设置属性”禁用“未定义为”0“HtmlUnit属性未定义脚本错误

我认为这可能是由一个javascript方法试图设置一个变量,但尚未在窗体中声明,但我不是当然。

tempForm = MyPage.getFormByName("menu_form"); 
tempForm.getInputByName("userId").setValueAttribute("myusername"); 
HtmlPage editSubscriberPage = (HtmlPage) 
tempForm.getInputByName("submit_button").click(); 



EcmaError: lineNumber=[824] column=[0] lineSource=[null] name=[TypeError] sourceName=[script in https://labserver.comp.com/mcwebadm/cgi-bin/edit_local.pl?operation=edit&return_address=%2Fmcwebadm%2Fcgi-bin%2Fmenu.pl&selected=2322020c341b11de96c3000423d43f1d from (9, 32) to (840, 15)] message=[TypeError: Cannot set property "disabled" of undefined to "0" (script in https://myserver.company.com/mcwebadm/cgi-bin/edit_local.pl?operation=edit&return_address=%2Fmcwebadm%2Fcgi-bin%2Fmenu.pl&selected=22020c341b11de96c3000423d43f1d from (9, 32) to (840, 15)#824)] 
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot set property "disabled" of undefined to "0" (script in https://labserver.comp.com/mcwebadm/cgi-bin/edit_local.pl?operation=edit&return_address=%2Fmcwebadm%2Fcgi-bin%2Fmenu.pl&selected=22020c341b11de96c3000423d43f1d from (9, 32) to (840, 15)#824) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:534) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:515) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:464) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:992) 
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:164) 
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:177) 
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:584) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement$2.run(HtmlElement.java:936) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:515) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:941) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1237) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:183) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:449) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:329) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:354) 
    at com.gargoylesoftware.htmlunit.html.HtmlForm.submit(HtmlForm.java:179) 
    at com.gargoylesoftware.htmlunit.html.HtmlSubmitInput.doClickAction(HtmlSubmitInput.java:82) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1329) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1288) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1257) 
    at TestOne.run(TestOne.java:77) 
    at TestOne.main(TestOne.java:215) 
+0

是否观看同一页面在浏览器中产生JS错误? – seth 2009-07-23 03:45:13

+0

我只是再次测试它,只是注意到加载的页面确实有一个JS错误。有没有一种方法可以告诉HtmlUnit像ie一样继续处理? – Ben 2009-07-23 18:33:47

回答

3

这是我在正在加载的页面上的一个JavaScript错误。 我设置了

webClient.getOptions()。setThrowExceptionOnScriptError(false);

但它仍抛出异常。

解决方案:如果您捕捉到ScriptException,页面仍然完全加载,您可以继续处理并忽略该异常。 HTML的

例失败:

<html> 
<Head><title>JS Test</title> 
    <script type="text/javascript"> 
     function run_js() 
     { 
       form.myinput.value = "from on body"; 
//    document.myform.myinput.value = "from body"; 
     } 
     </script> 
    </head> 

<body onload="run_js()"> 
    The Body. 
    <form name="myform"> 
     <input name="myinput" type="text"/> 
    </form> 
</body> 
</html> 
0

你能否提供一个公共网站进行测试?由于我无法加载JS中的https://mmlab1msslnx.fmr.com/mcwebadm/cgi-bin/edit_local.pl?operation=edit&return_address=%2Fmcwebadm%2Fcgi-bin%2Fmenu.pl&selected=22020c341b11de96c3000423d43f1d

此外,请使用最新的HtmlUnit 2.5版本。

+0

我无法提供公开的测试用例。我正在创建一个。 我已经检查过,我正在使用版本2.5。 我希望有人看到类似的东西。 – Ben 2009-07-23 18:08:03