我在使用HtmlUnit时遇到问题。
我认为该网站包含一些错误的JavaScript代码,这对Firefox或Chrome来说不是问题,但对HtmlUnit来说是一个问题。
当我从下面执行Java代码时,它抛出了异常,我也在下面提到了。
我已经尝试过:
client.getOptions()。setThrowExceptionOnFailingStatusCode(false); client.getOptions()。setThrowExceptionOnScriptError(false);
效果很好,我再也没有出现异常,但是我再也无法执行任何JavaScript代码了。
page.executeJavaScript(javaScriptCode)
从现在开始,每个javascript请求都会导致无用的值,甚至没有更改页面。
我只想执行Java代码而不会出现异常。
我希望有人能够帮助我。
我的Java代码
WebClient client = new WebClient();
client.getOptions().setJavaScriptEnabled(true);
HtmlPage page = client.getPage("xxx");
网页中的部分javascript代码
function checkDeptLogin() {
if (logintextboxvalidate == "_Dept_login")
{
visibleaccount();
}
document.getElementById('leftcolmnmain').style.display = 'block'; //Line 168
document.getElementById('stapleid').style.display = 'none';
if (document.getElementById('postlstinfoid') != null)
{
document.getElementById('postlstinfoid').style.display = 'none';
}
}
document.write('<div id = "leftcolmnmain" style="display:none">'); //Line 1778
EcmaError:lineNumber = [168]列= [0] lineSource = [null] 名称= [TypeError] sourceName = [来自xxx / startwlm / Start_Wlm.htm中的脚本 (23,54)到(223,10)]消息= [TypeError:无法读取属性 空的“样式”(来自(23,54)的xxx / startwlm / Start_Wlm.htm中的脚本 至(223,10)#168)] com.gargoylesoftware.htmlunit.ScriptException: TypeError:无法从null中读取属性“样式”(脚本位于 xxx / startwlm / Start_Wlm.htm从(23,54)到(223,10)#168)
答案 0 :(得分:0)
您正在尝试访问尚未插入DOM的元素的样式。考虑在添加后对其进行访问。
答案 1 :(得分:0)
您需要确保 document.write(''); 跑之前 document.getElementById('leftcolmnmain')。style.display ='block'; 代码行,否则将抛出异常,如您所见 document.getElementById('leftcolmnmain') 则为null。
答案 2 :(得分:0)
在不知道页面(并且无法复制)的情况下,我只能给出一些一般性提示:
最后是为什么您使用js单击-您可以直接从java / Htmlunit触发click()