自动登录网站(自动填写并提交)

时间:2016-04-12 12:01:07

标签: javascript jquery html

我正在尝试访问网站并自动登录。

在此之后,我想知道这是成功还是失败,但我无法让它发挥作用。页面加载空白,没有任何反应。

注意:我故意将网址显示为灰色。

以下是我的尝试,

<HTML>
<HEAD>
<script src="https://code.jquery.com/jquery-2.2.3.min.js" type="text/javascript"></script>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>

<script type="text/javascript">
    $(document).ready(function () {
            runLogin();
        });

    function runLogin(){
        alert("start");

        if (window.location.indexOf("url") > -1) {
                jQuery("#j_username").val("username");
                jQuery("#j_password").val("password");
                jQuery("#loginForm").submit();
            }
    }
</script>

2 个答案:

答案 0 :(得分:1)

如果您想测试您的登录表单,请使用Protractor或其他e2e测试框架,但这种方式似乎不太安全。

http://angular.github.io/protractor/

答案 1 :(得分:0)

它正在加载一个空白页面,因为您的后端脚本没有重定向回您开始的页面。 一个选项是将当前网页网址作为额外字段发送到登录表单,以便在登录后可以重定向。这将要求您重构后端代码以便它可以处理这些额外信息(如果您使用j_security_check,则无法实现)。 另一个选项是向您的登录页面发出AJAX请求,以便它实际上不会重定向页面,它只是静静地提交表单,然后JS处理响应。

如果要将当前页面的URL添加到登录请求中,请执行以下操作:

function runLogin() {
    if (window.location.indexOf("url") > -1) {
            jQuery("#j_username").val("username");
            jQuery("#j_password").val("password");
            jQuery("#loginForm").append(
                '<input type="hidden" name="url" value="'+window.location.href+'"/>'
            );
            jQuery("#loginForm").submit();
    }
}

如果您想使用AJAX发送登录请求:

function runLogin() {
    var $form = $("#loginForm");
    $.post($form.attr("action"), $form.serialize(), function(data) {
        // login successful/unsuccessful message displays
        // depending on what "data" contains
    });
}