【Selenium】【Java】Selenium in JUnit ~文法基礎編~

 ■ 構文:WebDriver / WebElement の使い方

http://codezine.jp/article/detail/7456?p=4

がとても参考になる

 ■ ブラウザの起動・終了

// ブラウザの起動

// Firefox
WebDriver driver = new FirefoxDriver();

// Chrome
File fileForChrome = new File("C:/workspace/SampleJavaCodes/selenium-2.45.0/chromedriver.exe");
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, fileForChrome.getAbsolutePath());
WebDriver driverForChrome = new ChromeDriver();

// IE
File fileForIE = new File("C:/workspace/SampleJavaCodes/selenium-2.45.0/IEDriverServer.exe");
System.setProperty(InternetExplorerDriverService.IE_DRIVER_EXE_PROPERTY, fileForIE.getAbsolutePath());
WebDriver driverForIE = new InternetExplorerDriver();

// ブラウザの終了
driver.quit();
driverForChrome.quit();
driverForIE.quit();

 ■ ページ情報を取得

// ページのタイトル
String title = driver.getTitle();

// ページのURL
String url = driver.getCurrentUrl()

 ■ URLを指定してページを開く

driver.get("https://www.yahoo.co.jp/");

 ■ 要素を取得する

// id属性で指定
WebElement elementById = driver.findElement (By.id("buttonID"));

// name属性で指定
WebElement elementByName = driver.findElement(By.name("textboxName"));

// リンクテキストで指定
WebElement elementByLinkText = driver.findElement(By.linkText("Go to Home"));

// CSSセレクタで指定
WebElement elementByCssSelector = driver.findElement(By.cssSelector("#header css"));

// XPathで指定
WebElement elementByXpath = driver.findElement(By.xpath("//body"));

CSSセレクタ について

* 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2021/02/27/000000

 ■ クリックする

elementByLinkText.click();

 ■ 文字を入力する / クリアする

// 文字を入力する
elementByName.sendKeys("Input Data");

// クリアする
elementByName.clear();

 ■ 値を検証する

String actual = elementByCssSelector.getText();
assertEquals("Expected Text", actual);

 ■ 要素を読み込むまで待機する処理

protected void waitForElementToLoad(final By locator, int timeOutInSeconds) {
    new WebDriverWait(driver, timeOutInSeconds).until(new ExpectedCondition<Boolean>() {
        public Boolean apply(WebDriver driver) {
            return driver.findElement(locator).isDisplayed();
        }
    });
}

 一口メモ

 * テスト用のAbstarctを設けて共通した処理を纏めておいた方がいい
  + 特にJUnitの「@Before setUp()」「@After tearDown()」で初期化・後処理を纏めておくといいかも

 参考文献

公式サイトのサンプル
http://www.seleniumhq.org/docs/03_webdriver.jsp#introducing-the-selenium-webdriver-api-by-example
初めに読むといいかも
http://codezine.jp/article/detail/7456?p=4
その他のサンプル
http://qiita.com/yacchin1205/items/e742519e2df32c006679
http://www.ibm.com/developerworks/jp/web/library/wa-selenium2/
http://itref.fc2web.com/selenium/
http://d.hatena.ne.jp/suzukij/20110828/1314549996
http://www.atmarkit.co.jp/ait/articles/1211/07/news009_2.html
http://yamashiro0110.hatenadiary.jp/entry/2014/05/11/172948
http://d.hatena.ne.jp/i_matsui/20130814/1376449964
http://www.atmarkit.co.jp/ait/articles/1210/05/news104_2.html

 関連記事

Selenium ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2015/04/11/235336
Selenium WebDriver + Java ~ 初期設定編 ~
https://dk521123.hatenablog.com/entry/2015/05/12/230924
セレクタ
https://dk521123.hatenablog.com/entry/2021/02/27/000000