1

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% 正しいです。

4

1 に答える 1

2

Google は、ユーザー エージェント、ビューポート サイズ、Cookie、その他の指標に基づいてさまざまなページを提供します。要素が実際にそこにあることを確認する必要があります。関数で確認できcasper.exists()ます。

"form[action='/search']"エンジン(PhantomJSまたはSlimerJS)とユーザーエージェント文字列(IEとしての宣言の有無にかかわらず)に関係なく、Google検索の優れたセレクターが見つかりました。

于 2015-02-10T20:24:00.287 に答える