JavaFX WebEngine按钮单击

时间:2016-08-04 16:37:38

标签: button 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方式,例如:https://stackoverflow.com/a/20458003/1112963

QUETION:如何以原生JavaFX WebEngine方式点击网页按钮?

2 个答案:

答案 0 :(得分:0)

您可以按照文档https://docs.oracle.com/javafx/2/api/javafx/scene/web/WebEngine.html中的说明执行此操作,在#34;从JavaScript调用Java&#34;部分中。

在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方法。

答案 1 :(得分:0)

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

使用HTMLInputElementImpl代替HTMLinputElement