4

我正在尝试在 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();
      }
4

1 回答 1

4

在不了解您正在访问的网页的情况下,您无法在禁用 JavaScript 的情况下执行 AJAX 请求。如果更改不会成功,那么您将不得不继续调试,但请确保启用 JavaScript。

此外,请确保您使用的是 HtmlUnit 1.12 并更新代码中所有已弃用的方法。

顺便说一句,我还建议关闭可能的 JavaScript 警告。检查这个答案,看看你怎么能做到这一点。

于 2013-09-01T21:50:28.520 回答