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.

Другие вопросы по тегам