Selenium3をMacで動かす

Selenium使うことになったので、Selenium実践入門読みながらインストールしようと思ったら、Seleniumのバージョンが3に上がってて、パッケージ構成から違ってて涙目になった。
ググったところ、下記の記事が参考になったが、一部つまづくところがあったので、自分のためにメモを残す。
なお対象のブラウザはFirefoxChrome

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がインストール済みであること FirefoxChromeがインストール済みであることの確認は、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点。

  1. DesiredCapabilities周りの設定の削除
    なしでも動いたので削除した。Seleniumのバージョンが上がって、なしで動くようになった?
  2. chromedriverのPATH指定
    exe配下にchromedriver置いてもちゃんと読んでもらえず、エラーになってしまう。
    PATHの通ったところにchromedriverを配置したら読んでもらえたので、setPropertyの第二引数は明示的に空にしておいた。
  3. chromedriverでの検索実行
    「driver.findElement(By.name(“btnK”)).click();」だと動かなかったので、とりあえず「driver.findElement(By.id(“lst-ib”)).sendKeys(Keys.ENTER);」にした。

まとめ

参考ページをベースにちょっと変更をしたら、Selenium3を動かすことができた。参考ページに感謝。