Javascript CasperJS-使用fill()vs evaluate()vs sendKeys()
我正在学习CasperJS,能够使用Javascript CasperJS-使用fill()vs evaluate()vs sendKeys(),javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,我正在学习CasperJS,能够使用fill()登录到网站,但不能使用this.evaluate()或this.sendKeys() 我用这个.evaluate()和这个.sendKeys()有什么错 这项工作: casper.then(function() { this.fill('form[class="login-form"]', { 'session_key': 'username', 'session_password': 'password'
fill()
登录到网站,但不能使用this.evaluate()
或this.sendKeys()
我用这个.evaluate()
和这个.sendKeys()
有什么错
这项工作:
casper.then(function() {
this.fill('form[class="login-form"]', {
'session_key': 'username',
'session_password': 'password'
}, true);
});
但是,这两种方法都不能:
casper.then(function() {
this.evaluate(function(username, password) {
document.querySelector('input#login-email').value = username;
document.querySelector('input#login-password').value = password;
document.querySelector('input[value="Sign in"]').click();
}, 'username', 'password');
})
或
由于你的问题是一般性的而不是具体的,我将试着以同样的思路回答 fill和FillSelector用于快速填充简单表单 如果您的网站使用大量javascript,并且在操作时触发事件,那么您就有SendKeys,它将尝试在事件发生时触发这些事件 最后,如果SendKeys不执行此任务,则始终可以使用evaluate手动执行并触发这些事件。如果打开浏览器控制台并检查要对其执行操作的图元,则会看到附加到这些图元的事件。从这里,您可以看到它们是DOM事件还是JQuery事件,因此您可以相应地使用document.querySelector或$。在编写任何代码之前,要知道,如果您跳转到浏览器javascript控制台,您在那里执行的任何代码都将在您的评估范围内得到;在将代码应用于脚本之前,可以在浏览器中快速测试代码 我没有详细介绍,我只是根据我的个人经验介绍了“fill()vs evaluate()vs sendKeys()”的表面,但为了具体回答您的问题,我们没有HTML页面,因此很难说。SendKeys无法工作但无法评估的原因有很多。在评估范围中,选择器可能错误或缺少事件
最后,正如Artjom所提到的,对于单击,最好选择casper。单击(选择器)由于您的问题更一般而不是具体,我将尝试以同样的方式回答 fill和FillSelector用于快速填充简单表单 如果您的网站使用大量javascript,并且在操作时触发事件,那么您就有SendKeys,它将尝试在事件发生时触发这些事件 最后,如果SendKeys不执行此任务,则始终可以使用evaluate手动执行并触发这些事件。如果打开浏览器控制台并检查要对其执行操作的图元,则会看到附加到这些图元的事件。从这里,您可以看到它们是DOM事件还是JQuery事件,因此您可以相应地使用document.querySelector或$。在编写任何代码之前,要知道,如果您跳转到浏览器javascript控制台,您在那里执行的任何代码都将在您的评估范围内得到;在将代码应用于脚本之前,可以在浏览器中快速测试代码 我没有详细介绍,我只是根据我的个人经验介绍了“fill()vs evaluate()vs sendKeys()”的表面,但为了具体回答您的问题,我们没有HTML页面,因此很难说。SendKeys无法工作但无法评估的原因有很多。在评估范围中,选择器可能错误或缺少事件
最后,正如Artjom提到的,对于单击,最好使用casper.click(selector)我看不到页面标记,因此这些选择器可能是完全错误的。另一种可能是,点击不起作用<代码>元素。单击()。有一个原因是,有多种方法可以完成看似相同的事情。我看不到页面标记,因此这些选择器可能是完全错误的。另一种可能是,点击不起作用<代码>元素。单击()。有一个原因,为什么有多种方法来做一件看似相同的事情。
casper.then(function() {
this.sendKeys('input#login-email', 'username');
this.sendKeys('input#login-password', 'password');
this.click('input[value="Sign in"]')
})