1. ホーム
  2. javascript

[解決済み] PhantomJS: 要素をクリックする

2023-07-08 19:17:38

質問

PhantomJSで要素をクリックするにはどうすればよいですか?

page.evaluate(function() {
    document.getElementById('idButtonSpan').click();  
});

これは、"undefined is not a function..."というエラーを出します。

もし、代わりに

 return document.getElementById('idButtonSpan');

と入力し、それを印刷します。

と表示すれば、[object object]と表示されるので、要素は存在することになります。

要素はボタンとして動作しますが、実際には単なるspan要素であり、submit inputではありません。

このボタンクリックをCasperで動作させることができたのですが、Casperには他の制限があったので、PhantomJSに戻りました。

どのように解決するのですか?

.click() は標準ではありません。イベントを作成し、それをディスパッチする必要があります。

function click(el){
    var ev = document.createEvent("MouseEvent");
    ev.initMouseEvent(
        "click",
        true /* bubble */, true /* cancelable */,
        window, null,
        0, 0, 0, 0, /* coordinates */
        false, false, false, false, /* modifier keys */
        0 /*left*/, null
    );
    el.dispatchEvent(ev);
}