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