【问题标题】:JavaFX WebEngine Button ClickJavaFX WebEngine 按钮单击
【发布时间】:2016-08-04 16:37:38
【问题描述】:

问题:单击加载页面上的按钮(通过 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 方式点击网页按钮?

【问题讨论】:

  • 似乎没有可访问的 API。我会在这里使用 javascript。

标签: button javafx webengine


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
        HTMLInputElementImpl confirmButton =
        (HTMLInputElementImpl) document.getElementsByTagName("button").item(0);
        confirmButton.click();
    

    使用 HTMLInputElementImpl 代替 HTMLinputElement

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 2013-12-25
      • 2018-10-29
      相关资源
      最近更新 更多