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

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

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());

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742321577a4421919.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信