簡體   English   中英

單擊HtmlUnit按鈕

[英]HtmlUnit button click

我正試圖在www.meetme.com上發送消息,但無法弄清楚如何做到這一點。 我可以在評論區域中輸入消息,但單擊“發送”按鈕不會執行任何操作。 我究竟做錯了什么? 當我登錄並按下登錄按鈕時,頁面確實會發生變化,一切都很好。 有人有任何想法或線索嗎?

    HtmlPage htmlPage = null;
    HtmlElement htmlElement;
    WebClient webClient = null;
    HtmlButton htmlButton;
    HtmlForm htmlForm;
    try{

        // Create and initialize WebClient object
        webClient = new WebClient(BrowserVersion.FIREFOX_17 );
        webClient.setCssEnabled(false);
        webClient.setJavaScriptEnabled(false);
        webClient.setThrowExceptionOnFailingStatusCode(false);
        webClient.setThrowExceptionOnScriptError(false);
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getOptions().setUseInsecureSSL(true);
        webClient.getCookieManager().setCookiesEnabled(true);

        /*webClient.setRefreshHandler(new RefreshHandler() {
            public void handleRefresh(Page page, URL url, int arg) throws IOException {
                 System.out.println("handleRefresh");
            }

        });*/

         htmlPage = webClient.getPage("http://www.meetme.com");
         htmlForm = htmlPage.getFirstByXPath("//form[@action='https://ssl.meetme.com/login']");

         htmlForm.getInputByName("username").setValueAttribute("blah@gmail.com");
         htmlForm.getInputByName("password").setValueAttribute("blah");

         //Signing in
         htmlButton = htmlForm.getElementById("login_form_submit");
         htmlPage = (HtmlPage) htmlButton.click();

         htmlPage = webClient.getPage("http://www.meetme.com/member/1234567890");

         System.out.println("BEFORE CLICK");
         System.out.println(htmlPage.asText());


         //type message in text area
         HtmlTextArea commentArea = (HtmlTextArea)htmlPage.getFirstByXPath("//textarea[@id='profileQMBody']");
         commentArea.setText("Testing");        


         htmlButton = (HtmlButton) htmlPage.getHtmlElementById("profileQMSend");
         htmlPage = (HtmlPage)htmlButton.click();
         webClient.waitForBackgroundJavaScript(7000);

         //The print is exactly the same as the BEFORE CLICK print
         System.out.println("AFTER CLICK");
         System.out.println(htmlPage.asText());

      }catch(ElementNotFoundException e){
        e.printStackTrace();
      }catch(Exception e){
        e.printStackTrace();
      }

在不了解您正在訪問的網頁的情況下,您無法在禁用JavaScript的情況下執行AJAX請求。 如果更改不會導致成功,那么您將不得不繼續調試,但要確保啟用了JavaScript。

此外,請確保您使用的是HtmlUnit 1.12並更新代碼中所有已棄用的方法。

順便說一下,我還建議關閉JavaScript警告。 檢查此答案 ,看看如何做到這一點。

暫無
暫無

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

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