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を付けるのを忘れずに
コメント