自动单击JavaFX Webview中的按钮

我正在使用一个可以自动登录某些网站的JavaFX Web浏览器,我知道如何将数据设置为用户名和密码字段但是如何让它执行登录按钮点击? 这是我到目前为止所得到的:

String email = "document.getElementsByName('email')[0].value='MY_EMAIL';"; String pass = "document.getElementsByName('pass')[0].value='MY_PASSWORD';"; String login = ""; webEngine.executeScript(email); webEngine.executeScript(pass); webEngine.executeScript(login); 

这是它应该点击的按钮的javascript代码:

  

这是一个集中的,非专业的例子……使用dom.w3c.Node。*包

 HTMLInputElement element = (HTMLInputElement)myWebView.getEngine().getDocument().getElementsByTagName("input").item(0); element.click(); 

找到一种方法来处理您正在寻找的对象,它将起作用。

我没有尝试过,但它应该工作。 想法是将jQuery添加到加载的页面,然后使用它来单击按钮。 这篇文章解释了如何使用JS执行此操作: 如何使用JavaScript添加jQuery? 所以使用Java应该是(我已经将第一个答案复制到字符串中并使用Web引擎执行它):

 String script = "script = document.createElement('script');\n" + "\n" + "script.onload = function() {\n" + " // jQuery is available now\n" + "};\n" + "var head = document.getElementsByTagName(\"head\")[0];\n" + "\n" + "script.type = 'text/javascript';\n" + "script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js';\n" + "\n" + "head.appendChild(script);"; webEngine.executeScript(script); 

这应该在初始化WebView时完成(通过webEngine.getLoadWorker().stateProperty().addListener(...) )。 注意:jQuery是异步加载的。

现在你应该能够点击一个带有jQuery的按钮:

 webEngine.executeScript("$('#buttonId')[0].click()"); 

这篇文章应该可以帮助你在WebView中调试JS: JAVAFX / WebView / WebEngine FireBugLite或其他一些调试器?