「Node.jsでブラウザを自動操作してみよう」の感想・備忘録3

スポンサーリンク
「Node.jsでブラウザを自動操作してみよう」の感想・忘備録2の続き

nexeで実行ファイルを生成してみる

これは書籍には書かれていなかったが、個人的に試してみた。
Node.jsにnexeという実行ファイルを生成してくれるライブラリがある。
それを使ってseleniumの処理を実行ファイルに書き出せば、ダブルクリックするだけでブラウザ自動操作が実行されるのでは!?

というわけで、まずはnexeをインストール
npm install nexe

次に、以下のテスト用jsファイルを用意。

const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

const driver = new webdriver.Builder()
    .withCapabilities(webdriver.Capabilities.chrome())
    .setChromeService(new chrome.ServiceBuilder(__dirname + "/chromedriver")) // windows用に出力する場合はchromedriver.exe
    .build();


async function main() {
    await driver.get('https://www.google.com/');
    await driver.findElement(webdriver.By.css('[name="q"]')).sendKeys('上尾 天気');

    await driver.executeScript("document.querySelector('" + '[name="btnK"]' + "').click()");

    // リンクの出現を待つ
    const locatorYahoo = webdriver.By.xpath('//h3[contains(text(), "Yahoo!天気・災害")]')
    await driver.wait(webdriver.until.elementLocated(locatorYahoo), 10000);
    await driver.findElement(locatorYahoo).click();
}
main();

そしてnexeを実行
nexe nexe_test.js

生成されたnexe_testファイルと同じディレクトリにchromedriverを格納し、nexe_testをダブルクリックしたところ、見事にChromeが自動実行された!

ファイルサイズが大きいのは気になるが、Node.js本体も実行ファイルに含まれるので仕方がないところか。
これであれば、Node.jsがインストールされていないPCでも実行できるので、実行ファイルを配布することもできる。素晴らしい!!

なお、nexe実行時に–targetオプションを付けるとプラットフォームの指定が可能とのこと。
–targetオプションを付けないと、nexeを実行しているPC自身のプラットフォーム用の実行ファイルとなる。

例)
--target windows-x64--12.8.0
--target mac-x64-12.8.0
※末尾はNode.jsのバージョン
※Windowsの場合は、chromedriverのファイル名に.exeを付けるのを忘れずに

コメント