【问题标题】:Executing a Javascript in JavaFX using WebEngine.executeScript()使用 WebEngine.executeScript() 在 JavaFX 中执行 Javascript
【发布时间】:2016-08-02 16:29:20
【问题描述】:

我想自动填充两个文本字段并模拟按钮单击以自动登录网站。 我正在使用 JavaFX WebView 及其函数 .executeScript()

这是我到目前为止所得到的:(参考 Sergey Grinevs 对此问题的回答:Execute a Javascript function for a WebView from a JavaFX program

        webEngine.load("websiteexample.com");
        webEngine.getLoadWorker().stateProperty().addListener(
            new ChangeListener<State>() {
                @Override
                public void changed(ObservableValue ov, State oldState, State newState) {
                   if (newState == State.SUCCEEDED) {
                        webEngine.executeScript(
                                "function login(user,pass){"
                                + " var usernameField = document.getElementById(\"username\");"
                                + " var passwordField = document.getElementById(\"password\");"
                                + " usernameField.value = user;"
                                + " passwordField.value = pass;"
                                + " var sButton = document.getElementById(\"submit\");"
                                + " sButton.click();"
                                + "}"
                                + "login('abc','123');");

                    }
                }
            });

到目前为止,这是可行的,但 Javascript 将在无限循环中执行。我也不知道为什么会有一个 Listener。 需要说的是,我已经将我的脚本复制到了 Sergey Grinev 的脚本中,因为这对我有用。 否则,只要调用 executeScript,就会抛出java.lang.reflect.InvocationTargetException 等等。

如何在没有永久循环的情况下执行我的脚本?为什么没有监听器它就无法工作?

感谢您的阅读和亲切的问候

【问题讨论】:

    标签: javascript javafx webview webengine


    【解决方案1】:

    如果我理解您的问题,那么问题的第二部分“为什么没有侦听器就无法工作”的答案是侦听器通知您页面已加载。然后,它会在加载成功时执行您指定的代码 (newState == State.SUCCEEDED)。因此,有一个侦听器以便在 WebEngine 报告它已加载页面时立即运行您的代码。如果没有侦听器,您将不得不根据其他事件选择何时运行代码,例如页面加载后的按钮单击。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多