Recommended
PDF
Appium 2.0 ではじめるモバイルアプリテスト
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
PPTX
iOS WKWebViewの魔改造 - iOSDC 2018
PDF
ASP.NETの進化とASP.NET Core Blazorの凄さ
PDF
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
PDF
ディープラーニングとAppiumでモバイルテスト自動化
PDF
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
PDF
PDF
40歳過ぎてもエンジニアでいるためにやっていること
PPTX
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
PPTX
ODP
PPTX
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
PDF
マイクロサービスに至る歴史とこれから - XP祭り2021
PDF
こんなに使える!今どきのAPIドキュメンテーションツール
PDF
View customize plugin for Redmineの紹介 (2019年版)
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
PDF
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
PDF
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
PDF
SlideShareをやめて SpeakerDeckに移行します
PPTX
PDF
PPTX
PDF
More Related Content
PDF
Appium 2.0 ではじめるモバイルアプリテスト
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
PPTX
iOS WKWebViewの魔改造 - iOSDC 2018
PDF
ASP.NETの進化とASP.NET Core Blazorの凄さ
PDF
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
PDF
ディープラーニングとAppiumでモバイルテスト自動化
PDF
AirLab導入でテストコストの大幅削減と品質向上! 数十台の端末を一斉に全自動テストできる社内DeviceFarmについてご紹介
What's hot
PDF
PDF
40歳過ぎてもエンジニアでいるためにやっていること
PPTX
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
PPTX
ODP
PPTX
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
PDF
マイクロサービスに至る歴史とこれから - XP祭り2021
PDF
こんなに使える!今どきのAPIドキュメンテーションツール
PDF
View customize plugin for Redmineの紹介 (2019年版)
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
PDF
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
PDF
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
PDF
SlideShareをやめて SpeakerDeckに移行します
PPTX
PDF
Similar to AppiumのWebViewアプリテストの仕組みとハマりどころ
PPTX
PDF
PPTX
PDF
SeleniumConf Chicago 参加報告
PDF
5分で分かるselenium conference berlin 2017
PDF
PDF
20141018 selenium appium_cookpad
PPTX
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
KEY
PDF
もしAppiumとディープラーニングを組み合わせたら
PDF
PDF
PDF
KEY
GroovyなAndroidテスト #atest_hack
PDF
SwiftとReactNativeで似たようなUIを作った際の記録
PPTX
Win7 * appium * androidで実機自動テストやってみた。
PPTX
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
PDF
Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと
AppiumのWebViewアプリテストの仕組みとハマりどころ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 1.ウィンドウ区別つかない問題-解決策
ChromeDevToolsのAPIを使う
GET /json or /json/list のAPIを使うと detached かどうかわかる
https://chromedevtools.github.io/devtools-protocol/
あまり簡単ではないので、Appiumにプルリクエストを出しました
https://github.com/appium/appium-android-driver/pull/662
Appium1.19.0から mobile:getContexts というAPIとして使えます
より詳しい話はこちら
https://blog.trident-qa.com/2020/11/android-mobile-getcontexts-api/
33
34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 1.Safariハング問題
WebViewテストのパフォーマンスが劇的に悪化
完全に固まるわけではない
再現コード(WebDriverIO)
01. | // ネイティブコンテキストで任意の要素を探す
02. | await driver.$("XCUIElementTypeWebView");
03. |
04. | // Webコンテキストを⾒つける任意のラッパー関数
05. | const webContext = await getWebContext(driver);
06. |
07. | // Webコンテキストで任意の要素を探す
08. | // 特定の条件を満たすとパフォーマンスが悪化する
09. | await driver.switchContext(webContext);
10. | await driver.$("#r106");
https://github.com/appium/appium/issues/14149 48
49. 1.Safariハング問題
正常時のパフォーマンス
[HTTP] --> POST /wd/hub/session/1d99092f-6a81-4229-937b-c0c0ce3b9e03/context
[HTTP] {"name":"WEBVIEW_13197.1"}
[HTTP] <-- POST /wd/hub/session/1d99092f-6a81-4229-937b-c0c0ce3b9e03/context 200 610 ms - 76
[HTTP]
[HTTP] --> POST /wd/hub/session/1d99092f-6a81-4229-937b-c0c0ce3b9e03/element
[HTTP] {"using":"id","value":"r106"}
[HTTP] <-- POST /wd/hub/session/1d99092f-6a81-4229-937b-c0c0ce3b9e03/element 200 200 ms - 135
ハング時のパフォーマンス(1-2分待たされる)
[HTTP] --> POST /wd/hub/session/d1809037-a034-41c2-81e6-dace57657e7d/context
[HTTP] {"name":"WEBVIEW_11653.1"}
[HTTP] <-- POST /wd/hub/session/d1809037-a034-41c2-81e6-dace57657e7d/context 200 16075 ms - 76
[HTTP]
[HTTP] --> POST /wd/hub/session/d1809037-a034-41c2-81e6-dace57657e7d/element
[HTTP] {"using":"id","value":"r106"}
[HTTP] <-- POST /wd/hub/session/d1809037-a034-41c2-81e6-dace57657e7d/element 200 85120 ms - 135
49
50. 1.Safariハング問題-原因
とある条件を満たすと、2⾏⽬でSafariがハングする
01. | // ネイティブコンテキストで任意の要素を探す
02. | await driver.$("XCUIElementTypeWebView");
03. |
04. | // Webコンテキストを⾒つける任意のラッパー関数
05. | const webContext = await getWebContext(driver);
06. |
07. | // Webコンテキストで任意の要素を探す
08. | // 特定の条件を満たすとパフォーマンスが悪化する
09. | await driver.switchContext(webContext);
10. | await driver.$("#r106");
50
51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. androidDevToolsPortの使い道
Android端末のDevToolsに直接アクセスすることができるようになります
const wdio = require("webdriverio");
const axios = require("axios").axios;
const option = {
(...),
capabilities: { (..), chromeOptions: {androidDevToolsPort: <CDP Port>} }
}
const driver = await wdio.remote(option);
(...)
await driver.switchContext(<contextName>); // ChromeDriverを起動する
const detailedContexts = await axios({ // CDPにリクエスト投げる
url: "http://127.0.0.1:<CDP Port>/json/list",
timeout: 2000
});
AppiumでChromeDriverを起動する必要はありますが、
指定したポート番号を使ってそれ以降は直接アクセスできます 65
66. 67. 68. 69. 70.