CasperJS无法填写Google搜索字段

时间:2015-02-10 19:35:38

标签: javascript firefox phantomjs casperjs slimerjs

我正在使用CasperJS(使用 slimerjs 引擎)填写表单。然而,这不起作用。

我尝试使用简单的google.com脚本:

var casper = require("casper").create({
    verbose: true,
    logLevel: "debug"
});

var fs = require("fs");

phantom.cookiesEnabled = true;

casper.options.viewportSize = { width: 1024, height: 768 };

casper.start();

casper.userAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");

casper.thenOpen("http://www.google.com", function(response) {
    casper.fill("form[id='gbqf']", {
        q: "test"
    }, true);
}).run();

表单未填充,页面加载后没有任何反应..详细日志说明:

[info] [remote] attempting to fetch form element from selector: 'form[id='gbqf']'
[info] [phantom] Done 2 steps in 1086ms

(然后结束)

我做错了什么?表单ID 100%正确..

1 个答案:

答案 0 :(得分:2)

Google根据用户代理,视口大小,Cookie和其他指标提供不同的网页。你必须确保元素实际存在。您可以使用casper.exists()功能进行检查。

我发现谷歌搜索的一个好选择器是"form[action='/search']",无论引擎(PhantomJS或SlimerJS)和用户代理字符串(有或没有声明为IE)。