Comment remplir le formulaire en utilisant CasperJS sans étiquette de formulaire

Je suis nouveau chez CasperJS et j'ai des problèmes lors de la connexion à ce site http://weibo.com/login.php

Voici ce que j'ai essayé

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

Je ne peux pas l'utiliser car il n'a pas de forme.

J'ai donc essayé une méthode différente en utilisant sendKeys.

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

Maintenant, mon problème ici est que le texte de saisie n'a pas d'identifiant, seulement un CLASSE et le nom d'utilisateur et le mot de passe ont le même CLASSE. Comment puis-je entrer dans cette zone de texte en utilisant uniquement cette classe? Ou est-il possible d'utiliser sendKeys en utilisant XPath?

Casper prend en charge les sélecteurs CSS3 ( tuts + a un décalage décent du top 30 que vous devriez mémoriser ) afin que vous puissiez faire quelque chose comme:

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

J'utilise la fonction querySelector pour définir le nom d'utilisateur et le mot de passe avec succès:

 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(); 

C'est un simple script casper js pour remplir le formulaire de connexion en supposant qu'il ait mentionné les ID pour chaque champ

Casper.evaluate (function (nom d'utilisateur, mot de passe) {document.querySelector ('input # user_email'). Value = username;

  document.querySelector('input#user_password').value = password; document.querySelector('input#login-button').click(); }, '[email protected]', 'password');