JavaFX WebEngine Нажатие кнопки
ПРОБЛЕМА: нажмите кнопку на загруженной странице (через JavaFX WebEngine). Кнопка
<button class="flat_button popup_login_btn button_big" id="install_allow" type="submit" onclick="return login(this)">Button</button>
В Java:
HTMLInputElement confirmButton =
(HTMLInputElement) document.getElementsByTagName("button").item(0);
confirmButton.click();
Ошибка консоли:
java.lang.ClassCastException: com.sun.webpane.webkit.dom.HTMLButtonElementImpl не может быть приведен к org.w3c.dom.html.HTMLInputElement
ИССЛЕДОВАНИЕ: Я мог бы попробовать это Javascript, как здесь: /questions/48081362/avtomaticheskoe-nazhatie-knopki-v-javafx-webview/48081396#48081396
ВОПРОС: Как щелкнуть по кнопке веб-страницы собственным способом JavaFX WebEngine?
1 ответ
HTMLInputElementImpl confirmButton =
(HTMLInputElementImpl) document.getElementsByTagName("button").item(0);
confirmButton.click();
использовать HTMLInputElementImpl вместо HTMLinputElement
Вы можете сделать это, как описано в документации https://docs.oracle.com/javafx/2/api/javafx/scene/web/WebEngine.html в разделе "Обратный вызов Java из JavaScript".
Сделайте этот класс в вашем классе webEngine:
public class JavaButtonClicker {
public void doSomething() {
JOptionPane.showMessageDialog(null,
"Click Sound");
}}
Поместите эту строку в ваш HTML:
<button onclick="clicker.doSomething()">Click here to make sound</button>
Сделайте метод, чтобы сделать щелчок в Java:
private void doClickInJava() {
JSObject window = (JSObject) webEngine. executeScript("window");
window.setMember("clicker",
new JavaButtonClicker());
webEngine.executeScript("clicker.doSomething()");
}
Теперь, когда пользователь нажимает кнопку на странице или когда вы вызываете doClickInJava из своего кода webEngine, он вызывает метод doSomething в JavaButtonClicker.