Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fill up form using CasperJS without form tag

I'm new to CasperJS and I'm having problems in logging in into this site http://weibo.com/login.php

here's what I've tried

this.fill('form#contact-form', {
    'username':    '[email protected]',
    'password':    'anypassword',

}, true);

I can't used that since it has no form.

so I tried a different method using sendKeys.

this.sendKeys('.W_input ', '[email protected]');

Now my problem in here is that the input text has no ID in it, only a CLASS and both username and password have the same CLASS in it. how can i type into that textbox using only that class? or is it possible to use sendKeys using XPath?

like image 457
Alex Strauss Avatar asked Oct 18 '13 09:10

Alex Strauss


Video Answer


2 Answers

casper supports CSS3 selectors (tuts+ has a decent rundown of the top 30 you should memorize) so you could do something like:

this.sendKeys('input[name=username]', '[email protected]');

like image 73
hackerhasid Avatar answered Oct 20 '22 10:10

hackerhasid


I use querySelector function to set username and password with success:

var casper = require("casper").create();
casper.start('http://www.weibo.com', function() {
    this.evaluate(function(username, password) {
        document.querySelector('input[node-type="username"]').value = username;
        document.querySelector('input[node-type="password"]').value = password;
        document.querySelector('.W_btn_g:eq(1)').click();
    }, 'your_username', 'your_password');

});

casper.then(function() {
    this.wait(50000, function() {
        this.echo("50s");
    });

});

casper.then(function() {
    this.capture('weibo.png');
});

casper.run();
like image 26
yannisxu Avatar answered Oct 20 '22 12:10

yannisxu