Mais conteúdo relacionado
Semelhante a 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て (20)
Mais de Osamu Shimoda (6)
私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
- 4. Copyright © 2015 NS Solutions Corporation, All rights reserved. 4
Internet Explorer 7
Internet Explorer 8
Internet Explorer 9
Internet Explorer 10
Internet Explorer 11
Microsoft Edge
Firefox
Google Chrome
Safari
Safari(iOS)
Google Chrome(Android)
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
・アプリにアクセス
・ログイン
・カートに商品を追加
・配送先を選択
・支払い方法を選択
・注文の確認
・購入完了
複数の対象ブラウザで
同じテストを実行
(クロスブラウザテスト)
→負担大
- 7. Copyright © 2015 NS Solutions Corporation, All rights reserved. 7
ブラウザ操作自動化ツール
Selenium
- 8. Selenium-特徴
OSS(Apache2.0)
様々なブラウザに対応
豊富な言語バインディング
Java, C#, Python, Ruby, JavaScript etc.
豊富な支援ツール
Selenium grid:テストの分散・並列実行
Selenium IDE:画面操作の記録・再生
Appium:iOS, Androidのテストが可能に
Microsoft Edgeにも!
Copyright © 2015 NS Solutions Corporation, All rights reserved. 8
→間口の広さ
- 9. Selenium-コード例
public class Example {
public static void main(String[] args) {
WebDriver driver = new HtmlUnitDriver();
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Cheese!");
element.submit();
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
}
フォーム操作
ページリクエスト
値の取得
Copyright © 2015 NS Solutions Corporation, All rights reserved. 9
- 11. スクリーンショット取得機能
• レイアウト確認
• エビデンス取得
• 差分検知
• for リグレッションテスト
Copyright © 2015 NS Solutions Corporation, All rights reserved. 11
File screenshotFile = ((Screenshot)driver).getScreenshotAs(file);
- 17. File screenshotFile = ((Screenshot)driver).getScreenshotAs(file);
Copyright © 2015 NS Solutions Corporation, All rights reserved. 17
- 19. TakesScreenshot interface
For WebDriver extending TakesScreenshot, this makes a best effort
depending on the browser to return the following in order of
preference:
• Entire page
• Current window
• Visible portion of the current frame
• The screenshot of the entire display containing the browser
http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/TakesScreenshot.html
Copyright © 2015 NS Solutions Corporation, All rights reserved. 19
- 24. 対策
Copyright © 2015 NS Solutions Corporation, All rights reserved. 24
アクセスするたびに内容が変わる
ウィジェット
→スクリーンショットは撮るが
差分検知のときは無視する
スクロールに追従する要素
→スクリーンショットを撮るときに
隠す(hidden)
- 27. よく調べると
Copyright © 2015 NS Solutions Corporation, All rights reserved. 27
要素A
要素A
top: 200px
left: 100px
top: 300.5px
left: 100px
要素Aの位置が変わっただけで
中身が変わるもよう
- 29. ブラウザ毎の座標の扱いと
レンダリング
ブラウザ名 状態
Internet Explorer 7 小数点以下の座標を持たない
Internet Explorer 8
内部的に小数点以下の座標を持つが取得できる値は整数のみ。
横方向はレンダリングに影響するが縦方向は影響しない。
Internet Explorer 9
内部的に小数点以下の座標を持つが取得できる値は整数のみ。
縦横両方向のレンダリングに影響する。
Internet Explorer 10 , 11
Mozilla Firefox
Google Chrome
内部的に小数点以下の座標を持ち、取得される値も小数点を含む。
縦横両方向のレンダリングに影響する。
Copyright © 2015 NS Solutions Corporation, All rights reserved. 29
- 31. 対策
Copyright © 2015 NS Solutions Corporation, All rights reserved. 31
要素A
要素A
top: 200px
left: 100px
top: 300.5px
left: 100px
要素の座標が同じなら、
描画結果は同じになるはず…
- 32. 対策
Copyright © 2015 NS Solutions Corporation, All rights reserved. 32
要素A 要素A
top: 0px
left: 0px
top: 0px
left: 0px
要素Aのスクリーンショットを
撮る間だけ、固定座標に移動
- 34. IE8でスクリーンショット取得時
Copyright © 2015 NS Solutions Corporation, All rights reserved. 34
Lorem ipsum dolor sit
amet, consectetur
adipisicing elit, sed do
eiusmod tempor
incididunt
○○のページ
Lorem ipsum dolor
sit amet,
consectetur
adipisicing elit, sed
do eiusmod tempor
incididunt
○○のページ
スクリーンショットにすると
ほんの少しだけ幅が狭い…??
- 35. ウィンドウサイズを勝手に変えて
いるのは誰?
Copyright © 2015 NS Solutions Corporation, All rights reserved. 35
Selenium
クライアント
ドライバ ブラウザ
スクリーンショット
撮って!
どうぞ(画像)
Json wire protocol
ブラウザ拡張機能
OSのネイティブ機能
ウインドウサイズ
変えます
- 36. 対策
Copyright © 2015 NS Solutions Corporation, All rights reserved. 36
Selenium
クライアント
ドライバ ブラウザ
改修(C++)
- 43. Copyright © 2015 NS Solutions Corporation, All rights reserved. 43
Apache2.0
License
- 44. Copyright © 2015 NS Solutions Corporation, All rights reserved. 44
IE
Safari
Chrome
テスト
スクリプト
Pitalium
対象
ブラウザ
・IE
・Chrome
・Safari
- 46. まとめ
Copyright © 2015 NS Solutions Corporation, All rights reserved. 46
• マルチデバイス対応の闇は深い
• スクリーンショット取得が特に
深い
• そんな闇を祓うツール
Pitaliumをよろしくお願いします
- 47. 続きはWeb(or 展示ブース)で!
https://www.htmlhifive.com/
Copyright © 2015 NS Solutions Corporation, All rights reserved. 47
・ NS Solutions、NS(ロゴ)、NSSOLは、新日鉄住金ソリューションズ株式会社の登録商標です。
・ hifive、hifive(ロゴ)は、新日鉄住金ソリューションズ株式会社の登録商標です。
・ Pitalium、Pitalium(ロゴ)は、新日鉄住金ソリューションズ株式会社の商標です。
・ Javaは、米国ORACLE Corp.の登録商標です。
・ HTML5 Logo by W3C
・ その他本文記載の会社名及び製品名は、それぞれ各社の商標又は登録商標です。
Pitaliumのデモも
あるよ!