Selenium使うことになったので、Selenium実践入門読みながらインストールしようと思ったら、Seleniumのバージョンが3に上がってて、パッケージ構成から違ってて涙目になった。
ググったところ、下記の記事が参考になったが、一部つまづくところがあったので、自分のためにメモを残す。
なお対象のブラウザはFirefoxとChrome。
Selenium入門その6[Selenium3でWebDriver(Java/Junit4)の環境を作成しEdge,Chrome,Firefoxで確認してみる]
環境情報
ソフト | バージョン |
---|---|
Mac | OS X El Capitan 10.11.6 |
Selenium | 3.4.0 |
mozilla Firefox | 54.0.1 |
geckodriver | 0.18.0 |
Google Chrome | 59.0.3071.115 |
chromedriver | 2.30 |
前提
- Eclipseがインストール済みであること
- Firefoxがインストール済みであること
- Chromeがインストール済みであること FirefoxとChromeがインストール済みであることの確認は、LaunchpadでFirefox, Chromeで検索して、プログラムが見えればOKだと思う。
環境構築
基本は参考ページ通りでいいが、chromedriverはPATHの通ったディレクトリに配置しておかないと、実行時にエラーになるっぽい。
自分は/usr/local/bin配下に配置した。
実行
参考ページのソースを以下のように微修正して実行した。
package sample.selenium3; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.remote.DesiredCapabilities; public class Selenium3Sample { @Test public void firefoxTest() { System.setProperty("webdriver.gecko.driver", "./exe/geckodriver"); DesiredCapabilities cap = DesiredCapabilities.firefox(); cap.setCapability("marionette", true); WebDriver driver = new FirefoxDriver(cap); driver.navigate().to("http://www.google.com"); driver.findElement(By.id("lst-ib")).sendKeys("Selenium3"); driver.findElement(By.name("btnK")).click(); if(driver!=null) { driver.close(); } } @Test public void chromeTest() { System.setProperty("webdriver.chromedriver.driver", ""); //chromedriverはPATHの通っている/usr/local/binに配置 WebDriver driver = new ChromeDriver(); driver.navigate().to("http://www.google.com"); driver.findElement(By.id("lst-ib")).sendKeys("Selenium3"); // driver.findElement(By.name("btnK")).click(); //動かなかった driver.findElement(By.id("lst-ib")).sendKeys(Keys.ENTER); //動いた if(driver!=null) { driver.close(); } } }
参考ページからの変更点は3点。
- DesiredCapabilities周りの設定の削除
なしでも動いたので削除した。Seleniumのバージョンが上がって、なしで動くようになった? - chromedriverのPATH指定
exe配下にchromedriver置いてもちゃんと読んでもらえず、エラーになってしまう。
PATHの通ったところにchromedriverを配置したら読んでもらえたので、setPropertyの第二引数は明示的に空にしておいた。 - chromedriverでの検索実行
「driver.findElement(By.name(“btnK”)).click();」だと動かなかったので、とりあえず「driver.findElement(By.id(“lst-ib”)).sendKeys(Keys.ENTER);」にした。