[英]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.