自動テストツール③ Selenium2 5/5

ブラウザ

Firefox

using OpenQA.Selenium.Firefox;
IWebDriver driver = new FirefoxDriver();
driver.Url = “http://google.com”;

InternetExplorer

using OpenQA.Selenium.IE;

//IE用WebDriver(実行ファイル:IEDriverServer.exe)をダウンロード&パス指定
IWebDriver driver = new InternetExplorerDriver(@”保存パス”);
例:「D:\MyProject\Library」に保存した場合(↓フォルダまで)
IWebDriver driver = new InternetExplorerDriver(@”D:\MyProject\Library\”);
driver.Navigate().GoToUrl(@”http://google.com”);

Firefox

Imports OpenQA.Selenium.Firefox
Dim driver As IWebDriver = New FirefoxDriver
driver.Url = “http://google.com”

Internet

Imports OpenQA.Selenium.IE
Dim driver As IWebDriver = new InternetExplorerDriver(“保存パス”)
例:「D:\MyProject\Library」に保存した場合(↓フォルダまで)
Dim driver As IWebDriver = new InternetExplorerDriver(“D:\MyProject\Library\”)
driver.Url = “http://google.com”


自動テストツール③ Selenium2 4/5

wait処理

wait.Until

//指定のタイトルになるまで10秒待つ。
//ならなかったらNUnitでエラー表示
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, 10));
wait.Until(ExpectedConditions.TitleIs(“TEST”));

//指定の要素があるかチェック
wait.Until(ExpectedConditions.ElementExists(By.Id(“myText”)));

//指定の要素が可視かチェック
wait.Until(ExpectedConditions.ElementIsVisible(By.Id(“myText”)));

メソッド

Clear()

//要素のクリア
IWebElement element = driver.FindElement(By.Id(“myText”));
element.Clear();
//こういう書き方も可(メソッドチェーン)
driver.FindElement(By.Name(“myText”)).Clear();

SendKeys()

//要素への入力(追記)
element.SendKeys(“yahoo”);
//こういう書き方も可(メソッドチェーン)
driver.FindElement(By.Name(“myText”)).SendKeys(“yahoo”);

Submit()

element.Submit();

Click()

//ボタン・リンクのクリック
driver.FindElement(By.Name(“btnK”)).Click();
driver.FindElement(By.LinkText(“Selenium – Web Browser Automation”)).Click();

GetAttribute()

//指定要素のvalue属性値取得
Assert.AreEqual(“aaayahoo”, element.GetAttribute(“value”));

GetCssValue()

GetScreenshot()

//スクリーンショットを保存(bin内)
Screenshot shot = ((ITakesScreenshot)driver).GetScreenshot();
byte[] screenshotAsByteArray = shot.AsByteArray;
shot.SaveAsFile(“firefox.png”, ImageFormat.Png);

プロパティ

Displayed

Enabled

Location

Selected

CheckBox、Select等

Size

TagName

Text

タグ間テキスト

自動テストツール③ Selenium2 3/5

using System.Drawing.Imaging;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace Test
{
 [TestFixture]
  public class clsTest
  {
  
   [Test]
   public void Main()
   {
   
    ’Firefox起動。URLを指定&遷移。
    IWebDriver driver = new FirefoxDriver();
    driver.Url = “http://google.com”;
   
    ’指定のidの要素を取得。入力&Submit。
    IWebElement element =
      driver.FindElement(By.Id(“lst-ib”));
    element.SendKeys(“yahoo”);
    element.Submit();
   
    System.Threading.Thread.Sleep(2000);
   ’タイトルの値をテスト
   (期待値と実測値が違う場合、NUnitでエラーが表示される)
    Assert.AreEqual(“yahoo – Google 検索”, driver.Title);
  
   ‘ウィンドウのキャプチャを取る
    Screenshot shot =
      ((ITakesScreenshot)driver).GetScreenshot();
    shot.SaveAsFile(“firefox.png”, ImageFormat.Png);
  
   }
  }
}

Imports System.Drawing.Imaging
Imports NUnit.Framework
Imports OpenQA.Selenium
Imports OpenQA.Selenium.Firefox

<TestFixture()> _
Public Class clsTest

 <Test()> _
 Public Sub FireFoxTest()

  ’Firefox起動。URLを指定&遷移。
  Dim driver As IWebDriver = New FirefoxDriver
  driver.Url = “http://google.com”

  ’指定のidの要素を取得。入力&Submit。
  Dim element As IWebElement =
    driver.FindElement(By.Id(“lst-ib”))
  element.SendKeys(“yahoo”)
  element.Submit()

  Threading.Thread.Sleep(2000)

  ’タイトルの値をテスト
  (期待値と実測値が違う場合、NUnitでエラーが表示される)
  Assert.AreEqual(expected:=”yahoo – Google 検索”, _
      actual:=driver.Title, _
      message:=”Titleが違います。”)

  ’ウィンドウのキャプチャを取る
  Dim shot As Screenshot =
    DirectCast(driver, ITakesScreenshot).GetScreenshot()
  shot.SaveAsFile(“firefox.png”, ImageFormat.Png)

 End Sub
End Class


自動テストツール③ Selenium2 2/5

設定方法

公式サイトからSelenium2ライブラリをダウンロード
左上の「Search」を「All Downloads」等に変更して、「Selenium-dotnet-~.zip」をダウンドロード。
(※Javaでテストコードを作成する場合は「Selenium-java-~.zip」をダウンドロード)

Selenum2_Download
(後述するIEやChromeをブラウザとして使用する場合は別途ダウンロードが必要)
ダウンロードファイルを解凍し、以下のファイルを特定フォルダに保存。
・WebDriver.dll
・WebDriver.Support.dll
上記に加え、NUnit.framework.dllも参照に追加(「自動テストツール① NUnit 1/3」参照)。
Selenium2Referance
テストコードをC#やVB.NETで書いた後は、ビルドしてDLLを作成し、
NUnitから作成したDLLを実行して環境構築は完了。
(「自動テストツール① NUnit 1/3」参照)。

自動テストツール③ Selenium2 1/5

Selenium2概要

NUnit等のテストツールを利用してブラウザのテストを行えるツール。
正確にはSelenium2のWebDriverが各ブラウザの仕様を吸収してくれて、
NUnit等のテストツール(「自動テストツール① NUnit 1/3」参照)からは共通のテストコードが実行できる。

ローカルPCでテストを実行する場合

ブラウザ(Chrome、IE、Firefox等)
↑ ↓
Selenium2(WebDriver)
↑ ↓
Javaや.NET(他も可)のテストコード
↑ ↓
NUnit(他も可)

別マシンでテストを実行する場合

別のマシン
↑ ↓
Selenium2(RemoteWebDriver)
↑ ↓
Selenium2(WebDriver)
↑ ↓
Javaや.NET(他も可)のテストコード
↑ ↓
NUnit(他も可)

SeleniumIDE(参考)

・テスターがブラウザを操作
・SeleniumIDEが操作を記録(テストもここに作成)。
・テスト実行&結果をSeleniumIDEが表示
SeleniumIDE」参照

NUnit(参考)

・.NETでテストコードを作成(別プログラムに対するテスト)。
・NUnitから↑テストコードを実行&結果を表示
NUnit」参照