如何使用没有表单标签的CasperJS填写表单

How to fill up form using CasperJS without form tag

本文关键字:表单 CasperJS 标签 何使用      更新时间:2023-09-26

我是CasperJS的新手,在登录此站点时遇到问题 http://weibo.com/login.php

这是我尝试过的

this.fill('form#contact-form', {
    'username':    'test@test.com',
    'password':    'anypassword',
}, true);

我不能使用它,因为它没有形式。

所以我尝试了使用发送键的不同方法。

this.sendKeys('.W_input ', 'tinkerbell@gmail.com');

现在我在这里的问题是输入文本中没有 ID,只有一个 CLASS,用户名和密码都有相同的 CLASS。 如何仅使用该类在该文本框中键入内容? 或者是否可以使用 XPath 使用发送密钥?

casper 支持 CSS3 选择器(tuts+ 有一个不错的你应该记住的前 30 个的概要),所以你可以做这样的事情:

this.sendKeys('input[name=username]', 'tinkerbell@gmail.com');

我使用查询选择器函数成功设置用户名和密码:

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

这是简单的casper js脚本来填写登录表单假设它提到了每个字段的 ID

casper.evaluate(function(username, password) { document.querySelector('input#user_email').value = username;

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