2014-02-07 74 views
1

我有我正在填充憑據的webform。然後我想點擊登錄鏈接。但它仍然給了我點擊的同一頁面。HtmlUnit a href點擊不起作用

HtmlForm loginForm = loginPage.getFormByName("Login1Form"); 
HtmlTextInput inLoginName = loginForm.getInputByName("loginId"); 
HtmlPasswordInput inPassword = loginForm.getInputByName("passwd"); 
HtmlTextInput inCaptcha = loginForm.getInputByName("checkcode"); 

inLoginName.setText(loginName); 
inPassword.setText(password); 
inCaptcha.setText(captcha.toUpperCase()); 

//HtmlElement loginLink =loginPage.getFirstByXPath("//a[@href=\"javascript:submitPB('9');\"]"); 
HtmlAnchor loginLink = loginPage.getAnchorByHref("javascript:submitPB('9');"); 
HtmlPage resultPage = resultPage = loginLink.click(); 

而resultPage甚至與loginPage具有相同的對象ID。我已經嘗試了webClient.wait方法和我在這裏找到的所有方法。但是沒有任何東西能爲我工作。

這裏是HTML鏈接我需要在

<a href="javascript:submitPB('9');"> 
    <img src="images/pf/login-001.gif" width="43" height="21" border="0" alt=""> 
</a> 

任何想法,單擊嗎?由於

編輯:// Web客戶端設置:

mWebClient = new WebClient(BrowserVersion.FIREFOX_3_6); 
mWebClient.getOptions().setJavaScriptEnabled(true); 
mWebClient.getOptions().setRedirectEnabled(true); 
mWebClient.setAjaxController(new NicelyResynchronizingAjaxController()); 
mWebClient.getCookieManager().setCookiesEnabled(true); 
+0

你在HTMLUnit中啓用了JavaScript嗎?同時確保您的loginLink鏈接是正確的 –

+0

我編輯了我的webClient來提問。當我查看登錄鏈接變量時,它看起來沒問題。另外頁面上只有一個與submitPB('9')的鏈接。 – bakua

+0

你的問題可以總結爲*我點擊一個按鈕,沒有任何反應。*很難幫助你。請提供更多信息。你說你已經嘗試了* wait *方法。我希望看到這一點。與我在許多[類似問題](http://stackoverflow.com/questions/17843521)中提出的一樣?你是如何實現它的? –

回答

1

似乎發送WebRequest的直接作用。所以首先加載captcha等登錄頁面加載,然後:

String formData = String.format(LOGIN=LOGIN&PB=9&isAA=&sso=&initP=gogo&loginId=%s&passwd=%s&checkcode=%s", loginName, password, captcha.toUpperCase()); 
WebRequest req = new WebRequest(new URL(url), HttpMethod.POST); 
req.setRequestBody(formData); 
resultPage = (HtmlPage) getWebClient().getPage(req); 

並返回新頁面。然而,那個頁面說,我不支持框架,但這是所有不同的問題。