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などに登録しておくとよいでしょう。

参考