簡體   English   中英

Java - HtmlUnit - 無法使用javascript單擊錨點

[英]Java - HtmlUnit - Cannot click on anchor with javascript

我正在嘗試使用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);

我完全失去了,無法理解發生了什么。 我試圖用javascripts點擊其他一些錨點,其中一些非常好(如登錄),有些具有相同的結果。

有時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
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM