繁体   English   中英

HTMLUnit-单击链接不起作用

[英]HTMLUnit - Clicking on link does not work

目的 :访问网页并使用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]样式规则错误。 令牌无效 ”:”。 期望以下之一:,“}”,“;”,“ /”,,“-”,,,,“!”,“继承”,,,,,,,,,,,,,,,,, ,,,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 无效的令牌“ ”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 令牌无效 ”*”。 期望以下之一:,“}”,“;”,。 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]样式规则错误。 令牌无效 ”:”。 期望以下之一:,“}”,“;”,“ /”,,“-”,,,,“!”,“继承”,,,,,,,,,,,,,,,,, ,,,。 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]样式规则错误。 令牌无效 ”:”。 期望以下之一:,“}”,“;”,“ /”,,“-”,,,,“!”,“继承”,,,,,,,,,,,,,,,,, ,,,。 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 = [关于],位于com.gargoylesoftware.htmlunit.html.HtmlPage.getAnchorByText(HtmlPage.java:550),位于autoPEC.main(autoPEC.java:12)

问题 :谁能告诉我我做错了什么以及如何纠正? 请注意,这是HTMLUnit的新功能

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

webClient.getOptions().setJavaScriptEnabled(false);

然后再试一次。 这应该工作。

您需要为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(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM