Posted at

WSLからWindows側のSelenium-Standaloneを起動したい

NodeJSのライブラリ、selenium-standaloneはご存知でしょうか?

NodeJSとJavaを事前にインストールしておく必要はありますが、Windowsでもコマンド一発で、Selenium + インストール済みのブラウザに対応したWebDriverを自動でインストールしてくれるのでとても便利ですね。

さて、Windowsで開発している人の多くはWSL(Windows Subsystem for Linux)を利用しているかと思いますが、Windows側にインストールしたブラウザをselenium-standaloneで自動操作するには、selenium-standaloneもWindows側でインストールしておかないといけません。

とはいえ、わざわざSeleniumを使いたい時だけPowerShellを起動するのも面倒ですし、Linux側から起動できるといいですね。

というわけで、その方法がこちらです。


cmd.exe /c selenium-standalone.cmd install # SeleniumやWebDriverなどのダウンロード
cmd.exe /c selenium-standalone.cmd start # Seleniumサーバの開始

上記をbash上で実行すると、Windows側のselenium-standaloneコマンドが実行されます。

PowerShellやコマンドプロンプトで selenium-standalone を実行する場合と同じことになります。


解説

WSLからWindows側のコマンドを実行するには、実行したいコマンドを 拡張子付き で指定する必要があります。

例えば、bash上で下記のように実行すると、Windows側のselenium-standaloneが呼び出されます。

$ selenium-standalone.cmd start

コマンドの拡張子を知りたい場合は、PowerShellでGet-Commandを使うと知ることができます。

PS C:\Users\tsemura > Get-Command selenium-standalone

CommandType Name Version Source
----------- ---- ------- ------
Application selenium-standalone.cmd 0.0.0.0 C:\Users\tsemura\AppData\Roaming\npm\sel...

さて、ただの実行ファイル(.exe ファイル)であれば単に拡張子付きで実行すればよいのですが、バッチファイルなどの場合はこのままでは実行できないので、コマンドプロンプト経由で実行する必要があります。

と言っても、Windows側でコマンドプロンプトを起動する必要はありません。bashでcmd.exeを実行し、実行時オプションで実行したいコマンドを渡してあげればOKです。


cmd.exe /c selenium-standalone.cmd start

というわけで、↑が最終的に実行するコマンドになります。

頻繁に使う人はaliasなどに登録しておくとよいでしょう。


参考

https://www.atmarkit.co.jp/ait/articles/1805/31/news052.html