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; } } ); });