[英]CasperJS click google search button, this.evaluate() javascript
我现在正在学习Casperjs,我想模仿Google搜索(1.填写内容2.单击按钮;不使用“填充”)。 javascript代码可以在我的Chrome控制台中使用,但不能在我的CasperJS中使用。 有什么想法,抱怨或与我相同的经历吗?
等待答案!
var casper = require("casper").create({
logLevel:"info",
verbose:true,
});
casper.start("https://www.google.fr/",function(){
this.evaluate(function(){
document.getElementById("gbqfq").value="phantomjs";
document.getElementById("gbqfsa").click();
});
//this.fill('form[action="/search"]',{q:'phantomjs'},true);
}).then(function(){
this.echo(this.getTitle());
});
casper.run();
Google会根据用户代理字符串的不同来构建页面,因此您需要在桌面浏览器中设置页面。
var casper = require("casper").create({
logLevel:"debug",
verbose:true,
pageSettings: {
userAgent: "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36"
}
});
然后,您可以更改该值,但是,即使元素上存在click()
函数,也无法执行任何操作。
casper.start("https://www.google.fr/").then(function(){
this.evaluate(function(){
var qq = document.querySelector("input[name=q]"),
qb = document.querySelector("button[name=btnK]"),
iq = document.getElementById("gbqfq"),
ib = document.getElementById("gbqfba");
__utils__.echo("Fields: "+JSON.stringify({
qq: !!qq, // true
qb: !!qb, // false w/o UA, true w/ UA
iq: !!iq, // false w/o UA, true w/ UA
ib: !!ib, // false w/o UA, true w/ UA
}));
qq.value="phantomjs";
//iq.value="phantomjs";
qb.click(); // nothing happens
ib.click(); // nothing happens
});
}).then(function(){
this.echo(this.getTitle());
this.capture("result.png");
});
我找不到从页面上下文中单击按钮的方法。 因此,此代码不会产生结果页。 您可以使用fill
或sendKeys
因为它们会在搜索字段上调用事件处理,该事件处理将自动(即时)执行搜索。 另外,由于搜索是即时的,因此无需在fill
函数中将Submit参数设置为true
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.