为啥 sendKeys() 在 casperJS 中无法正常运行
Posted
技术标签:
【中文标题】为啥 sendKeys() 在 casperJS 中无法正常运行【英文标题】: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() 有问题
【参考方案1】:
this.click()
中提供的输入可能有问题,请尝试使用 xpath 代替
this.click(x('your xpath here'));
【讨论】:
以上是关于为啥 sendKeys() 在 casperJS 中无法正常运行的主要内容,如果未能解决你的问题,请参考以下文章