2011-03-09 84 views
3

我在点击htmlunit中的链接时遇到问题。我浏览了网站上的api(我并不是很了解它),并查看了我可以找到的所有示例代码,并且点击链接仍然存在问题。努力点击htmlunit中的链接

这里的错误讯息的顶部(其相当大的,如果你想我可以提交全部)

"page2 = link2.click() Exception class=[net.sourceforge.htmlunit.corejs.javascript.JavaScriptException] com.gargoylesoftware.htmlunit.ScriptException: Sys.ArgumentOutOfRangeException: Sys.ArgumentOutOfRangeException: Value must be an integer. Parameter name: x Actual value was Infinity. " 

的第一个页面加载罚款,但是当我点击第二个链接,我得到这个错误(链接是javascript)。下面是我的代码

 page = webclient.getPage(url) 
    anchors1 = page.getAnchors() 
    for anchor in anchors1: 
     if anchor.asText() == "2": 
      link2 = anchor 
      break 
    page2 = link2.click() 

部分如果我做一个打印LINK2我得到:HtmlAnchor[<a href="javascript:__doPostBack('ctl00$MainContent$gvSearchResults','Page$2')">]

起初我以为也许是的HtmlAnchor是一个问题,我不得不删除,但后来我看了看其他的示例代码他们似乎有他们的链接最终以相同的格式,它的作品。

所以困惑..请帮助:-)

在此先感谢!

回答

1

问题不在于用来点击链接的代码。它是在单击链接时执行的JavaScript中。无论JavaScript是错误的,还是由HtmlUnit使用的JavaScript解释器在运行时都有问题。

该问题似乎与执行期间具有Infinity值的参数x有关。

+0

那不太好。我完全不走运,还是有其他事情可以做?我做了很多工作,并且很糟糕,下一页点击可能会导致这个项目无法继续。有没有办法让JavaScript表现更好?或一些设置,让htmlunit的JavaScript解释器表现更好?甚至加载另一个JavaScript引擎(Google的v8,mozilla spidermonkey等)。 – Lostsoul 2011-03-09 17:40:56

+1

我想出了它!好极了。我担心我的项目会失败,但基本上我必须设置webclient = WebClient(BrowserVersion.FIREFOX_3_6)我之前将它设置为IE7,它不起作用。我猜这个网站的行为与不同的浏览器标题有所不同。 – Lostsoul 2011-03-09 18:02:56