[初心者向け] JavaでSeleniumを動かす

# Seleniumとは
ブラウザを自動で操作できるツールです．
ユーザの動作をエミュレートできるので，テストと組み合わせて使われることが多いです．

# 必要なもの
- Java
- Eclipse
- Google Chrome

# 事前準備
## ダウンロードするもの
- Selenium
- ChromeDriver

### Seleniumのダウンロード
まずはSeleniumの[ダウンロードページ](http://www.seleniumhq.org/download/)で必要なライブラリを落とします．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/80380/95d71f03-79b3-8a54-4ad3-cd1093ef867b.png)

今回はJavaなので，Javaの **Download** をクリックしましょう．
(クリックするとzipのダウンロードが始まります．)

ダウンロードが終わったら解凍しておきましょう．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/80380/b0029ce1-3552-32e8-4841-5222a01d7e16.png)


**client-combined-3.4.0-nodeps.jar** がSelenium本体で， `lib/` 以下に入っているものが依存ライブラリです．(Seleniumを動かすには `lib/` 以下のものも全て必要です．)

libには `JUnit` も入っているので，これだけですぐ使えるようになります．

### ChromeDriverのダウンロード
こちらもChromeDriverの[ダウンロードページ](https://sites.google.com/a/chromium.org/chromedriver/downloads)でChromeDriverをダウンロードします．

現時点(2017/06/14)での最新版は2.30なので，これを落とします．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/80380/df843368-50ee-45b4-fc0e-cb6f2cca80ca.png)

ChromeDriverのバージョンによってサポートしているChromeのバージョンが異なるので気をつけてください．(ChromeDriver2.30だとChrome v58-60)



![image.png](https://qiita-image-store.s3.amazonaws.com/0/80380/8b2a5e0e-530b-e754-5b4d-17d5ee422543.png)

OSに合わせたChromeDriverをダウンロードします．

落としたzipを解凍すれば，必要なもののダウンロードは完了です！

# Seleniumを動かす
## プロジェクトの準備
Eclipseを起動して新プロジェクトを作成します．(名前は `selenium-sample` にしました．)
まずは依存ファイル等を置くためのフォルダを作りましょう．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/80380/b1d81aae-3465-528a-fe6f-df0e862383f8.png)

## 依存ファイルの配置
Selenium等の依存ライブラリを置くためのフォルダ(lib)，ChromeDriverを置くためのフォルダ(exe)を作成しました．
次は各フォルダにファイルを配置していきましょう．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/80380/dc8132e3-18be-86c5-8a07-e2cde79db78f.png)

seleniumの `lib/` 以下のものも全て同じフォルダに入れてしまいましょう．

## ビルドパスを通す

次にビルドパスを通しましょう．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/80380/44cee88c-d75c-712e-ad86-3930c681607c.png)

libに入れた全てのjarにビルドパスを通します．
**適用(apply)の押し忘れに注意！**

これでSeleniumを動かす準備ができたので，実際に動かしてみましょう．

## Seleniumを動かす．

srcに新しいJavaClassを作成します．(名前はSampleTestにしました．)

今回はChromeDriverの[Getting Started](https://sites.google.com/a/chromium.org/chromedriver/getting-started)にあるサンプルコードを使用します．

ChromeDriverへのpathだけ変更します．

```:Java
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class SampleTest {
	@Test
	public void testGoogleSearch() throws InterruptedException {
	  // Optional, if not specified, WebDriver will search your path for chromedriver.
	  System.setProperty("webdriver.chrome.driver", "./exe/chromedriver");

	  WebDriver driver = new ChromeDriver();
	  driver.get("http://www.google.com/xhtml");
	  Thread.sleep(5000);  // Let the user actually see something!
	  WebElement searchBox = driver.findElement(By.name("q"));
	  searchBox.sendKeys("ChromeDriver");
	  searchBox.submit();
	  Thread.sleep(5000);  // Let the user actually see something!
	  driver.quit();
	}
}
```

これであとは実行すれば動くと思います．ぜひ試してみてください．

# トラブルシューティング
## Seleniumが動かない．
上の通りやってみて動かない場合は，eclipseのエラーメッセージをみてください．

### The driver is not executable.
(Macの人に多い)
ChromeDriverに実行権限がないのが原因ですので，実行権限を付与してください．

### Execution file is not found
(Windowsの人に多い)
おそらくパスが通っていないので，パスを適切に設定してください．

# 最後に

こちらの[レポジトリ](https://github.com/tsukakei/selenium-sample)をcloneしてもらえればすぐ使えると思います．(chromedriverがMac用なので注意)