Blog
HTML5資料室 » API検証結果

API検証結果

Last modified by kashi on 2015/10/19, 10:27

検証環境

バージョン

  • 2.33.0

OS

  • Windows Vista SP2

ブラウザ

PC

  • Internet Explorer 9
  • Firefox 10
  • Opera 11.61
  • Chrome(Chromium) 28

スマートフォン

  • Android 3.1 (Motorola XOOM)
  • iOS5 (iPhone4)

検証項目

テストブラウザを起動する

ブラウザを起動するには、テストしたいブラウザに応じて以下のドライバインスタンスを生成する必要があります。

クラス名テストの対象
AndroidDriverAndroid
ChromeDriverChrome
IPhoneDriveriPhone
InternetExplorerDriverInternet Explorer
OperaDriverOpera
FirefoxDriverFirefox

Internet Explorer、OperaとFirefoxは、以下のように何もパラメータを与えなくてもテストを実行できます。

WebDriver driver = new OperaDriver();
WebDriver driver = new FirefoxDriver();
WebDriver driver = new InternetExplorerDriver();

ただし、Windows Vista上でInternet Explorerをテストする場合、以下のようにパラメータを指定してインスタンスを生成する必要があります。

DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver driver = new InternetExplorerDriver(ieCapabilities);

The InternetExplorerDriver does not work well on Vista. How do I get it to work as expected

Chromeは、インスタンスを生成する前に予めwebdriver.chrome.driverにchromedriver.exeのパスを設定後、インスタンスを生成します。

System.setProperty("webdriver.chrome.driver", "lib/selenium/chromedriver.exe");
WebDriver driver = new ChromeDriver();

iPhoneは、端末側でWebDriverアプリケーションを起動後、アプリケーション下部に表示されているURLを、コンストラクタに指定してインスタンスを生成します。

WebDriver driver = new IPhoneDriver("http://xxx.xxx.xxx.xxx:3001/wd/hub/")

Androidは、USBと端末を接続後adb forward tcp:8080 tcp:8080をコマンドプロンプトで実行してからインスタンスを生成します。。都度コマンドプロンプトからコマンドを実行すると手間がかかるため、Javaからコマンドを実行する方法があります。

try {
  Process p = new ProcessBuilder("cmd", "/C", "C:\\android-sdk\\platform-tools\\adb.exe forward tcp:8080 tcp:8080").start();
  BufferedReader br = new BufferedReader(new InputStreamReader(
    p.getErrorStream()));
 try {
  for (;;) {
    String line = br.readLine();
   if (line == null)
    break;

   throw new RuntimeException(line);
  }
 } finally {
   br.close();
 }

} catch (IOException e) {
  e.printStackTrace();
}
 WebDriver driver = new AndroidDriver();

画面を操作する

WebDriverインターフェースには以下のメソッドが定義されており、AndroidDriver、ChromeDriver、InternetExplorerDriver、FirefoxDriver、OperaDriver、IPhoneDriverはこのインターフェースを実装しています。
画面の操作は以下のメソッドを使用してテストコードを記述します。

メソッド戻り値説明
close()void現在表示されているウィンドウを閉じる。
findElement(By by)WebElementByクラスで指定した条件から要素を検索する。
findElements(By by)java.util.List<WebElement>Byクラスで指定した条件から要素を検索する。
get(String)void指定したURLを開く。
getCurrentUrl()String現在ウィンドウに表示されているページのURLを取得する。
getPageSource()String最後に表示したページのソースを取得する。
getWindowHandle()String現在操作しているウィンドウのIDを取得する。
getWindowHandles()java.util.Set<String>ブラウザで表示されている全てのウィンドウIDを取得する。
manage()WebDriver.Optionscookie・IME・ログ・ウィンドウの操作を行う。
navigate()WebDriver.Navigationブラウザの戻る・進む・更新・指定したURLを表示する。
quit()voidブラウザを終了する。
switchTo()WebDriver.TargetLocator他のウィンドウまたはフレームにコマンドを送信する。
以下のメソッドがテストコードを記述するうえで重要となります。
  • 画面から特定のDOM要素を取得する場合 findElement()
  • ブラウザの戻る・進む・更新を行う場合 navigate()
  • ウィンドウのサイズ変更や移動や、cookieの操作を行う場合 manage()

アラートの文字列を取得する

アラートの文字列を取得するには、WebDriver.switchTo().alert()を実行します。

WebDriver driver = new FirefoxDriver();
Alert alert = driver.switchTo().alert();
alert.getText() // アラートに表示されている文字列を取得できる。

JavaDoc:WebDriver

DOM要素を検索する

テスト画面のDOM要素は、以下の方法で取得することができます。

  • クラス名
  • CSSセレクタ
  • ID
  • リンク名(完全一致・部分一致)
  • Name
  • タグ名
  • XPath

この条件を指定するためにByという静的クラスがあり、WebDriver.findElement()で以下のように使用します。

  • 例:yahoo!Japanの検索ボックスを取得する
WebDriver driver = new FirefoxDriver();
driver.get("http://www.yahoo.co.jp/");
WebElement element = driver.findElement(By.id("srchtxt"));

Byクラス

メソッド戻り値説明
className(String)static By文字列で指定したクラス名を検索条件とする。
cssSelector(String)static By文字列で指定したCSSセレクタを検索条件とする。
id(String)static ByID属性を検索条件とする。
linkText(String)static By文字列で指定したリンク名(完全一致)を検索条件とする。
name(String)static By文字列で指定したname属性を検索条件とする。
partialLinkText(String)static By文字列で指定したリンク名(部分一致)を検索条件とする。
tagName(String)static By文字列で指定したタグ名を検索条件とする。
xPath(String)static By文字列で指定したXPathを検索条件とする。
  • 例:class属性がsrchbtnの要素を取得する
WebDriver driver = new FirefoxDriver();
driver.get("http://www.yahoo.co.jp/");
WebElement element = driver.findElement(By.className("srchtxt"));
  • 例:inputタグで、type属性がtext でかつ name属性がqの要素を取得する
WebDriver driver = new FirefoxDriver();
driver.get("http://www.yahoo.co.jp/");
WebElement element = driver.findElement(By.xPath("//input[@type='text' and @name='q'"));

By.className()、By.cssSelector()、By.id()、By.linkText()、By.name()、By.partialLink()、By.tagName()、By.xPath()の戻り値はByクラスなので、
ドットアクセスで以下のように複数条件(AND)を指定することができる。

  • 例:name属性がhogeでかつ、クラス名がtestの要素を取得する
WebDriver driver = new FirefoxDriver();
driver.get("http://www.yahoo.co.jp/");
WebElement element = driver.findElement(By.name("hoge").className("test"));

JavaDoc:By

DOM要素を操作する

findElement()で取得したインスタンスのメソッドを実行することで、要素のクリックやキー入力が実行できます。
WebElementインターフェースには以下のメソッドが定義されています。

メソッド戻り値説明
clear()void要素の値を除去する。
click()void要素をクリックする。
findElement(By)WebElement子要素を検索する。(取得する要素が単数の場合)
findElements(By)List<WebElement>子要素を検索する。(取得する要素が複数の場合)
getAttribute(String)String属性を取得する。
getCssValue(String)StringCSSプロパティの値を取得する。
getLocation()Pointページの左上から見たこの要素の位置をXとY座標で取得する。
※Selendroidを用いたテストの場合、ウィンドウ可視範囲の左上から見た位置になる。
getSize()Dimensionこの要素大きさを取得する。
getTagName()Stringタグ名を取得する。
getText()Stringこの要素のinnerTextから値を取得する。
isDisplayed()booleanこの要素が表示または非表示か判定する。
isEnabled()booleanこの要素がenable(有効)か判定する。
isSelected()booleanこの要素が選択されているか判定する。
sendKeys(CharacterSequence)voidこの要素でキー操作を行う。
submit()voidサブミットを行う。

なお、各ドライバのfindElement()が返す具象クラスは以下のとおりです。

InternetExplorerDriverInternetExplorerElement
FirefoxDriverFirefoxWebElement
AndroidDriverAndroidWebElement
OperaDriverOperaWebElement

※ChromeDriver、IPhoneDriverのfindElement()には、専用のElementクラスはありません。

テキストボックスに値を設定する

要素への文字入力は、sendKeys()を使用する。

  • 例.yahoo!JAPAN の検索テキストボックスに『ネコ』と入力する。
WebDriver driver = new FirefoxDriver();
driver.get("http://www.yahoo.co.jp/");
WebElement element = driver.findElement(By.id("srchtxt"));
element.sendKeys("ネコ");

要素をクリックする


要素のクリックは、click()を使用する。

  • 例.yahoo!JAPAN の検索テキストボックスに『ネコ』と入力後、検索ボタンを押下する。
WebDriver driver = new FirefoxDriver();
driver.get("http://www.yahoo.co.jp/");
WebElement element = driver.findElement(By.id("srchtxt"));
element.sendKeys("ネコ");
driver.findElement(By.id("srchbtn").click();

JavaDoc:WebElement
XPath
CSSセレクタ

画面キャプチャを撮る

画面キャプチャを取るためには、TakesScreenshotインターフェースのgetScreenshotAs()を実行します。
しかしWebDriverクラスはgetScreenshotAS()を持っていないので、TakesScreenshotでキャストして実行します。

WebDriver driver = new FirefoxDriver();

try {
    File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(scrFile, new File("ファイルパス"));
} catch (IOException e) {
    e.printStackTrace();
}

キーボードイベントを実行する

キーボード操作のエミュレートは、Actionsクラスを使用します。

メソッド戻り値説明
build()ActionActionsクラスで登録した一連のアクションを1アクションとして実行するインスタンスを生成します。
click()Actions現在のカーソル位置でクリックします。
click(WebElement)Actions指定されたDOM要素の中央でクリックします。
clickAndHold()Actions現在のカーソル位置でマウスダウン(クリックしたままの状態)します。
clickAndHold(WebElement)Actions指定されたDOM要素の中央でマウスダウン(クリックしたままの状態)します。
contextClick(WebElement)Actions指定されたDOM要素の中央で右クリック(コンテキストクリック)します。
doubleClick()Actions現在のカーソル位置でダブルクリックします。
doubleClick(WebElement)Actions指定されたDOM要素の中央でダブルクリックします。
dragAndDrop(WebElement, WebElement)Actions第一引数の要素を第二引数要素の位置にドラッグアンドドロップします。
dragAndDropBy(WebElement, int, int)Actions第一引数の要素を、第二引数(X座標)と第三引数(Y座標)のオフセット位置にドラッグアンドドロップします。
keyDown(Keys)Actions指定されたキーを押下(押されたまま)します。
keyDown(WebElement, Keys)Actions第一引数で指定されたDOM要素にフォーカスして、第二引数で指定されたキーを押下(押されたまま)します。
keyUp(Keys)Actions指定されたキーを離します。
keyUp(WebElement, Keys)Actions第一引数で指定されたDOM要素にフォーカスして、第二引数で指定されたキーを離します。
moveByOffset(int, int)Actions現在位置から指定された位置にマウスカーソルを動かす。
moveToElement(WebElement)Actions指定されたDOM要素の中央にマウスカーソルを動かす。
moveToElement(WebElement, int, int)Actions第一引数で指定されたDOM要素の左上を(0,0)として、第二引数(X座標)と第三引数(Y座標)のオフセット位置にマウスカーソルを移動します。
perform()void登録した一連のアクションを実行します。
release()Actions左クリックのマウスダウンの状態を解除します。
release(WebElement)Actions指定された要素上で、左クリックのマウスダウンの状態を解除します。
sendKeys(CharSequence)Actionsアクティブな要素に対して指定されたキーを入力します。
sendKeys(WebElement, CharSequence)Actions第一引数で指定されたDOM要素に対して第二引数で指定されたキーを入力します。

タッチイベントを実行する

タッチ操作のエミュレートは、TouchActionsクラスを使用します。
TouchActionsクラスは、Actionsクラスを継承しているので、Actionsクラスのメソッドも使用することができます。

メソッド説明
doubleTap(WebElement e)指定した要素をダブルタップします。
down(int x, int y)タッチした状態(指定した座標に指を下げた状態)にします。
flick(int xSpeed, int ySpeed)xとyの加速度を指定してフリックします。
flick(WebElement e, int xOffset, int yOffset, int speed)指定した要素をxとyの方向にspeedの速度でフリックします。
longPress(WebElement e)要素を長押しします。
move(int x, int y)指定した座標に移動します。
scroll(int xOffset, int yOffset指定した座標にスクロールします。
scroll(WebElement e, int xOffset, int yOffset)指定した要素をxとyの方向にスクロールします。
singleTap(WebElement e)要素をシングルタップします。
up(int x, int y)タッチを解除(指定した座標で指を上げた状態)します。

TouchActionsクラスはビルダーなので、以下のようにアクションをチェーンで記述し、最後にperform()を呼び出してアクションを実行します。

  • 例.(0,0)の位置で画面をタッチし、そのままの状態で(100,100)の位置まで移動してタッチ状態を解除する。
AndroidDriver driver = new AndroidDriver();
TouchActions touch = new TouchActions(driver);
touch.down(0, 0);
touch.move(100, 100);
touch.up(100, 100);
touch.perform();

また、作成したアクションを複数回使用する場合は、build()を実行して一連のアクションをActionクラスとして取得します。

AndroidDriver driver = new AndroidDriver();
TouchActions touch = new TouchActions(driver);
touch.down(0, 0);
touch.move(100, 100);
touch.up(100, 100);
Action action = touch.build();
action.perform();
// 5秒後、再度同じアクションを実行する
Thread.sleep(5000);
action.perform();
touch.perform() // 実行しても何も起こらない

一度build()を実行すると、TouchActionsクラスのインスタンスのperform()を実行してもアクションは実行されません。

JavaScriptをテストコード上から実行する

WebDriverからJavaScriptの実行は、JavascriptExecutor(JavaScriptExecutorという名前のクラスもあるので注意)を使用します。
同期処理のJavaScriptを実行するには、executeScript()を使用します。

  • 例.BODYの背景を赤に変更する。
JavascriptExecutor exec = (JavascriptExecutor) new FirefoxDriver();
exec.executeScript("document.body.style.background = \"red\"");

非同期処理のJavaScriptを実行するには、executeAsyncScriptを使用します。

  • 例.setTimeout関数の戻り値『hello!』を取得する。
JavascriptExecutor exec = (JavascriptExecutor) new FirefoxDriver();
Object response = exec.executeAsyncScript("var callback = arguments[arguments.length-1]; window.setTimeout(callback('hello!'), 500)");
System.out.println(response); // hello!と表示される

WebDriver側でJavaScriptの実行結果を受け取るには、実行するJavaScriptコード内で、特定のコールバック関数に値を渡す必要があります。
値を返すためのコールバック関数はargumentsオブジェクトの末尾に格納されています。(arguments[arguments.length-1]で取得できます)

注意: AndroidDriver と iPhoneDriver は executeAsyncScript() 未対応

Android (AndroidDriver)とiPhone(IPhoneDriver) は executeAsyncScript()を実行できません。

非同期処理を実行する

非同期処理を待機するメソッドは、以下のものがあります。

  • スレッドを停止して非同期を待機する。
    • Thread.sleep() [java.lang.Thread]
    • Seleniumが用意している非同期処理用クラス
    • Wait.wait() [com.thoughtworks.selenium.Wait]
    • WebDriverWait.until() [org.openqa.selenium.support.ui]
    • WebDriver.Timeouts.inplicitlyWait() [org.openqa.selenium.WebDriver.Timeouts]

非同期処理を実行するボタンをクリックして、ID:hogeの要素が表示されたかのテストを例に、上記クラスの使用方法を説明します。

Thread.sleep()

指定したミリ秒スレッドを停止して非同期処理を待ちます。
このメソッドは指定した時間停止するだけなので、指定した時間以上に非同期処理に時間がかかると非同期処理が完了せずにテストが続行してしまいます。また逆に、指定した時間よりも早く非同期処理が終了すると、待ち時間が長くなってしまうことがあるため注意が必要です。

WebDriver driver = new FirefoxDriver();
WebElement asyncTask = driver.findElement(By.id("btn"));
asyncTask.click();
Thread.sleep(1000);
AssertThat(driver.findElement(By.id("hoge")), notNullValue());

Wait.wait()

非同期処理の終了条件をWait.until()で指定し、wait(String message, long millisecond)で待機します。
wait()の第二引数にはタイムアウトの時間を指定します。

WebDriver driver = new FirefoxDriver();
WebElement asyncTask = driver.findElement(By.id("btn"));
asyncTask.click();

Wait w = new Wait() {
  @Override
  public boolean until(Function function) {
      return driver.findElement(By.id("hoge") != null;
  }
};
w.wait("要素が見つかりませんでした。", 10000);

AssertThat(driver.findElement(By.id("hoge")), notNullValue());

WebDriverWait.until()

ExpectedCondition.until()に終了条件を指定して待機します。終了条件は、ExpectedConditionクラスのapply()を使用します。until()は終了条件を満たすまでapply()を繰り返し実行します。
WebDriverWaitクラスのuntil()は、ユーザが指定した任意の型の戻り値を取得することができます。
以下の例は、until()でWebElementを取得しています。

WebDriver driver = new FirefoxDriver();
WebElement asyncTask = driver.findElement(By.id("btn"));
WebDriverWait wait = new WebDriverWait(driver , 10000, 1000); // ドライバ、タイムアウト(ミリ秒)、 問合せ間隔(ミリ秒)   
ExpectedCondition<WebElement> condition = new ExpectedCondition<WebElement>() {
  @Override
  public WebElement apply(WebDriver driver) {
      return driver.findElement(By.id("hoge"));
  }
};

asynkTask.click();

WebElement el = wait.until(condition);
assertThat(el, notNullValue());

また、Selenium2.6からはExpectedConditionsクラスが追加され、このクラスが対応している終了条件は、簡潔に記述できるようになりました。

import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated;

WebDriver driver = new FirefoxDriver();
WebElement asyncTask = driver.findElement(By.id("btn"));
WebDriverWait wait1 = new WebDriverWait(driver, 10, 1000);
asyncTask.click();

WebElement el = wait1.until(ExpectedConditions.presenceOfElementLocated(By.id("hoge")));
assertNotNull(el.getText());

until()に条件として指定できる、ExpectedConditionsクラスのメソッドは以下とおりです。

メソッド戻り値説明
titleIs(String)Booleanページのタイトルが一致するか判定する。
titleContains(String)Boolean指定した文字列(大文字・小文字区別する)がタイトルに含まれているか。
presenceOfElementLocated(By)WebElement要素がDOM上に存在するか。可視・不可視かは判定しない。
visibilityOfElementLocated(By)WebElementlocatorで選択した要素がDOM上に存在し、可視状態でかつ幅と高さが0よりも大きいか。
visibilityOf(WebElement)WebElement要素がDOM上に存在し、可視状態でかつ幅と高さが0よりも大きいか。
presenceOfAllElementsLocatedBy(By)List<WebElement>locatorで選択した要素が一つ以上存在するか。
textToBePresentInElement(By, String)Booleanlocatorで選択した要素に、第二引数のテキストを持っているか。
textToBePresentInElementValue(By, String)Booleanlocatorで選択した要素のvalue属性と、第二引数のテキストが一致するか。
invisibilityOfElementLocated(By)Booleanlocatorで指定した要素が不可視または存在しないか。
elementToBeClickable(By)WebElementlocatorで指定した要素が可視状態でかつクリッカ可能か。
stalenessOf(WebElement)Boolean要素がDOMから分離されるまで待つ。
elementToBeSelected(WebElement)Boolean指定された要素が選択状態か。
elementSelectionStateToBe(WebElement, boolean)Boolean指定された要素の選択状態が、第二引数で指定した状態か。(true:選択/false:未選択)
elementToBeSelected(By)Booleanlocatorで指定した条件の要素が選択状態か。
elementSelectionStateToBe(By, boolean)Booleanlocatorで指定した要素の選択状態が、第二引数で指定した状態か。(true:選択/false:未選択)
frameToBeAvailableAndSwitchToIt(String)WebDriver指定されたフレームに切り替え(switchTo)可能か。可能な場合は切り替える。

WebDriver.Timeouts.inplicitlyWait()

WebDriver.Timeouts.implicitlyWait(long time, TimeUnit unit)を実行すると、WebDriver.findElement()実行時に要素が見つからない場合即座にNoSuchElementExceptionをスローせず、見つかるまでこのメソッドで指定した時間待機をを行います。
第一引数には待機する時間を、第二引数には、第一引数で指定する時間の単位を指定します。一度inplicitlyWait()を実行すると、このメソッドを実行したドライバの全てのfindElement()で待機を行います。ただし、このメソッドで指定できるのは、DOM要素の検索で見つかるまで待機する時間なので、検索以外の非同期処理は待機しません。

指定した時間以上に非同期処理に時間がかかると非同期処理が完了せずにテストが続行してまうため注意が必要です。

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement asyncTask = driver.findElement(By.id("btn"));
asynkTask.click();
WebElement el = driver.findElement(By.id("hoge"));
assertThat(el, notNullValue());

どの非同期処理クラスを使用すればよいか

以下のような用途で使用するクラスを選択して下さい。

  • 時間を指定して非同期処理を待機したい
    • DOM要素の検索時のみ待機したい
      • WebDriver.Timeouts.implicitlyWait()
  • テストケース(スレッド)を一時停止して待機したい
    • Thread.sleep()
  • 終了条件をオブジェクトで指定して非同期処理を待機したい
    • 待機終了時に、任意の型のオブジェクトを取得したい
      • WebDriverWait.until()
    • 待機のみ行う
      • WebDriver.wait()

画面の向き(オリエンテーション)を変更する

画面の向きは、Rotatable.rotate()メソッドを実行することにより変更することができます。
Rotatableはインターフェースなので、このインターフェースを実装しているドライバのみ実行することができます。

  • 例.画面を横向き(ランドスケープ)に変更する場合
AndroidDriver driver = new AndroidDriver();
((Rotatable) driver).rotate(ScreenOrientation.LANDSCAPE);
  • 例.画面を縦向き(ポートレイト)に変更する場合
AndroidDriver driver = new AndroidDriver();
((Rotatable) driver).rotate(ScreenOrientation.PORTRAIT);

注意: AndroidDriverのみ画面の向きを変更可能。IPhoneDriverは未対応。

cookieを操作する

テストブラウザ上でCookieを操作するには、WebDriver.manage()にある以下のメソッドを使用します。

メソッド戻り値説明
addCookie(org.openqa.selenium.Cookie)voidCookieを追加します。
deleteCookie(org.openqa.selenium.Cookie)void指定されたCookieを削除します。
deleteAllCookies()void現在テストしているドメインのCookieを全て削除します。
deleteCookieNames(String)void名前を指定してCookieを削除します。
getCookieNamed(String)Cookie指定した名前のCookieを取得します。
getCookies()Set<Cookies>現在テストしているドメインのCookieを全て削除します。
※上記一覧のパラメータに書かれているCookieクラスのFQCNはorg.openqa.selenium.Cookieです。

Cookieクラスのコンストラクタ

Cookie(String name, String value)
Cookie(String name, String value, String path)
Cookie(String name, String value, String path, java.util.Date expiry)
Cookie(String name, .String value, String domain, String path, java.util.Date expiry, boolean isSecure)
Cookieクラスのメソッド
メソッド戻り値説明
equals(Object)booleanこのCookieと指定されたCookieがインスタンスとして同一であることと、nameとvalueが一致するかを判定します。
getDomain()Stringdomainを取得します。
getExpiry()java.util.Dateexpiry(有効期限)を取得します。
getName()Stringnameを取得します。
getPath()Stringpathを取得します。
getValue()Stringvalueを取得します。
isSecure()booleansecure属性が設定されているか(secure=trueか)判定します。
validate()protect void内容が正しいかを検証します。
toString()Stringdomain,expiry,name,path,value,secureを文字列化した値を取得します。
hashcode()intnameのハッシュコードを取得します。
  • 例.Cookieを追加する。
WebDriver driver = new ChromeDriver();
Cookie cookie = new Cookie("hogehoge", "1");
driver.manage().addCookie(cookie);
  • 例.Cookieを削除する。
driver.manage().getCookieNamed(("hogehoge");

セキュア(HTTPS)なページをテストする

HTTPSなページでもWebDriverでテストすることができます。
ただし、ChromeとFireFoxは証明書に関する確認ページが表示れてしまうため、ドライバインスタンスの作成時に以下のパラメータを与えて確認ページを表示しないよう設定します。

ChromeDriver(Chrome)

ChromeOptions options = new ChromeOptions();
options.addArguments("--ignore-certificate-errors");
ChromeDriver driver = new ChromeDriver(options);

FirefoxDriver(FireFox)

profile = new FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
FirefoxDriver driver = new FirefoxDriver(profile);

HTML5 API を操作する

Application Cache

BrowserConnection (オンライン/オフライン判定)

DatabaseStorage (Web SQL Database)

LocationContext (Geolocation API)

LocalStorage (Web Storage)

SessionStorage (Web Storage)

WebDriverでできない操作

  • ファイルダイアログの操作
  • マルチタッチ(ピンチイン・ピンチアウト等)

使用上の注意点・ポイント

  • マウス操作のエミュレート時、イベントのscreenX/Yプロパティの値がゼロになる
    screenX/Yの値はゼロになる。
    offset,pageなどの値は通常のマウス操作と同じなので、プログラムでは可能な限りscreenX/Yではなくこれらの値を使うようにする。

Copyright (C) 2012-2017 NS Solutions Corporation, All Rights Reserved.