网站加载到JavaFX Webengine

时间:2016-10-19 13:58:49

标签: javafx login webview

我希望我的应用程序自动登录网站kolotibablo,但该网站不存在标签形式。我该怎么办才能提交?感谢。

display: flex;
flex-direction: column;

2 个答案:

答案 0 :(得分:2)

我使用下面的代码成功完成了这项工作。我没有使用你的engine.documentPorperty()监听器,所以我完全删除了该代码。

this answer的帮助下,我能够进行一些编辑。

engine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
    if ( newState == Worker.State.SUCCEEDED ) {
        Element login = engine.getDocument().getElementById("login");
        if ( login != null ) {
            login.setAttribute( "Value", "User_Name" );
            System.out.println(login.getAttribute("Value"));
        }
        Element password = engine.getDocument().getElementById( "password" );
        if ( password != null ) {
            password.setAttribute( "Value", "Password" );
            System.out.println(password.getAttribute("Value"));
        }
        HTMLElementImpl loginButton = (HTMLElementImpl) engine.getDocument().getElementById( "login_button" );

        if ( loginButton != null ) {
            loginButton.addEventListener("click", event -> {
                System.out.println("here " + event.getType());
            }, false);
            loginButton.click();
        }
    }
});

所以这将等到工作人员状态成功,然后抓住login元素,设置属性,抓取password元素,设置属性,抓住loginButton as一个HTMLElementImpl,它允许我们模拟对它的点击。

我已经留在了打印声明中,以便您可以看到事情正在发生。

希望这有帮助。

  

编辑1

所以我重新审视了这个问题,我也提出了这个解决方案

String username = "User_Name";
String password = "Password";
String enterUserName = "document.getElementById('login').value='" + username + "';";
String enterPw = "document.getElementById('password').value='" + password + "';";;
engine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
    if ( newState == Worker.State.SUCCEEDED ) {
        engine.executeScript(enterUserName);
        engine.executeScript(enterPw);
    }
});

我唯一想知道的是如何点击login按钮。我试过的一切都失败了。所以,我很抱歉。但是,这是另一种方法。

答案 1 :(得分:1)

请使用

HTMLFormElement loginForm =(HTMLFormElement)webEngine.getDocument()。getElementById(" Login"); loginForm.submit(); 要登录,您必须提交表格,在上面的代码"登录"是表单id