How to Login by filling the form in CasperJs

user2129794 picture user2129794 · Sep 7, 2013 · Viewed 28.2k times · Source

Following is the hlml of the login form that I have

<div class="login_area_user">

            <form method="post" action="https://www.tradus.com/login?dest_url=https://www.tradus.com/cart/select-address" id="user-login">
            <input type="hidden" value="1" name="form_submit">

                <h3 style="display:inline-block;">Already a Member</h3>

                <p id="login-main-center-right-descp">You can use tradus login id and password</p>

                <div class="login-row">
                    <label class="colorBlack">Email / Login*</label>
                    <input class="login-field" type="text" name="name" id="edit-namepopup">
                </div> <!-- [/login-row] -->

                <div class="login-row">
                    <label>Password</label>
                    <input class="login-field" type="password" id="edit-passpopup" name="pass">
                </div> <!-- [/login-row] -->

                <div class="login-row">            
                    <a class="forgotPassword" href="/forgot_password">Forgot your password?</a>
                    <!--input type="checkbox" name="remember" /><span>Remember me</span-->
                </div>

                <div class="login-row">
                    <input class="login-button" value="Login" type="submit">
                </div>

                <input type="hidden" name="op" value="Log in">

            </form>

        </div>

Am using the following code to login :

this.fill('form#user-login', {
        'form_submit':    1,
        'name':    '[email protected]',
        'pass':   'pwd',
        'op':       'Log in'

    }, true);

But I dont thing its doing the thing for me.

Answer

Shikhar picture Shikhar · Feb 5, 2014
casper.waitForSelector("form input[name='name']", function() {
    this.fillSelectors('form#user-login', {
        'input[name = name ]' : '[email protected]',
        'input[name = pass ]' : 'pwd'
    }, true);
});

Simply use this (see waitForSelector docs). Firstly, wait for the form to be loaded. Then fill the form using the selectors.