これを以下のコードを使用して成功させました。私はあなたのengine.documentPorperty()
リスナーを使用しなかったので、私はそのコードを完全に削除しました。
this answerの助けを借りて私は少し編集することができました。
engine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
if (newState == Worker.State.SUCCEEDED) {
Element login = engine.getDocument().getElementById("login");
if (login != null) {
login.setAttribute("Value", "User_Name");
System.out.println(login.getAttribute("Value"));
}
Element password = engine.getDocument().getElementById("password");
if (password != null) {
password.setAttribute("Value", "Password");
System.out.println(password.getAttribute("Value"));
}
HTMLElementImpl loginButton = (HTMLElementImpl) engine.getDocument().getElementById("login_button");
if (loginButton != null) {
loginButton.addEventListener("click", event -> {
System.out.println("here " + event.getType());
}, false);
loginButton.click();
}
}
});
だから、これは労働者の状態が成功するまで待ってから、login
要素をつかむ、属性を設定し、password
要素をつかむ、属性を設定し、HTMLElementImpl
としてloginButton
をつかむ、私たちはシミュレートすることを可能にするだろうそれをクリックします。
私は印刷物に残っているので、起こったことが完了したことを確認できます。
これが役に立ちます。
編集1
だから私はこの問題を再訪し、私はこの解決策を考え出したも
String username = "User_Name";
String password = "Password";
String enterUserName = "document.getElementById('login').value='" + username + "';";
String enterPw = "document.getElementById('password').value='" + password + "';";;
engine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
if (newState == Worker.State.SUCCEEDED) {
engine.executeScript(enterUserName);
engine.executeScript(enterPw);
}
});
私は把握できませんでした唯一のことはlogin
ボタンをクリックする方法です。私が試したすべてが失敗しました。だから、すみません。しかし、これを行う別の方法もあります。 。
ダウンロードが完了したら、ウェブサイトのパスワードのみで属性login.setAttribute( "Value"、 "User_Name")を設定できます。 –
それはインストールされません –
'login'は別の'属性 'を使用しなければなりません。私は明日まで見ることができません –