简体   繁体   English

单击HtmlUnit按钮

[英]HtmlUnit button click

I'm trying to send a message on www.meetme.com but can't figure out how to do it. 我正试图在www.meetme.com上发送消息,但无法弄清楚如何做到这一点。 I can type in the message in the comment area but clicking the Send button doesn't do anything. 我可以在评论区域中输入消息,但单击“发送”按钮不会执行任何操作。 What am I doing wrong? 我究竟做错了什么? When I login and press the Login button the page does change and everything is fine. 当我登录并按下登录按钮时,页面确实会发生变化,一切都很好。 Anyone have any ideas or clues? 有人有任何想法或线索吗?

    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();
      }

Without knowing much about the webpage you're accessing, you just can't perform an AJAX request with JavaScript disabled. 在不了解您正在访问的网页的情况下,您无法在禁用JavaScript的情况下执行AJAX请求。 If changing that doesn't result in success, then you will have to keep debugging, but make sure JavaScript is enabled. 如果更改不会导致成功,那么您将不得不继续调试,但要确保启用了JavaScript。

Additionally, make sure you're using HtmlUnit 1.12 and update all the deprecated methods in your code. 此外,请确保您使用的是HtmlUnit 1.12并更新代码中所有已弃用的方法。

BTW, I'd also recommend to turn may JavaScript warnings off. 顺便说一下,我还建议关闭JavaScript警告。 Check this answer to see how you can do that. 检查此答案 ,看看如何做到这一点。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM