【问题标题】:Why is sendKeys() not functioning properly in casperJS为什么 sendKeys() 在 casperJS 中无法正常运行
【发布时间】:2016-02-12 01:43:28
【问题描述】:

我正在编写一个自动化脚本来登录 Draftkings.com。我正在使用 sendKeys() 将我的登录凭据添加到必填字段。 sendKeys() 的第一个用途是用于 ID 为“用户名”的用户名字段。这实际上会将我的用户名放入该字段。第二种用途是用于 ID 为“Password”的密码字段。但是,这会将此字段的所需文本放入用户名字段中。我错过了什么吗?

var casper = require('casper').create({
loadImages:false,
verbose: true,
logLevel: 'debug'
});

//set browser user agent
casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X)');

//Open URL
casper.start('https://draftkings.com');

casper.then(function() {
    this.clickLabel('Sign-in', 'a');
});

casper.then(function() {
    this.sendKeys('#Username', 'xxxx');
    this.sendKeys('#Password', 'xxxx');
    this.click('a[data-signin-submit="1"]');

});

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

更新:

我无法弄清楚为什么sendKeys 无法正常工作。我最终只使用this.evaluate() 将值输入到带有document.querySelector() 的字段中。

新问题:

我可以在控制台输出中看到 'a[data-signin-submit="1"]' 正在被单击并且 http 请求正在被发送,但它实际上并没有记录我。我使用的是 phantomJS 2.0.0,所以虽然我已经尝试过了,但这不是 ssl 问题。如果我的凭据是捕获将表明这一点。

【问题讨论】:

  • 登录后可能需要使用casper.wait(5000, function(){/*capture*/});
  • 试过了。不知道发生了什么。将继续深入研究它
  • 如果您选择使用无效凭据提交,您是否会捕获一个红色框,上面写着“密码必须至少包含一个字母和一个数字,并且长度为 5-20 个字符。”我不能,所以我认为登录按钮上的 click() 有问题

标签: javascript casperjs html-input form-fields


【解决方案1】:

this.click() 中提供的输入可能有问题,请尝试使用 xpath 代替

this.click(x('your xpath here'));

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多