最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

java - Clicking on javascript anchor with htmlunit does not seem to work - Stack Overflow

programmeradmin2浏览0评论

I am using htmlunit to automatically go through a website. Here is the problem:

I want to click on an anchor in order to display a new page of a given table.

Here is the anchor:

<a href="javascript:__doPostBack('GridView1','Page$7')">7</a>

Here is my code:

final HtmlAnchor a = page2.getAnchorByText("7");
HtmlPage page3 = a.click();
System.out.println(page2.getWebResponse().getContentAsString())
System.out.println(page3.getWebResponse().getContentAsString());

I do not have any error message. When I pare my print out, they are identical, and yet they shouldn't be, as I just clicked on an anchor. First print out should display a certain page of the table, a the second print out another one.

The stackoverflow post struggling to click on link within htmlunit renders a very similar problem, however his solution (setting the browser version to the webclient) does not appear to work in my case.

I am using htmlunit to automatically go through a website. Here is the problem:

I want to click on an anchor in order to display a new page of a given table.

Here is the anchor:

<a href="javascript:__doPostBack('GridView1','Page$7')">7</a>

Here is my code:

final HtmlAnchor a = page2.getAnchorByText("7");
HtmlPage page3 = a.click();
System.out.println(page2.getWebResponse().getContentAsString())
System.out.println(page3.getWebResponse().getContentAsString());

I do not have any error message. When I pare my print out, they are identical, and yet they shouldn't be, as I just clicked on an anchor. First print out should display a certain page of the table, a the second print out another one.

The stackoverflow post struggling to click on link within htmlunit renders a very similar problem, however his solution (setting the browser version to the webclient) does not appear to work in my case.

Share Improve this question edited May 23, 2017 at 11:47 CommunityBot 11 silver badge asked Sep 1, 2012 at 9:22 user1190900user1190900 851 silver badge6 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

Maybe you need to wait for the javascript to excute and load first. I suggest to use the following mand:

webClient.waitForBackgroundJavaScript(1000);

or even:

JavaScriptJobManager manager = page.getEnclosingWindow().getJobManager();
while (manager.getJobCount() > 0) {
    Thread.sleep(100);
}

and yet another option:

webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.setAjaxController(new AjaxController(){
    @Override
    public boolean processSynchron(HtmlPage page, WebRequest request, boolean async)
    {
        return true;
    }
});

final HtmlAnchor a = page2.getAnchorByText("7"); HtmlPage page3 = a.click();

// add this client.waitForBackgroundJavaScriptStartingBefore(10000); here client.waitForBackgroundJavaScriptStartingBefore(10000);

System.out.println(page2.getWebResponse().getContentAsString()) System.out.println(page3.getWebResponse().getContentAsString());

发布评论

评论列表(0)

  1. 暂无评论