8

私はHtmlUnitに非常に慣れていません。htmlunit を使用してサイトにログインし、サイトでいくつかの操作を実行できるかどうかを知りたいです。たとえば、オフィス ポータルにログインして休暇を取得したいです。

私はhtmlユニットを使用していますが、いくつかのエラーが表示されます.htmlユニットを使用することは可能ですか、またはこの目的で使用できる他のツールはありますか...これ
が私のコードです

final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);        
webClient.setJavaScriptEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);

final HtmlPage page1 =  webClient.getPage("http://www.ccstechnologies.org/login.aspx/");
final HtmlForm form = page1.getFormByName("form1");         
final HtmlSubmitInput button =  form.getInputByName("BtnLogin");
final HtmlTextInput textField =  form.getInputByName("Username");
final HtmlPasswordInput pwd =  form.getInputByName("password");        
textField.setValueAttribute("username");
pwd.setValueAttribute("password");      

final HtmlPage page2 =  button.getEnclosingForm().click();  
String htmlBody = page2.getWebResponse().getContentAsString(); 

System.out.println("Base Uri 1 : "+page1);
System.out.println("Base Uri 2 : "+page2);

webClient.closeAllWindows();

しかし、印刷page2すると、ログインページの URL のみが表示され、ホームページの URL が返されません。何が問題なのですか?

これは、フォームをクリックしたときにコンソールに表示されたものです

2012 年 5 月 28 日 11:44:15 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl 通知警告: 古いコンテンツ タイプが検出されました:'application/x-javascript'。2012 年 5 月 28 日 11:44:16 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl 通知警告: 古いコンテンツ タイプが検出されました: 'application/x-javascript'。ベース URI 1 : HtmlPage(http://www.ccstechnologies.org/login.aspx/)@2741851 ベース URI 2 : HtmlPage(http://www.ccstechnologies.org/login.aspx/)@2741851

ボタンをクリックしたときに生成される結果

May 29, 2012 10:00:02 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'application/x-javascript'.
May 29, 2012 10:00:02 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'application/x-javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'application/x-javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'application/x-javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'application/x-javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'application/x-javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: [259:24] Error in expression. Invalid token "=". Was expecting one of: <S>, <COMMA>, "/", <PLUS>, "-", <HASH>, <STRING>, ")", <URI>, "inherit", <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <DIMENSION>, <PERCENTAGE>, <NUMBER>, <FUNCTION>, <IDENT>.
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: [259:29] Error in style rule. Invalid token "\r\n   ". Was expecting one of: "}", ";".
May 29, 2012 10:00:03 AM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning
WARNING: CSS warning: [259:29] Ignoring the following declarations in this rule.
HtmlPage(http://192.168.0.5/login.aspx)@23511316
HtmlPage(http://192.168.0.5/login.aspx)@17700115
4

4 に答える 4

4

わかりました、調べてみましたが、問題はボタンにあるようです。ボタンのコード行を次のように置き換えました。

 final HtmlPage page2 =  (HtmlPage) form.getInputByValue("Login").click();

少なくともログインを試みているように見えるので(もちろん、ページには無効なログインが表示されます)、適切な資格情報で動作するはずです。ページを Java で印刷して表示するには、見たいものに応じて system.out.println(page1.asText()) または asXml を使用します。

私のコードは最終的にこれです:

final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);         
        webClient.setJavaScriptEnabled(true);
        webClient.getCookieManager().setCookiesEnabled(true);


     try{   final HtmlPage page1 =  webClient.getPage("http://www.ccstechnologies.org/login.aspx/");
        final HtmlForm form = page1.getFormByName("form1");         
        final HtmlSubmitInput button =  form.getInputByName("BtnLogin");
        final HtmlTextInput textField =  form.getInputByName("Username");
        final HtmlPasswordInput pwd =  form.getInputByName("password");        
        textField.setValueAttribute("username");
        pwd.setValueAttribute("password");      
System.out.println(page1.asText());
        final HtmlPage page2 =  (HtmlPage) form.getInputByValue("Login").click();

        String htmlBody = page2.getWebResponse().getContentAsString(); 
        System.out.println(page2.asText());
       System.out.println("Base Uri 1 : "+page1);
      System.out.println("Base Uri 2 : "+page2);

        webClient.closeAllWindows();}catch (Exception e) {
            // TODO: handle exception
        }
于 2012-05-28T08:50:29.313 に答える
1

Cookie を有効に設定し、javascript を有効に設定して、印刷される可能性のあるエラーを無視してみてください... (以前は赤のエラーは悪いと思っていましたが、html ユニットでは必ずしもそうとは限りません)

于 2012-05-27T18:37:49.883 に答える