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 を使用しましたが、再び失敗します。
再度、感謝します。