gpt4 book ai didi

javascript - CasperJS 点击谷歌搜索按钮,this.evaluate() javascript

转载 作者:行者123 更新时间:2023-11-30 17:29:30 24 4
gpt4 key购买 nike

我现在正在学习Casperjs,我想模仿谷歌搜索(1.填写内容2.单击按钮;而不是使用'fill')。 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");
});

我找不到从页面上下文中单击按钮的方法。所以这段代码不会产生结果页面。您可以使用 fillsendKeys,因为它们会调用搜索字段上的事件处理,自动(即时)进行搜索。此外,您不需要在 fill 函数中将提交参数设置为 true,因为搜索是即时的。

关于javascript - CasperJS 点击谷歌搜索按钮,this.evaluate() javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23450983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com