2016-08-04 70 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中的某些方法。