大家好,我是javascript的新手,我正在尝试学习Casper.js / Phantom.js,但今天我遇到了一个问题。我正尝试使用自动填充功能登录https://angel.co/login?utm_source=top_nav_home网站。我的代码正确填写了用户名和密码,但我的
casper.getElementsByName("commit").click();
根本不起作用。所以我的程序没有登录该帐户。当我检查元素时,我看不到任何id标签,我看到名称所以我使用getElementByName.My代码如下所示
phantom.casperPath = 'C:/casperjs';
phantom.injectJs(phantom.casperPath + '/bin/bootstrap.js');
var casper = require('casper').create({
pageSettings: {
loadImages: false,
loadPlugins: false,
userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'
}
});
//First step is to open angellist
casper.start().thenOpen("https://angel.co/login", function () {
console.log("angel website opened");
});
//lets fill username and pass login
casper.then(function () {
console.log("Login using username and password");
this.evaluate(function () {
document.getElementById("user_email").value = "myemail";
document.getElementById("user_password").value = "mypassword";
//casper.getElementsByName("commit").click();
//THIS ONE ABOVE DOESN'T WORK
});
});
之后我拍了一个截图,但我发现它没有点击登录按钮。 我试图用xpath点击它,但它没有工作。谢谢你的帮助。
答案 0 :(得分:1)
我通过使用相当简单的代码解决了这个问题
document.getElementsByName("commit")[0].click();
因为getElementsByName返回一个数组,我们必须给出一个地址(如[0]或其他值)。我不会编辑或删除这个问题,对于像我这样的javascript上的其他新手。感谢大家