1

HTMLUnit に問題があります。すぐに私がやっていることは、フォームに入力して Web ページにログインし、そのページのボタンを押すことです。実際、私はこのプロセスを実行できませんが、試しています。これが私の HTML フォームのソース コードと Java のソース コードです。

これはログイン画面からのものです:

<form action="/login" method="post"> 
 ...
 <input type="text" name="login_email" id="login_email" value="" />
 <input type="password" name="login_password" id="login_password" />
 <input type="submit" id="login_submit" name="login_submit" value="Sign in" />
</form>

このフォームにはいくつかの隠し入力があります。おかしく聞こえるかもしれませんが、隠れた入力について何もしなくても、私の Java コードは機能します。

このフォームを使用してログインするための Java コードを次に示します。

このコードは、stackoverflow の質問からのものです。私はそれをテストしているだけで、それ以上のものはありません。

WebClient webClient = new WebClient();
webClient.setThrowExceptionOnScriptError(false);

HtmlPage currentPage = webClient.getPage("https://www.blablabla.com:1234");
final HtmlForm form = currentPage.getFirstByXPath("//form[@action='/login']");
HtmlTextInput username = (HtmlTextInput) currentPage.getElementById("login_email");
HtmlPasswordInput password = (HtmlPasswordInput) currentPage.getElementById("login_password");

username.setText("username@blablabla.com");
password.setText("passW0rd");
HtmlButton submitButton = (HtmlButton) currentPage.createElement("button");
submitButton.setAttribute("type", "submit");
form.appendChild(submitButton);

HtmlPage newPage = submitButton.click();

System.out.println(newPage.asText()); 

次のパートまでは順調です。ログインできます。新しいページの内容を確認できます。

ただし、新しいページでボタンを押しても何も表示されません。というか、押すことすらできないと思います。

これは、私の「ボタン」と新しい Web ページの HTML ソースです。

<form action="auth" method="post">
 <input type="submit" name="allow" value="Allow"/>
</form>

いくつかの隠し入力もあります。

これは、'allow' という名前のボタンを押しようとしている Java コードです。

HtmlButton button = newPage.getElementByName("allow");
HtmlPage page = button.click() ;

最後に確認するために、別のコードを使用します。

System.out.println(page.asText());

しかし、私はこれらのようなエラーが発生します

エラー開始

WARNING: getElementById(script1338426904717) did a getElementByName for Internet Explorer
31.May.2012 04:15:04 com.gargoylesoftware.htmlunit.javascript.host.ActiveXObject jsConstructor
WARNING: Automation server can't create object for 'ShockwaveFlash.ShockwaveFlash'.
31.May.2012 04:15:04 com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter     runtimeError
SEVERE: runtimeError: message=[Automation server can't create object for     'ShockwaveFlash.ShockwaveFlash'.] sourceName=[https://www.jdkahsjkda/dksajda.js] line=[12]     lineSource=[null] lineOffset=[0]
31.May.2012 04:15:04 com.gargoylesoftware.htmlunit.javascript.host.ActiveXObject     jsConstructor

エラーの終わり

ログインできる限り、これらのエラーは問題ありません。

ログインしてページを見ることができます。「ようこそユーザー名パスワード...」などと表示されますが、ボタンを押すことも何もできません。

皆さんがこの問題で私を助けてくれることを願っています。

どうもありがとうございました。

気をつけて、ありがとう。

編集:

今、私はこのエラーを受け取ります:

Exception in thread "main" com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName=[*] attributeName=[name] attributeValue=[allow]
at com.gargoylesoftware.htmlunit.html.HtmlPage.getElementByName(HtmlPage.java:1565)
at cza.main(cza.java:54)

ただし、「許可」というボタンがあります。2 番目のページのソースを見ていると、次のように表示されます。

<input type="submit" name="allow" value="Allow"/>
<input type="submit" name="deny" value="Deny"/>

そのため、許可および拒否という名前のボタンがあります。ただし、このコードは失敗します。これはJSか何かのせいでしょうか?firstPage から送信ボタンを見つけて、それを使用してフォームを送信しようとしました。偽のボタンではなく、再び失敗します。これには HTMLSubmitInput を使用しましたが、再び失敗します。

再度、感謝します。

4

1 に答える 1