はじめに
Mirror House Lab: Nashornを使ってJavaScriptを書いてSelenium (ChromeDriver) を動かす。で、「もうすぐjshellを含むJava SE 9がリリースされてJavaをスクリプトとして実行できるようになるだろうに、何をやっているんだ」という気もしているけれど、Java SE 8環境ですぐに動かしたかったので。と言っていた。
Java SE 9がリリースされたのでJShellで動かす方法について書く。
環境と準備
環境は以下の通り。- OS: Windows 10 (64bit)
- JDK: 9
- Selenium Standalone Server: 3.6.0
- Chrome: 61
- ChromeDriver: 2.33
SeleniumとChromeDriverの準備作業は変わらない。ただしNashhornとJShellでクラスパスの通し方が異なる(後述)。JDKとChromeはインストール済みとする。
Selenium: DownloadsからSelenium Standalone Serverをダウンロードする。保存先フォルダにパスを通すのは必須ではない。JShellはオプションでもコマンドでもクラスパスを指定できる。この記事ではコマンドで指定する方法を採用する。
ChromeDriver: Downloads - ChromeDriver - WebDriver for Chromeから、chromedriver_win32.zipをダウンロードして展開する。Windows 64bit用は提供されていないので32bit用を使う。こちらも保存先にパスを通すのは必須ではない。Javaの場合、プロパティに設定できる。このエントリィではその方法を採用する。
サンプルコード
クラスパスを通すのはJShellのコマンド。あとはJavaなので取り立てて言うことはない。// jshell-selenium.jsh /env -class-path C:\path\to\selenium-server-standalone-3.6.0.jar; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; String pathToChromeDriver = "C:\\path\\to\\chromedriver.exe"; System.setProperty("webdriver.chrome.driver", pathToChromeDriver); ChromeDriver driver = new ChromeDriver(); driver.get("http://www.google.com/xhtml"); Thread.sleep(5000); WebElement searchBox = driver.findElement(By.name("q")); searchBox.sendKeys("ChromeDriver"); searchBox.submit(); Thread.sleep(5000); driver.quit();
実行方法
最初はJShellを起動して、下記を実行する。> /open C:\path\to\jshell-selenium.jsh
2回目以降、そのまま繰り返すときは/reloadコマンド。
スクリプトファイルを修正して再実行するなら、/resetコマンドを実行してから、/openコマンド。JShellは/listで表示されるコードを実行するのだけれど、/openコマンドは追記して実行するので、もう1回/openコマンドでスクリプトファイルを読み込むと2回実行される。
クラスパスの通し方
クラスパスは、JShell起動時にコマンドラインオプションで渡すこともできる。External Codeの"Setting The Class Path"を参照。Java 9なのでクラスパスではなくてモジュールも使える(External Codeの"Setting Module Options")。でも、そのモジュールをまだよく分かっていないので、まずはそちらから調べないと。
0 件のコメント:
コメントを投稿