0

问题:单击加载页面上的按钮(通过 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 方式,比如这里:https ://stackoverflow.com/a/20458003/1112963

问题:如何以原生 JavaFX WebEngine 方式单击网页按钮?

4

2 回答 2

0
    HTMLInputElementImpl confirmButton =
    (HTMLInputElementImpl) document.getElementsByTagName("button").item(0);
    confirmButton.click();

使用 HTMLInputElementImpl 而不是 HTMLinputElement

于 2018-12-19T16:32:19.033 回答
0

您可以按照“从 JavaScript 回调 Java”部分中的文档https://docs.oracle.com/javafx/2/api/javafx/scene/web/WebEngine.html中所述执行此操作。

在你的 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()");
            }

现在,当用户单击页面上的按钮或从 webEngine 代码调用 doClickInJava 时,它会调用 JavaButtonClicker 中的 doSomething 方法。

于 2016-08-08T23:16:25.823 回答