我正在尝试使用htmlunit模拟登录。虽然我根据例子编写了我的代码,但我遇到了一个无聊的问题。以下是我从控制台获取的一些消息。
runtimeError: message=[An invalid or illegal selector was specified (selector: '*,:x' error: Invalid selector: *:x).] sourceName=[http://user.mofangge.com/Scripts/inc/jquery-1.10.2.js] line=[1640] lineSource=[null] lineOffset=[0]
WARNING: Obsolete content type encountered: 'application/x-javascript'.
CSS error: 'http://user.mofangge.com/Content/Css/Style1/Main.css' [1:1] Error in style sheet. (Invalid token "\u9518". Was expecting one of: <EOF>, <S>, <IDENT>, "<!--", "-->", <HASH>, <IMPORT_SYM>, <PAGE_SYM>, <MEDIA_SYM>, <FONT_FACE_SYM>, <CHARSET_SYM>, ".", ":", "*", "[", <ATKEYWORD>.)
Aug 11, 2014 1:43:27 下午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
CSS error: 'http://user.mofangge.com/Content/Css/Style1/Login.css' [1:1] Error in style sheet. (Invalid token "\u9518". Was expecting one of: <EOF>, <S>, <IDENT>, "<!--", "-->", <HASH>, <IMPORT_SYM>, <PAGE_SYM>, <MEDIA_SYM>, <FONT_FACE_SYM>, <CHARSET_SYM>, ".", ":", "*", "[", <ATKEYWORD>.)
runtimeError: message=[An invalid or illegal selector was specified (selector: ':input' error: Invalid selector: *:input).] sourceName=[http://user.mofangge.com/Scripts/inc/jquery-1.10.2.js] line=[1275] lineSource=[null] lineOffset=[0]
这是我的代码。我没有任何用处。我不知道为什么会这样,希望得到任何帮助。
WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setTimeout(10000);
DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider)webClient.getCredentialsProvider();
credentialsProvider.addCredentials("username", "password");
HtmlPage page = webClient.getPage(url);
HtmlForm loginForm = page.getFormByName("regform");
HtmlInput username = loginForm.getInputByName("txt_userid");
HtmlInput password = loginForm.getInputByName("txt_userpw");
username.setValueAttribute("username");
password.setValueAttribute("password");
HtmlSubmitInput submit = page.getHtmlElementById("login_btn");
webClient.waitForBackgroundJavaScript(30000);
HtmlPage result = submit.click();
FileWriter writer = new FileWriter("mofang.html");
writer.write(result.getWebResponse().getContentAsString());
writer.close();
答案 0 :(得分:5)
把
webClient.waitForBackgroundJavaScript(30000);
后
HtmlPage result = submit.click()