【问题标题】:Clicking on javascript anchor with htmlunit does not seem to work使用 htmlunit 单击 javascript 锚点似乎不起作用
【发布时间】:2012-08-26 22:21:41
【问题描述】:

我正在使用 htmlunit 自动浏览网站。 问题来了:

我想点击一个锚点来显示给定表格的新页面。

这是锚点:

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

这是我的代码:

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

我没有任何错误信息。当我比较我的打印输出时,它们是相同的,但它们不应该是相同的,因为我只是单击了一个锚点。第一次打印应该显示表格的某一页,第二次打印出另一个。

stackoverflow 帖子struggling to click on link within htmlunit 提出了一个非常相似的问题,但是他的解决方案(将浏览器版本设置为 webclient)在我的情况下似乎不起作用。

【问题讨论】:

    标签: java javascript anchor htmlunit


    【解决方案1】:

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

    // 添加这个客户端.waitForBackgroundJavaScriptStartingBefore(10000);这里 client.waitForBackgroundJavaScriptStartingBefore(10000);

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

    【讨论】:

    • 您能解释一下为什么会这样吗?另外,请注意,您可以使用三个反引号进入“代码模式”,从而启用语法突出显示。
    【解决方案2】:

    也许您需要等待 javascript 执行并首先加载。我建议使用以下命令:

    webClient.waitForBackgroundJavaScript(1000);
    

    甚至:

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

    还有另一种选择:

    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(); System.out.println(page2.getWebResponse().getContentAsString()) System.out.println(page3.getWebResponse().getContentAsString());
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多