TRY AND ERROR

気になったこと、勉強したこと、その他雑記など色々メモしていきます。。Sometimes these posts will be written in English.,

selenium - node.js - phantomJSでヘッドレスWEBサイトチェック

WEBサイトのコンテンツを自動でチェックする必要があり、
seleniumを使って自動化できないか試したのでメモ。

ちなみに、今回はヘッドレスなlinuxサーバ環境(ブラウザを立ち上げない環境)でチェックツールを実行しました。

環境

・node.js(チェックロジック)
・phantomJS(ヘッドレス環境を体現)
selenium webdriver(チェックロジック)


phantomJSは従来のようなのブラウザによるGUI描画を必要とせず高速に処理することができ、
GhostDriverはPhantomJSを使用したWebDriver Wire Protocolを再現します。


※環境構築部分は割愛。。。

1.phantomJSのGhostDriverを起動
$ phantomjs -w
2.node.jsでselenium webdriverモジュールを読み込む
var wb = require("selenium-webdriver");
2.node.jsでwebdriverを起動、WEBサイトを読み込みチェックロジックを書く
var drivers = new wb.Builder()
		.usingServer("http://localhost:8910")
		.withCapabilities(wb.Capabilities.chrome())
		.build();
drivers.get("サイトURL");

driver.findElement(wb.By.css("CSSセレクタ")).then(function(elem) {
    //取得したエレメントに対して何らかの処理を行う
});

こんな感じでヘッドレス環境でWEBサイトのエレメントを取得して
ごにょごにょできるというわけですね。

ちなみに、ヘッドレス環境ではスクリーンショットも撮れます!

var fs = require("fs");
driver.takeScreenshot()
    .then(function(img) {
        fs.writeFile(ファイル名, img, "base64",
            function(error) {
                if(error) {
                    throw error;
                }
            }
        );
});


node.jsのデバッグ方法はこちら