HTMLUnit - 点击链接不起作用

时间:2016-01-15 06:19:22

标签: java html htmlunit

目标:使用HTMLUnit和Java访问网页并在链接上自动点击

我尝试了什么:尝试点击"关于" google.com网站上的链接。

代码:

import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class autoPEC {
    public static void main(String[] args) throws IOException, URISyntaxException{
        WebClient webClient = new WebClient();
        HtmlPage currentPage = webClient.getPage("http://www.google.com/");
        HtmlAnchor advancedSearchAn = currentPage.getAnchorByText("About");
        currentPage = advancedSearchAn.click(); 
    }
}

结果:错误

  

2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.javascript.host.html.HTMLElement jsxFunction_addBehavior   警告:未实现的行为:#default #userdata   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:546]表达式错误。无效的令牌" ="。期待以下之一:," /"," - ",?,")" ,,"继承", ,,,,,,,,,,,,,,,,,,,。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:552]样式规则出错。无效的令牌"位置"。期待以下之一:"}",";"。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:552]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:859]表达式错误。无效的令牌" ="。期待以下之一:," /"," - ",?,")" ,,"继承", ,,,,,,,,,,,,,,,,,,,。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:1419]样式规则出错。令牌无效":"。期待以下之一:,"}",&#34 ;;"," /"," - " ,,, ,"!","继承" ,,,,,,,,,,,,,,,,,,,,,,。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:1419]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:2203]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:2203]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:2543]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:2543]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:2616]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:2616]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:3194]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:3194]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:3701]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:3701]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:3761]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:3761]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:4196]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:4196]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:4960]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:4960]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:5610]伪类或元素出错。令牌无效":"。期待以下之一:,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:5610]忽略整个规则。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:6103]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:6103]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:6338]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:6338]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:6593]表达式错误。无效的令牌" ="。期待以下之一:," /"," - ",?,")" ,,"继承", ,,,,,,,,,,,,,,,,,,,。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:6781]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:6781]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:6938]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:6938]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:7010]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:7010]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:7352]样式规则出错。无效的令牌" "。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:7352]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[2:199]样式规则出错。令牌无效" *"。期待以下之一:,"}",&#34 ;;" ,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[2:199]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[2:1082]伪类或元素出错。令牌无效":"。期待以下之一:,.   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[2:1082]忽略整个规则。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[2:1691]样式规则出错。令牌无效":"。期待以下之一:,"}",&#34 ;;"," /"," - " ,,, ,"!","继承" ,,,,,,,,,,,,,,,,,,,,,,。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[2:1691]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:[1:685]样式规则出错。令牌无效":"。期待以下之一:,"}",&#34 ;;"," /"," - " ,,, ,"!","继承" ,,,,,,,,,,,,,,,,,,,,,,。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:[1:685]忽略此规则中的以下声明。   2016年1月15日上午10:17:15 com.gargoylesoftware.htmlunit.javascript.host.html.HTMLElement jsxFunction_addBehavior   警告:未实现的行为:#default #userdata   线程" main"中的例外情况com.gargoylesoftware.htmlunit.ElementNotFoundException:elementName = [a] attributeName = [] attributeValue = [About]       在com.gargoylesoftware.htmlunit.html.HtmlPage.getAnchorByText(HtmlPage.java:550)       在autoPEC.main(autoPEC.java:12)

问题:任何人都可以告诉我我做错了什么以及如何纠正这个错误? 请注意,我是HTMLUnit的新手

2 个答案:

答案 0 :(得分:0)

在为WebClient创建新实例后,通过添加以下行禁用javascript。

webClient.getOptions().setJavaScriptEnabled(false);

然后再试一次。这应该有用。

答案 1 :(得分:0)

您需要为WebClient构造函数指定浏览器,否则您将无法连接到该页面。添加此代码(指定浏览器并删除HtmlUnit日志):

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);

WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);

HtmlPage currentPage = webClient.getPage("http://www.google.com/");
HtmlAnchor advancedSearchAn = currentPage.getAnchorByText("About");
currentPage = advancedSearchAn.click();