Java-HtmlUnit-无法使用javascript点击锚点

Java - HtmlUnit - Cannot click on anchor with javascript

本文关键字:javascript Java-HtmlUnit-      更新时间:2023-10-12

我正试图使用HtmlUnit在内部HP项目和投资组合管理中运行搜索。但我遇到了一个问题,我无法点击"搜索",它看起来像:

    <span id="SEARCH_BUTTON_LINK" class="primBtn" name="SEARCH_BUTTON_LINK">
        <a href="javascript:search()"></a>
    </span>

这是我的代码:

    final WebClient webClient = new WebClient();
    webClient.getOptions().setJavaScriptEnabled(true);
    webClient.getOptions().setCssEnabled(false);
    webClient.getOptions().setThrowExceptionOnScriptError(false);
    webClient.setAjaxController(new NicelyResynchronizingAjaxController()); 
    final String savedSearchURI = "my_url";
    HtmlPage page = webClient.getPage(savedSearchURI);
    HtmlAnchor a = page.getAnchorByHref("javascript:search()");                
    page=a.click();

但尽管如此,我仍然站在同一立场上。如果我在浏览器中做同样的事情,我会移动到带有搜索结果的页面。下面是我已经尝试过的:

    BrowserVersion
    synchronized (page) {page.wait(2000);}
    waitForBackgroundJavaScript(1000);
    waitForBackgroundJavaScriptBeforeStart(1000);

我完全迷失了方向,无法理解发生了什么。我试着用javascript点击其他一些锚点,其中一些效果很好(比如登录),有些结果也一样。

有些时候JS需要时间来执行,所以你必须等待执行,最好是重试一段时间,直到页面没有更新(使用任何条件)这里是代码的例子

    HtmlForm form = page.getForms().get(0);
    HtmlTextArea textArea = form.getTextAreaByName("scandata");
    HtmlSubmitInput button = form.getInputByValue("Submit");
    HtmlPage res = button.click();
    int input_length = page.getByXPath("//input").size();
    int tries = 5; 
    while (tries > 0 && input_length < 12) { //you can change number of tries and condition according to your need
        tries--;
        synchronized (page) {
        page.wait(2000); //wait
    }
    input_length = page.getByXPath("//input").size(); //input length is example of condtion
    }