23. Seleniumはなぜ安定しない?
How to Lose Races and Win at Selenium
Selenium tests often fail because they’re too fast.
Where a user might wait for a page to load
for a few seconds and then click on a link,
Selenium will interact with a page at the speed of code,
before the page is ready.
The way to fix this is to have Selenium repeat its actions
and assertions until they work.
If you don’t, Selenium races your browser.
http://sauceio.com/index.php/2011/04/how-to-lose-races-and-win-at-selenium/
23
24. spin asserts
def spin_assert(self, msg, assertion):
for i in xrange(60):
try:
self.assertTrue(assertion())
return
except Exception, e:
pass
sleep(1)
self.fail(msg)
POINT
・HTMLスイートを直接SeleniumRCサーバー内で実行する方法だと安定しない
24
25. Exporting the Test for Junit
テストスイートをチェックアウト
リポジトリからHTMLスイートをチェックアウト
Junit形式にエクスポート
Seleniumにあるエクスポート機能を利用
Rhinoを使ってJavaのコードから呼び出す
(今だったらnode.jsでもいいかも)
Javaテストケースのコンパイル
テスト実行、レポート出力
25
28. WebDriver/Selenium2
private static WebDriver getDriver(String driverName) {
if (Strings.equals(driverName, "firefox")) {
return new FirefoxDriver();
} else if (Strings.equals(driverName, "chrome")) {
return new ChromeDriver();
} else if (Strings.equals(driverName, "ie")) {
return new InternetExplorerDriver();
} else if (Strings.equals(driverName, "safari")) {
return new SafariDriver();
}
}
WebDriver driver = getDriver(args[0]);
driver.get("http://www.google.com");
28
29. 各種プラットフォーム/ブラウザでのテスト
Windows Linux Mac
Internet Explorer 6 - -
Internet Explorer 7 - -
Internet Explorer 8 - -
Internet Explorer 9 - -
Firefox 3.x -
Firefox Latest -
Chrome Latest -
Safari
POINT
・Javascriptなどブラウザに依存することの確認を行うテストケースを実行
29