Recommended
PDF
Appium 2.0 ではじめるモバイルアプリテスト
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
エキスパートPythonプログラミング改訂3版の読みどころ
PDF
ともに考え、ともにつくる 〜リーン・ジャーニー・スタイル〜
PDF
PDF
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
PDF
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
PDF
VPC Reachability Analyzer 使って人生が変わった話
PDF
PDF
フロー効率性とリソース効率性について #xpjug
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
PPTX
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
PDF
PPTX
アンケートを即可視化!~MS Forms ⇒ MS Flow ⇒ Power BI~
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
PDF
PDF
PDF
PDF
PDF
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
PDF
PDF
PPTX
世界一わかりやすいClean Architecture
PDF
ドメイン駆動設計のための Spring の上手な使い方
PPTX
PPTX
PPTX
More Related Content
PDF
Appium 2.0 ではじめるモバイルアプリテスト
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
エキスパートPythonプログラミング改訂3版の読みどころ
PDF
ともに考え、ともにつくる 〜リーン・ジャーニー・スタイル〜
PDF
PDF
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
PDF
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
What's hot
PDF
VPC Reachability Analyzer 使って人生が変わった話
PDF
PDF
フロー効率性とリソース効率性について #xpjug
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
PPTX
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
PDF
PPTX
アンケートを即可視化!~MS Forms ⇒ MS Flow ⇒ Power BI~
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
PDF
PDF
PDF
PDF
PDF
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
PDF
PDF
PPTX
世界一わかりやすいClean Architecture
PDF
ドメイン駆動設計のための Spring の上手な使い方
PPTX
Similar to AppiumのWebViewアプリテストの仕組みとハマりどころ
PPTX
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.