widows10でnode.js + sleniumをテストする実践をやってみます。※この方法既出の情報ではありますが、実践メモとして残しておきます。
※node.js + seleniumの記事では以下の記事がかなりわかりやすいです。↓
Nodejsを使ってSeleniumでChromeを動かす – Qiita
Windowsにnode.jsが入っているか自身がない人はこちらをご覧ください
Windows10にnode.jsが入ってるか自身がないとき。
Windows10にnode.jsの導入がまだの人は以下のダウンロードリンクからnode.jsをダウンロードできます。
Node.js
seleniumとクロームのドライバーを導入する
seleniumの導入
seleniumをいれるには以下のコマンドをうつだけでよいようです。
npm i selenium-webdriver
導入はうまくいきました。
Chromeのドライバーを導入する
Chromeのドライバーはヘッドレスクロームを使うために必要です。以下のリンクから実行ファイル入りのフォルダをダウンロードできるようです。わたしはもっていたので確認してません。
Downloads – ChromeDriver – WebDriver for Chrome
※jsファイルがあるパスを同じ場所にドライバーをおきます。
node.js + selenium + ヘッドレスクロームを動かしてみる
※sample.jsというファイルで以下のコードを保存します。
const fs = require('fs'); const { promisify } = require('util'); const webdriver = require('selenium-webdriver'); const { Builder, By, until } = webdriver; const capabilities = webdriver.Capabilities.chrome(); capabilities.set('chromeOptions', { args: [ '--headless', '--no-sandbox', '--disable-gpu', `--window-size=1980,1200` ] }); // awaitを使うので、asyncで囲む (async () => { // ブラウザ立ち上げ const driver = await new Builder().withCapabilities(capabilities).build(); // Youtubeへ移動 await driver.get('https://www.youtube.com/'); // 検索ボックスが表示されるまで待つ await driver.wait(until.elementLocated(By.id('search')), 10000); let base64 = await driver.takeScreenshot(); let buffer = Buffer.from(base64, 'base64'); // bufferを保存 await promisify(fs.writeFile)('screenshot.jpg', buffer); // ブラウザ終了 driver.quit(); })();
上記のコードはyoutubeのスクリーンショットをとってくるコードです。ヘッドレスにしたくない場合は–headlessの部分を削除するかコメントアウトします。
node sample.js
※node.jsでsample.jsを実行します。
実行してとれたスクリーンショットがこちら
とりあえずたしかに動きました。わからないけどnode.jsはなんか速い気がするのは気のせいだろうか・・・。ヘッドレスブラウザは動きが見えないのが怖い、とか思いはじめるのがにわかなのでそうならないようにどうにかしていきたいところ。
コメント