2016-08-04 81 views
0

问题:单击加载页面上的按钮(通过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 cannot be cast to org.w3c.dom.html.HTMLInputElement

研究:我可以尝试它的JavaScript的方式,就像这里:https://stackoverflow.com/a/20458003/1112963

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

+0

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

回答

0

您可以按照文档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时,它会调用do JavaButtonClicker中的某些方法。