繁体   English   中英

CasperJS单击google搜索按钮,this.evaluate()javascript

[英]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");
});

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM