自动单击JavaFx WebView中的按钮

 2023-02-16    339  

问题描述

我正在工作一个可以自动化到某些站点的Javafx webbrowser,我知道如何将数据设置为用户名和密码字段,但是如何使其使其执行登录按钮单击?
这就是我到目前为止得到的:

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代码,应该单击:

自动单击JavaFx WebView中的按钮

<label class="uiButton uiButtonConfirm" id="loginbutton" for="u_0_c"><input value="Aanmelden" tabindex="4" type="submit" id="u_0_c"></label>

推荐答案

这是一个集中的,非专业的示例…使用dom.w3c.node.* package

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

找到一种处理您要寻找的对象的方法,它将起作用.

其他推荐答案

我没有尝试过,但是它应该起作用.这个想法是将jQuery添加到加载页面,然后使用它单击按钮.这篇文章解释了如何使用JS:我如何添加jQuery用JavaScript?因此,使用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()");

这篇文章应帮助您在网络浏览中调试JS: javafx/webview/webengine firebuglite或其他一些调试器?

以上所述是小编给大家介绍的自动单击JavaFx WebView中的按钮,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33845.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。