appium-mcp 1.8.15 → 1.8.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +2 -1
  3. package/server.json +2 -2
  4. package/src/command.ts +249 -0
  5. package/src/devicemanager/adb-manager.ts +164 -0
  6. package/src/devicemanager/ios-manager.ts +145 -0
  7. package/src/index.ts +45 -0
  8. package/src/locators/element-filter.ts +136 -0
  9. package/src/locators/generate-all-locators.ts +150 -0
  10. package/src/locators/locator-generation.ts +657 -0
  11. package/src/locators/source-parsing.ts +149 -0
  12. package/src/logger.ts +11 -0
  13. package/src/resources/caps.json +697 -0
  14. package/src/resources/index.ts +8 -0
  15. package/src/resources/java/template.ts +83 -0
  16. package/src/resources/submodules/appium/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  17. package/src/resources/submodules/appium/CHANGELOG.md +45 -0
  18. package/src/resources/submodules/appium/CONDUCT.md +48 -0
  19. package/src/resources/submodules/appium/GOVERNANCE.md +185 -0
  20. package/src/resources/submodules/appium/IDEAS.md +16 -0
  21. package/src/resources/submodules/appium/README.md +221 -0
  22. package/src/resources/submodules/appium/ROADMAP.md +30 -0
  23. package/src/resources/submodules/appium/SPONSORS.md +3 -0
  24. package/src/resources/submodules/appium/docs/README.md +6 -0
  25. package/src/resources/submodules/appium/docs/payout.md +35 -0
  26. package/src/resources/submodules/appium/packages/appium/CHANGELOG.md +1437 -0
  27. package/src/resources/submodules/appium/packages/appium/README.md +221 -0
  28. package/src/resources/submodules/appium/packages/appium/docs/en/blog/index.md +2 -0
  29. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-appiumconf2024.md +45 -0
  30. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
  31. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-headspin-as-development-partner.md +47 -0
  32. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-lambdatest-as-strategic-partner.md +42 -0
  33. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
  34. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/announcing-sponsorship-program.md +48 -0
  35. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/appium3.md +40 -0
  36. package/src/resources/submodules/appium/packages/appium/docs/en/blog/posts/hello-world.md +15 -0
  37. package/src/resources/submodules/appium/packages/appium/docs/en/contributing/index.md +150 -0
  38. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-docs.md +86 -0
  39. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-doctor-checks.md +141 -0
  40. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-drivers.md +860 -0
  41. package/src/resources/submodules/appium/packages/appium/docs/en/developing/build-plugins.md +514 -0
  42. package/src/resources/submodules/appium/packages/appium/docs/en/developing/config-system.md +451 -0
  43. package/src/resources/submodules/appium/packages/appium/docs/en/developing/index.md +18 -0
  44. package/src/resources/submodules/appium/packages/appium/docs/en/developing/sensitive.md +49 -0
  45. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/clients.md +132 -0
  46. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/drivers.md +207 -0
  47. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/index.md +45 -0
  48. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/plugins.md +138 -0
  49. package/src/resources/submodules/appium/packages/appium/docs/en/ecosystem/tools.md +83 -0
  50. package/src/resources/submodules/appium/packages/appium/docs/en/guides/branch-testing.md +57 -0
  51. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caching.md +76 -0
  52. package/src/resources/submodules/appium/packages/appium/docs/en/guides/caps.md +275 -0
  53. package/src/resources/submodules/appium/packages/appium/docs/en/guides/config.md +98 -0
  54. package/src/resources/submodules/appium/packages/appium/docs/en/guides/context.md +44 -0
  55. package/src/resources/submodules/appium/packages/appium/docs/en/guides/event-timing.md +73 -0
  56. package/src/resources/submodules/appium/packages/appium/docs/en/guides/execute-methods.md +122 -0
  57. package/src/resources/submodules/appium/packages/appium/docs/en/guides/grid.md +166 -0
  58. package/src/resources/submodules/appium/packages/appium/docs/en/guides/headers.md +17 -0
  59. package/src/resources/submodules/appium/packages/appium/docs/en/guides/log-filters.md +86 -0
  60. package/src/resources/submodules/appium/packages/appium/docs/en/guides/managing-exts.md +87 -0
  61. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-1-to-2.md +368 -0
  62. package/src/resources/submodules/appium/packages/appium/docs/en/guides/migrating-2-to-3.md +464 -0
  63. package/src/resources/submodules/appium/packages/appium/docs/en/guides/security.md +89 -0
  64. package/src/resources/submodules/appium/packages/appium/docs/en/guides/settings.md +68 -0
  65. package/src/resources/submodules/appium/packages/appium/docs/en/guides/tls.md +42 -0
  66. package/src/resources/submodules/appium/packages/appium/docs/en/index.md +59 -0
  67. package/src/resources/submodules/appium/packages/appium/docs/en/intro/appium.md +202 -0
  68. package/src/resources/submodules/appium/packages/appium/docs/en/intro/clients.md +127 -0
  69. package/src/resources/submodules/appium/packages/appium/docs/en/intro/drivers.md +188 -0
  70. package/src/resources/submodules/appium/packages/appium/docs/en/intro/history.md +196 -0
  71. package/src/resources/submodules/appium/packages/appium/docs/en/intro/index.md +39 -0
  72. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/index.md +29 -0
  73. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/install.md +50 -0
  74. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/next-steps.md +23 -0
  75. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/requirements.md +29 -0
  76. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-dotnet.md +105 -0
  77. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-java.md +23 -0
  78. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-js.md +75 -0
  79. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-py.md +60 -0
  80. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/test-rb.md +83 -0
  81. package/src/resources/submodules/appium/packages/appium/docs/en/quickstart/uiauto2-driver.md +144 -0
  82. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/appium.md +394 -0
  83. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/bidi.md +70 -0
  84. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/index.md +30 -0
  85. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/jsonwp.md +214 -0
  86. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/mjsonwp.md +151 -0
  87. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/others.md +671 -0
  88. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/plugins.md +289 -0
  89. package/src/resources/submodules/appium/packages/appium/docs/en/reference/api/webdriver.md +1114 -0
  90. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/env-vars.md +31 -0
  91. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/extensions.md +239 -0
  92. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/index.md +35 -0
  93. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/server.md +76 -0
  94. package/src/resources/submodules/appium/packages/appium/docs/en/reference/cli/setup.md +76 -0
  95. package/src/resources/submodules/appium/packages/appium/docs/en/reference/index.md +25 -0
  96. package/src/resources/submodules/appium/packages/appium/docs/en/resources/index.md +28 -0
  97. package/src/resources/submodules/appium/packages/appium/docs/en/sponsors/index.md +64 -0
  98. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/index.md +2 -0
  99. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-appiumconf2024.md +45 -0
  100. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
  101. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-headspin-as-development-partner.md +47 -0
  102. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-lambdatest-as-strategic-partner.md +41 -0
  103. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
  104. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/announcing-sponsorship-program.md +48 -0
  105. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/appium3.md +40 -0
  106. package/src/resources/submodules/appium/packages/appium/docs/ja/blog/posts/hello-world.md +15 -0
  107. package/src/resources/submodules/appium/packages/appium/docs/ja/contributing/index.md +158 -0
  108. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-docs.md +86 -0
  109. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-doctor-checks.md +141 -0
  110. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-drivers.md +866 -0
  111. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/build-plugins.md +520 -0
  112. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/config-system.md +468 -0
  113. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/index.md +18 -0
  114. package/src/resources/submodules/appium/packages/appium/docs/ja/developing/sensitive.md +49 -0
  115. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/clients.md +143 -0
  116. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/drivers.md +219 -0
  117. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/index.md +45 -0
  118. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/plugins.md +140 -0
  119. package/src/resources/submodules/appium/packages/appium/docs/ja/ecosystem/tools.md +87 -0
  120. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/branch-testing.md +57 -0
  121. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caching.md +78 -0
  122. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/caps.md +259 -0
  123. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/config.md +102 -0
  124. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/context.md +44 -0
  125. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/event-timing.md +75 -0
  126. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/execute-methods.md +142 -0
  127. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/grid.md +166 -0
  128. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/headers.md +17 -0
  129. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/log-filters.md +86 -0
  130. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/managing-exts.md +89 -0
  131. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-1-to-2.md +402 -0
  132. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/migrating-2-to-3.md +458 -0
  133. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/security.md +89 -0
  134. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/settings.md +70 -0
  135. package/src/resources/submodules/appium/packages/appium/docs/ja/guides/tls.md +43 -0
  136. package/src/resources/submodules/appium/packages/appium/docs/ja/index.md +55 -0
  137. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/appium.md +191 -0
  138. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/clients.md +139 -0
  139. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/drivers.md +188 -0
  140. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/history.md +196 -0
  141. package/src/resources/submodules/appium/packages/appium/docs/ja/intro/index.md +39 -0
  142. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/index.md +23 -0
  143. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/install.md +47 -0
  144. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/next-steps.md +19 -0
  145. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/requirements.md +29 -0
  146. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-dotnet.md +107 -0
  147. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-java.md +23 -0
  148. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-js.md +77 -0
  149. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-py.md +63 -0
  150. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/test-rb.md +85 -0
  151. package/src/resources/submodules/appium/packages/appium/docs/ja/quickstart/uiauto2-driver.md +148 -0
  152. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/appium.md +395 -0
  153. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/bidi.md +71 -0
  154. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/index.md +30 -0
  155. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/jsonwp.md +215 -0
  156. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/mjsonwp.md +152 -0
  157. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/others.md +672 -0
  158. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/plugins.md +291 -0
  159. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/api/webdriver.md +1114 -0
  160. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/env-vars.md +31 -0
  161. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/extensions.md +240 -0
  162. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/index.md +35 -0
  163. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/server.md +76 -0
  164. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/cli/setup.md +78 -0
  165. package/src/resources/submodules/appium/packages/appium/docs/ja/reference/index.md +25 -0
  166. package/src/resources/submodules/appium/packages/appium/docs/ja/resources/index.md +28 -0
  167. package/src/resources/submodules/appium/packages/appium/docs/ja/sponsors/index.md +61 -0
  168. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz-white.png +0 -0
  169. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-horiz.png +0 -0
  170. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo-white.png +0 -0
  171. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/appium-logo.png +0 -0
  172. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-dark.png +0 -0
  173. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-browserstack-light.png +0 -0
  174. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-dark.png +0 -0
  175. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-lambdatest-light.png +0 -0
  176. package/src/resources/submodules/appium/packages/appium/docs/overrides/assets/images/sponsor-logo-sauce.png +0 -0
  177. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/index.md +2 -0
  178. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-appiumconf2024.md +45 -0
  179. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-browserstack-as-strategic-partner.md +46 -0
  180. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-headspin-as-development-partner.md +47 -0
  181. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-lambdatest-as-strategic-partner.md +41 -0
  182. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sauce-labs-as-strategic-partner.md +36 -0
  183. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/announcing-sponsorship-program.md +48 -0
  184. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/appium3.md +40 -0
  185. package/src/resources/submodules/appium/packages/appium/docs/zh/blog/posts/hello-world.md +15 -0
  186. package/src/resources/submodules/appium/packages/appium/docs/zh/contributing/index.md +132 -0
  187. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-docs.md +86 -0
  188. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-doctor-checks.md +141 -0
  189. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-drivers.md +866 -0
  190. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/build-plugins.md +520 -0
  191. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/config-system.md +468 -0
  192. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/index.md +18 -0
  193. package/src/resources/submodules/appium/packages/appium/docs/zh/developing/sensitive.md +49 -0
  194. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/clients.md +143 -0
  195. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/drivers.md +219 -0
  196. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/index.md +45 -0
  197. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/plugins.md +140 -0
  198. package/src/resources/submodules/appium/packages/appium/docs/zh/ecosystem/tools.md +87 -0
  199. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/branch-testing.md +57 -0
  200. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caching.md +78 -0
  201. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/caps.md +284 -0
  202. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/config.md +102 -0
  203. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/context.md +44 -0
  204. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/event-timing.md +75 -0
  205. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/execute-methods.md +142 -0
  206. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/grid.md +166 -0
  207. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/headers.md +17 -0
  208. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/log-filters.md +86 -0
  209. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/managing-exts.md +89 -0
  210. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-1-to-2.md +410 -0
  211. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/migrating-2-to-3.md +459 -0
  212. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/security.md +89 -0
  213. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/settings.md +70 -0
  214. package/src/resources/submodules/appium/packages/appium/docs/zh/guides/tls.md +43 -0
  215. package/src/resources/submodules/appium/packages/appium/docs/zh/index.md +54 -0
  216. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/appium.md +200 -0
  217. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/clients.md +139 -0
  218. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/drivers.md +188 -0
  219. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/history.md +196 -0
  220. package/src/resources/submodules/appium/packages/appium/docs/zh/intro/index.md +39 -0
  221. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/index.md +23 -0
  222. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/install.md +47 -0
  223. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/next-steps.md +19 -0
  224. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/requirements.md +21 -0
  225. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-dotnet.md +99 -0
  226. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-java.md +20 -0
  227. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-js.md +62 -0
  228. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-py.md +57 -0
  229. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/test-rb.md +80 -0
  230. package/src/resources/submodules/appium/packages/appium/docs/zh/quickstart/uiauto2-driver.md +148 -0
  231. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/appium.md +395 -0
  232. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/bidi.md +71 -0
  233. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/index.md +30 -0
  234. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/jsonwp.md +215 -0
  235. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/mjsonwp.md +152 -0
  236. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/others.md +672 -0
  237. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/plugins.md +291 -0
  238. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/api/webdriver.md +1114 -0
  239. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/env-vars.md +31 -0
  240. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/extensions.md +240 -0
  241. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/index.md +35 -0
  242. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/server.md +76 -0
  243. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/cli/setup.md +78 -0
  244. package/src/resources/submodules/appium/packages/appium/docs/zh/reference/index.md +25 -0
  245. package/src/resources/submodules/appium/packages/appium/docs/zh/resources/index.md +28 -0
  246. package/src/resources/submodules/appium/packages/appium/docs/zh/sponsors/index.md +61 -0
  247. package/src/resources/submodules/appium/packages/appium/types/manifest/README.md +30 -0
  248. package/src/resources/submodules/appium/packages/base-driver/CHANGELOG.md +1131 -0
  249. package/src/resources/submodules/appium/packages/base-driver/README.md +15 -0
  250. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/errors.md +82 -0
  251. package/src/resources/submodules/appium/packages/base-driver/docs/mjsonwp/protocol-methods.md +182 -0
  252. package/src/resources/submodules/appium/packages/base-driver/static/appium.png +0 -0
  253. package/src/resources/submodules/appium/packages/base-plugin/CHANGELOG.md +672 -0
  254. package/src/resources/submodules/appium/packages/base-plugin/README.md +15 -0
  255. package/src/resources/submodules/appium/packages/docutils/CHANGELOG.md +948 -0
  256. package/src/resources/submodules/appium/packages/docutils/README.md +27 -0
  257. package/src/resources/submodules/appium/packages/driver-test-support/CHANGELOG.md +717 -0
  258. package/src/resources/submodules/appium/packages/driver-test-support/README.md +112 -0
  259. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/CHANGELOG.md +168 -0
  260. package/src/resources/submodules/appium/packages/eslint-config-appium-ts/README.md +33 -0
  261. package/src/resources/submodules/appium/packages/execute-driver-plugin/CHANGELOG.md +603 -0
  262. package/src/resources/submodules/appium/packages/execute-driver-plugin/README.md +42 -0
  263. package/src/resources/submodules/appium/packages/fake-driver/CHANGELOG.md +545 -0
  264. package/src/resources/submodules/appium/packages/fake-driver/README.md +7 -0
  265. package/src/resources/submodules/appium/packages/fake-driver/lib/screen.png +0 -0
  266. package/src/resources/submodules/appium/packages/fake-plugin/CHANGELOG.md +683 -0
  267. package/src/resources/submodules/appium/packages/fake-plugin/README.md +7 -0
  268. package/src/resources/submodules/appium/packages/images-plugin/CHANGELOG.md +602 -0
  269. package/src/resources/submodules/appium/packages/images-plugin/README.md +27 -0
  270. package/src/resources/submodules/appium/packages/images-plugin/docs/find-by-image.md +65 -0
  271. package/src/resources/submodules/appium/packages/images-plugin/docs/image-comparison.md +203 -0
  272. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/appstore.png +0 -0
  273. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img1.png +0 -0
  274. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2.png +0 -0
  275. package/src/resources/submodules/appium/packages/images-plugin/test/fixtures/img2_part.png +0 -0
  276. package/src/resources/submodules/appium/packages/logger/CHANGELOG.md +162 -0
  277. package/src/resources/submodules/appium/packages/logger/README.md +31 -0
  278. package/src/resources/submodules/appium/packages/opencv/CHANGELOG.md +384 -0
  279. package/src/resources/submodules/appium/packages/opencv/README.md +68 -0
  280. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/appium-diagram.jpg +0 -0
  281. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc1.png +0 -0
  282. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc2.png +0 -0
  283. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/cc_rotated.png +0 -0
  284. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/findwaldo.jpg +0 -0
  285. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/number5.png +0 -0
  286. package/src/resources/submodules/appium/packages/opencv/test/e2e/images/waldo.jpg +0 -0
  287. package/src/resources/submodules/appium/packages/plugin-test-support/CHANGELOG.md +539 -0
  288. package/src/resources/submodules/appium/packages/plugin-test-support/README.md +49 -0
  289. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/CHANGELOG.md +154 -0
  290. package/src/resources/submodules/appium/packages/relaxed-caps-plugin/README.md +35 -0
  291. package/src/resources/submodules/appium/packages/schema/CHANGELOG.md +271 -0
  292. package/src/resources/submodules/appium/packages/schema/README.md +50 -0
  293. package/src/resources/submodules/appium/packages/storage-plugin/CHANGELOG.md +73 -0
  294. package/src/resources/submodules/appium/packages/storage-plugin/README.md +83 -0
  295. package/src/resources/submodules/appium/packages/strongbox/CHANGELOG.md +94 -0
  296. package/src/resources/submodules/appium/packages/strongbox/README.md +96 -0
  297. package/src/resources/submodules/appium/packages/support/CHANGELOG.md +1054 -0
  298. package/src/resources/submodules/appium/packages/support/README.md +161 -0
  299. package/src/resources/submodules/appium/packages/test-support/CHANGELOG.md +712 -0
  300. package/src/resources/submodules/appium/packages/test-support/README.md +61 -0
  301. package/src/resources/submodules/appium/packages/tsconfig/CHANGELOG.md +131 -0
  302. package/src/resources/submodules/appium/packages/tsconfig/README.md +19 -0
  303. package/src/resources/submodules/appium/packages/types/CHANGELOG.md +793 -0
  304. package/src/resources/submodules/appium/packages/types/README.md +21 -0
  305. package/src/resources/submodules/appium/packages/universal-xml-plugin/CHANGELOG.md +435 -0
  306. package/src/resources/submodules/appium/packages/universal-xml-plugin/README.md +53 -0
  307. package/src/resources/submodules/appium/renovate/README.md +63 -0
  308. package/src/resources/submodules/appium-uiautomator2-driver/CHANGELOG.md +1204 -0
  309. package/src/resources/submodules/appium-uiautomator2-driver/README.md +2077 -0
  310. package/src/resources/submodules/appium-uiautomator2-driver/docs/actions.md +72 -0
  311. package/src/resources/submodules/appium-uiautomator2-driver/docs/activity-startup.md +47 -0
  312. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-appbundle.md +69 -0
  313. package/src/resources/submodules/appium-uiautomator2-driver/docs/android-mobile-gestures.md +352 -0
  314. package/src/resources/submodules/appium-uiautomator2-driver/docs/bidi.md +50 -0
  315. package/src/resources/submodules/appium-uiautomator2-driver/docs/capability-sets.md +136 -0
  316. package/src/resources/submodules/appium-uiautomator2-driver/docs/scheduled-actions.md +155 -0
  317. package/src/resources/submodules/appium-uiautomator2-driver/docs/uiautomator-uiselector.md +51 -0
  318. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/main.md +95 -0
  319. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen1.png +0 -0
  320. package/src/resources/submodules/appium-uiautomator2-driver/docs/unlock/screen2.png +0 -0
  321. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/checkered-squares.png +0 -0
  322. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/start-button.png +0 -0
  323. package/src/resources/submodules/appium-uiautomator2-driver/test/functional/assets/stop-button.png +0 -0
  324. package/src/resources/submodules/appium-xcuitest-driver/.github/ISSUE_TEMPLATE.md +4 -0
  325. package/src/resources/submodules/appium-xcuitest-driver/CHANGELOG.md +2594 -0
  326. package/src/resources/submodules/appium-xcuitest-driver/README.md +55 -0
  327. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo-white.png +0 -0
  328. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-logo.png +0 -0
  329. package/src/resources/submodules/appium-xcuitest-driver/docs/assets/images/appium-plus-xctest.png +0 -0
  330. package/src/resources/submodules/appium-xcuitest-driver/docs/contributing.md +45 -0
  331. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints-wda.md +61 -0
  332. package/src/resources/submodules/appium-xcuitest-driver/docs/endpoints.md +98 -0
  333. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/keynote.png +0 -0
  334. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/on_my_iphone.png +0 -0
  335. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/assets/images/ios-xctest-file-movement/top_files.png +0 -0
  336. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/attach-to-running-wda.md +43 -0
  337. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/audio-capture.md +78 -0
  338. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/capability-sets.md +169 -0
  339. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/ci-setup.md +47 -0
  340. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/clipboard.md +47 -0
  341. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/elements-lookup-troubleshooting.md +158 -0
  342. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/file-transfer.md +147 -0
  343. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/gestures.md +52 -0
  344. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/hybrid.md +137 -0
  345. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/input-events.md +67 -0
  346. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/install-certificate.md +19 -0
  347. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/multiple-xcode-versions.md +37 -0
  348. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/parallel-tests.md +39 -0
  349. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-prebuilt-wda.md +135 -0
  350. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/run-preinstalled-wda.md +178 -0
  351. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/touch-id.md +33 -0
  352. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/troubleshooting.md +191 -0
  353. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/tvos.md +114 -0
  354. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-custom-server.md +283 -0
  355. package/src/resources/submodules/appium-xcuitest-driver/docs/guides/wda-slowness.md +231 -0
  356. package/src/resources/submodules/appium-xcuitest-driver/docs/index.md +36 -0
  357. package/src/resources/submodules/appium-xcuitest-driver/docs/installation/index.md +137 -0
  358. package/src/resources/submodules/appium-xcuitest-driver/docs/overview.md +19 -0
  359. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/check-prov-prof.png +0 -0
  360. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-new-project.png +0 -0
  361. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/create-single-page.png +0 -0
  362. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/no-prov-prof.png +0 -0
  363. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/project-prov-prof.png +0 -0
  364. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/set-up-bundle.png +0 -0
  365. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/untrusted-dev.png +0 -0
  366. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-bundle-id.png +0 -0
  367. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-config.png +0 -0
  368. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-fail.png +0 -0
  369. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/assets/images/xcode-facebook-succeed.png +0 -0
  370. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/index.md +51 -0
  371. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-auto.md +49 -0
  372. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-basic-manual.md +40 -0
  373. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-full-manual.md +50 -0
  374. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/prov-profile-generic-manual.md +49 -0
  375. package/src/resources/submodules/appium-xcuitest-driver/docs/preparation/real-device-config.md +100 -0
  376. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/assets/images/useXctestrunFile.png +0 -0
  377. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/bidi.md +75 -0
  378. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/capabilities.md +165 -0
  379. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/commands.md +490 -0
  380. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/element-attributes.md +27 -0
  381. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/execute-methods.md +2206 -0
  382. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/ios-predicate.md +196 -0
  383. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/locator-strategies.md +19 -0
  384. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/scripts.md +29 -0
  385. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/security-flags.md +22 -0
  386. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/server-args.md +16 -0
  387. package/src/resources/submodules/appium-xcuitest-driver/docs/reference/settings.md +49 -0
  388. package/src/resources/submodules/appium-xcuitest-driver/test/assets/TestApp-iphonesimulator.app/Default-568h@2x.png +0 -0
  389. package/src/resources/submodules/appium-xcuitest-driver/test/assets/test.png +0 -0
  390. package/src/schema.ts +5 -0
  391. package/src/scripts/simple-index-documentation.ts +93 -0
  392. package/src/scripts/simple-query-documentation.ts +61 -0
  393. package/src/server.ts +40 -0
  394. package/src/session-store.ts +151 -0
  395. package/src/tests/README.md +83 -0
  396. package/src/tests/__mocks__/@appium/support.ts +30 -0
  397. package/src/tests/generate-all-locators.test.ts +178 -0
  398. package/src/tests/screenshot.test.ts +279 -0
  399. package/src/tests/test-setup-wda.ts +255 -0
  400. package/src/tools/README.md +179 -0
  401. package/src/tools/app-management/activate-app.ts +47 -0
  402. package/src/tools/app-management/install-app.ts +46 -0
  403. package/src/tools/app-management/list-apps.ts +87 -0
  404. package/src/tools/app-management/terminate-app.ts +48 -0
  405. package/src/tools/app-management/uninstall-app.ts +48 -0
  406. package/src/tools/context/get-contexts.ts +87 -0
  407. package/src/tools/context/switch-context.ts +101 -0
  408. package/src/tools/documentation/answer-appium.ts +73 -0
  409. package/src/tools/documentation/index.ts +98 -0
  410. package/src/tools/documentation/reasoning-rag.ts +435 -0
  411. package/src/tools/documentation/sentence-transformers-embeddings.ts +144 -0
  412. package/src/tools/documentation/simple-pdf-indexer.ts +508 -0
  413. package/src/tools/documentation/uploads/documents.json +1 -0
  414. package/src/tools/index.ts +159 -0
  415. package/src/tools/interactions/click.ts +48 -0
  416. package/src/tools/interactions/double-tap.ts +96 -0
  417. package/src/tools/interactions/drag-and-drop.ts +236 -0
  418. package/src/tools/interactions/find.ts +58 -0
  419. package/src/tools/interactions/get-page-source.ts +65 -0
  420. package/src/tools/interactions/get-text.ts +48 -0
  421. package/src/tools/interactions/long-press.ts +111 -0
  422. package/src/tools/interactions/screenshot.ts +116 -0
  423. package/src/tools/interactions/set-value.ts +49 -0
  424. package/src/tools/ios/boot-simulator.ts +88 -0
  425. package/src/tools/ios/install-wda.ts +277 -0
  426. package/src/tools/ios/setup-wda.ts +217 -0
  427. package/src/tools/navigations/scroll-to-element.ts +198 -0
  428. package/src/tools/navigations/scroll.ts +101 -0
  429. package/src/tools/navigations/swipe.ts +364 -0
  430. package/src/tools/session/create-session.ts +379 -0
  431. package/src/tools/session/delete-session.ts +56 -0
  432. package/src/tools/session/select-device.ts +326 -0
  433. package/src/tools/session/select-platform.ts +250 -0
  434. package/src/tools/test-generation/generate-tests.ts +48 -0
  435. package/src/tools/test-generation/locators.ts +103 -0
  436. package/src/ui/mcp-ui-utils.ts +1630 -0
@@ -0,0 +1,259 @@
1
+ ---
2
+ title: Session Capabilities
3
+ ---
4
+
5
+ 「Capabilities」は、Appiumセッションを開始するために使用されるパラメータセットに付けられた名前です。 セット内の情報は、セッションにどのような「Capabilities」を持たせたいかを表します。たとえば、特定のモバイルオペレーティングシステムや特定のデバイスバージョンなどです。 Capabilities はキーと値のペアとして表され、値には他のオブジェクトを含む任意の有効な JSON 型を使用できます。
6
+
7
+ W3C WebDriver 仕様の [Capabilities に関するセクション](https://w3c.github.io/webdriver/#capabilities) では、以下の機能を含む 10 個の標準機能のセットが定義されています:
8
+
9
+ | Capability 名 | 型 | 説明 |
10
+ | ---------------- | -------- | --------------------- |
11
+ | `browserName` | `string` | 起動して自動化するブラウザの名前 |
12
+ | `browserVersion` | `string` | ブラウザのバージョン |
13
+ | `platformName` | `string` | ブラウザをホストするプラットフォームの種類 |
14
+
15
+ ## 一般的なAppiumのCapabilities
16
+
17
+ Appium はこれらのブラウザに焦点を当てた capabilities を理解しますが、いくつかの capabilities も追加導入しています。 WebDriver 仕様によれば、非標準の「拡張 capabilities」には、capabilities を導入したベンダーを示す名前空間となる接頭辞(末尾に「:」)を含める必要があります。 Appium の接頭辞は「appium:」であるため、Appium 固有の capabilities には必ずこの接頭辞を含める必要があります。 使用しているクライアントによっては接頭辞が自動的に追加される場合もあれば、特定のインターフェースと組み合わせて追加される場合もありますが、明確にするために明示的に追加することをお勧めします。
18
+
19
+ 以下は様々なドライバーで認識される Appium の capabilities の一覧です:
20
+
21
+ !!! info
22
+
23
+ ```
24
+ 個々のドライバやプラグインは独自の capabilities をサポートしている場合があるため、具体的な capability 名のリストについては、それぞれのドキュメントを参照してください。また、一部のドライバはこれらの capabilities をすべてサポートしていない場合があります
25
+ ```
26
+
27
+ | <div style="width:12em">Capability 名</div> | 型 | 必須か | 説明 |
28
+ | ------------------------------------------ | --------- | --- | ------------------------------------------------------------------------------------------------------------------------- |
29
+ | `platformName` | `string` | はい | アプリまたはブラウザをホストするプラットフォームの種類 |
30
+ | `appium:automationName` | `string` | はい | 使用するAppiumドライバの名前 |
31
+ | `browserName` | `string` | いいえ | ドライバーが特別なケースとしてWebブラウザーをサポートしている場合、起動して自動化するブラウザーの名前 |
32
+ | `appium:app` | `string` | いいえ | インストール可能なアプリケーションへのパス |
33
+ | `appium:deviceName` | `string` | いいえ | 自動化する特定のデバイスの名前、例:`iPhone 14`(現在のところ、iOS シミュレーターを指定する場合にのみ役立ちます。他の状況では通常、`appium:udid` 機能を使用して特定のデバイス Id を使用することをお勧めします)。 |
34
+ | `appium:platformVersion` | `string` | いいえ | プラットフォームのバージョン(例:iOS の場合は `16.0`) |
35
+ | `appium:newCommandTimeout` | `number` | いいえ | クライアントがこれ以上コマンドを送信してこないと判断しセッションを終了する前に、Appium サーバーがクライアントからのコマンド送信を待機する秒数。 デフォルトは `60` 秒。 ゼロに設定するとタイマーが無効になります。 |
36
+ | `appium:noReset` | `boolean` | いいえ | true の場合、セッションの開始とクリーンアップ中に通常のリセット処理を回避するように Appium ドライバーに指示します (デフォルトは `false`) |
37
+ | `appium:fullReset` | `boolean` | いいえ | true の場合、Appium ドライバーに通常のリセット処理に追加の手順を追加して、環境の再現性を最大限に高めるように指示します (デフォルトは `false`) |
38
+ | `appium:eventTimings` | `boolean` | いいえ | true の場合、Appium ドライバーに [Event Timings](./event-timing.md) を収集するように指示します (デフォルトは `false`) |
39
+ | `appium:printPageSourceOnFindFailure` | `boolean` | いいえ | true の場合、要素の検索リクエストが失敗するたびにページソースを収集し、Appium ログに出力します (デフォルトは `false`) |
40
+
41
+ ドライバーの中には、capabilitiesのより複雑な制約をグループとして設定しているものもあります。 たとえば、`appium:app` および `browserName` capabilities は上記では必須ではないと記載していますが、特定のアプリでセッションを開始する場合、XCUITest ドライバーは、`appium:app`、`browserName`、または `appium:bundleId` の少なくとも1 つが capabilities に含まれていることが必要です (含まれていない場合、どのアプリをインストールまたは起動すればよいか判断できないため、ホーム画面からセッションが開かれます)。 各ドライバーは、これらの capabilities やその他のプラットフォーム固有の要件をどのように解釈するかを記述しています。
42
+
43
+ !!! note
44
+
45
+ ```
46
+ Capabilitiesは、セッション開始時に使用されるパラメータのようなものです。Capabilitiesが送信され、セッションが開始された後変更できません。ドライバーがセッション中に動作の一部を更新する場合、capabilitiesの代わりに、またはcapabilitiesに加えて、[Settings](./settings.md)も利用可能です。
47
+ ```
48
+
49
+ 各 Appium クライアントには、capabilities を構築し、セッションを開始する独自の方法があります。 各クライアントライブラリでこれを行う例については、[エコシステム](../ecosystem/index.md) ページにアクセスし、適切なクライアントドキュメントをクリックしてください。
50
+
51
+ ## BiDi プロトコルのサポート
52
+
53
+ Appiumは、base-driver 9.5.0以降で[WebDriver BiDi](https://w3c.github.io/webdriver-bidi/)プロトコルをサポートしています。
54
+ 実際の動作は個々のドライバーによって異なりますが、Appium と base-driver はプロトコルをサポートしています。
55
+ ドライバーが BiDi プロトコルをサポートしているかどうか、また、どのようなコマンド/イベントをサポートしているかはドキュメントで確認してください。
56
+
57
+ | Capability 名 | 型 | 説明 |
58
+ | -------------- | --------- | ------------------------- |
59
+ | `webSocketUrl` | `boolean` | セッションで BiDi プロトコルを有効にします。 |
60
+
61
+ ## `appium:options` を使用して機能をグループ化する
62
+
63
+ テストで `appium:` 機能を多用すると、繰り返しが多くなる可能性があります。 代わりに、すべての機能を単一の `appium:options` 機能のオブジェクト値として組み合わせることもできます。その場合、オブジェクト内の機能にプレフィックスを使用する必要はありません。 例:
64
+
65
+ ```json
66
+ {
67
+ "platformName": "iOS",
68
+ "appium:options": {
69
+ "automationName": "XCUITest",
70
+ "platformVersion": "16.0",
71
+ "app": "/path/to/your.app",
72
+ "deviceName": "iPhone 12",
73
+ "noReset": true
74
+ }
75
+ }
76
+ ```
77
+
78
+ 機能値自体がオブジェクトである場合の構築方法は言語によって異なることに注意してください。これを実現する方法の詳細な例については、クライアントのドキュメントを参照してください。
79
+
80
+ !!! warning
81
+
82
+ ```
83
+ If you include the same capabilities both inside and outside of `appium:options`, the values
84
+ inside of `appium:options` take precedence.
85
+ ```
86
+
87
+ ## Always-Match and First-Match Capabilities
88
+
89
+ The W3C spec allows clients to give the Appium server some flexibility in the kind of session it
90
+ creates in response to a new session request. This is through the concept of "always-match" and
91
+ "first-match" capabilities:
92
+
93
+ - Always-match capabilities consist of a single set of capabilities, every member of which must
94
+ be satisfied by the server in order for the new session request to proceed.
95
+ - First-match capabilities consist of an array of capability sets. Each set is merged with the
96
+ always-match capabilities, and the first set that the server knows how to handle will be the set
97
+ that is used to start the session.
98
+
99
+ !!! note
100
+
101
+ ```
102
+ Check out the [spec itself](https://w3c.github.io/webdriver/#processing-capabilities) or
103
+ a [summarized version](https://github.com/jlipps/simple-wd-spec#processing-capabilities) for
104
+ a more in-depth description of how capabilities are processed.
105
+ ```
106
+
107
+ In practice, use of first-match capabilities is not necessary or recommended for use with Appium.
108
+ Instead, we recommend that you define the explicit set of capabilities you want the Appium
109
+ server to handle. These will be encoded as the always-match capabilities, and the array of
110
+ first-match capabilities will be empty.
111
+
112
+ That being said, Appium _does_ understand always-match and first-match capabilities as
113
+ defined in the W3C spec, so if you use these features, Appium will work as expected. The process of
114
+ defining always-match and first-match capabilities is unique to each client library, so refer to
115
+ the documentation for your client library to see examples of how it works.
116
+
117
+ ## Special Notes for Cloud Providers
118
+
119
+ !!! warning
120
+
121
+ ```
122
+ This section is not intended for end-users of Appium; it is intended for developers building
123
+ Appium-compatible cloud services.
124
+ ```
125
+
126
+ When managing an Appium cloud, your users may wish to target various independent versions of Appium
127
+ drivers and plugins. It is of course up to each service provider how they wish to implement the
128
+ discovery, installation, and availability of any official or third party drivers or plugins. But
129
+ the Appium team does provide several suggestions, for consistency across the industry. _These are
130
+ recommendations only,_ and not a standard, but adopting it will help users to navigate the increased
131
+ complexity that working with Appium in a cloud environment may bring.
132
+
133
+ ### Suggested capabilities
134
+
135
+ In addition to the standard `platformName`, `appium:deviceName`, `appium:automationName`, and
136
+ `appium:platformVersion`, we recommend adopting the capability `$cloud:appiumOptions`, where the
137
+ label `$cloud` is not meant to be interpreted literally but instead should be replaced by your
138
+ vendor prefix (so for HeadSpin it would be `headspin`, Sauce Labs it would be `sauce`, and
139
+ BrowserStack it would be `browserstack`, to name just a few examples). The `$cloud:appiumOptions`
140
+ capability would itself be a JSON object, with the following internal keys:
141
+
142
+ | <div style="width:10em">Capability</div> | Usage | Example |
143
+ | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
144
+ | `version` | The version of the Appium server that is used to host and manage drivers. If omitted, the behavior is left up to the provider, but the recommendation would be to provide the latest official version. | `2.0.0` |
145
+ | `automationVersion` | The version of the driver (as specified by `appium:automationName`) that should be used. | `1.55.2` |
146
+ | `automation` | The name of a custom driver to use (see below for more info). This would override `appium:automationName` and `$cloud:automationVersion`. | `{"name": "@org/custom-driver", "source": "github", "package": "custom-driver"}` |
147
+ | `plugins` | The list of plugins (and potentially versions of plugins) that should be activated (see below for more info). | `["images", "universal-xml"]` |
148
+
149
+ ### Basic example
150
+
151
+ Appium extensions (drivers and plugins) have a set of properties that specify where they can be
152
+ installed from. Cloud providers are obviously under no obligation to provide support for
153
+ arbitrarily specified extensions, seeing as these may represent untrusted code running in a managed
154
+ environment. In the case where arbitrary extensions are not supported, the `appium:automationName`,
155
+ `$cloud:automationVersion`, and `$cloud:appiumPlugins` capabilities should be sufficient. See the
156
+ following JSON object representing capabilities for a session:
157
+
158
+ ```json
159
+ {
160
+ "platformName": "iOS",
161
+ "appium:platformVersion": "14.4",
162
+ "appium:deviceName": "iPhone 11",
163
+ "appium:app": "Some-App.app.zip",
164
+ "appium:automationName": "XCUITest",
165
+ "$cloud:appiumOptions": {
166
+ "version": "2.0.0",
167
+ "automationVersion": "3.52.0",
168
+ "plugins": ["images"]
169
+ }
170
+ }
171
+ ```
172
+
173
+ This set of capabilities requests an Appium 2+ server supporting the XCUITest driver at version
174
+ `3.52.0`, and the `images` plugin active. This set is easy for a cloud provider to verify. The
175
+ cloud provider can obviously do anything it wants in response to these capabilities, including
176
+ downloading Appium and driver and plugin packages on the fly, or erroring out if the versions
177
+ requested are not in a supported set, or if the plugin is not supported, etc...
178
+
179
+ ### Basic example with `appium:options`
180
+
181
+ The previous example still looks a bit disorganized, so of course we also recommend that cloud
182
+ providers support the `appium:options` capability as detailed above, which could turn the previous
183
+ set of capabilities into the following:
184
+
185
+ ```json
186
+ {
187
+ "platformName": "iOS",
188
+ "appium:options": {
189
+ "platformVersion": "14.4",
190
+ "deviceName": "iPhone 11",
191
+ "app": "Some-App.app.zip",
192
+ "automationName": "XCUITest"
193
+ },
194
+ "$cloud:appiumOptions": {
195
+ "version": "2.0.0",
196
+ "automationVersion": "3.52.0",
197
+ "plugins": ["images"]
198
+ }
199
+ }
200
+ ```
201
+
202
+ ### Extension objects
203
+
204
+ Some service providers may wish to dynamically allow access to all of the features of the Appium
205
+ 2 CLI, including downloading arbitrary drivers and plugins. To represent these extensions, we can
206
+ define special JSON "extension objects", with the following keys:
207
+
208
+ - `name`: the name of the extension. This would be an `npm` package name (if downloading from `npm`),
209
+ or a `git` or GitHub spec (if downloading from a `git` server or GitHub).
210
+ - `version`: the version of the extension, e.g., the `npm` package version or `git` SHA.
211
+ - (optional) `source`: a denotation of where the extension can be downloaded from. It is recommended
212
+ to support the following values: `appium`, `npm`, `git`, `github`. Here, `appium` means "Appium's
213
+ own official list", and should be the default value if this key is not included.
214
+ - (optional) `package`: when downloading extensions from `git` or GitHub, the `npm` package name of
215
+ the extension must also be provided. This is optional for non-`git` sources.
216
+
217
+ Since each session is handled by a single driver, the `$cloud:appiumOptions`/`$automation`
218
+ capability could be used with an extension object value to denote this driver, for example:
219
+
220
+ ```json
221
+ {
222
+ "$cloud:appiumOptions": {
223
+ "automation": {
224
+ "name": "git+https://some-git-host.com/custom-driver-project.git",
225
+ "version": "some-git-sha",
226
+ "source": "git",
227
+ "package": "driver-npm-package-name"
228
+ }
229
+ }
230
+ }
231
+ ```
232
+
233
+ And since sessions can handle multiple plugins, each value in the list of `$cloud:appiumPlugins`
234
+ could also be an extension object rather than a string, so that specific versions could be
235
+ requested:
236
+
237
+ ```json
238
+ {
239
+ "$cloud:appiumOptions": {
240
+ "plugins": [{
241
+ "name": "images",
242
+ "version": "1.1.0"
243
+ }, {
244
+ "name": "my-github-org/my-custom-plugin",
245
+ "version": "a83f2e",
246
+ "source": "github",
247
+ "package": "custom-plugin"
248
+ }]
249
+ }
250
+ }
251
+ ```
252
+
253
+ These serve as illustrative examples for the recommendations here. Of course, it is up to the
254
+ service providers to implement the handling of these capabilities at their front end / load
255
+ balancer, to perform any error checking, or to actually run any of the `appium driver` or `appium
256
+ plugin` CLI commands that support the end user's request. This section is merely a suggestion as to
257
+ how service providers might design their user-facing capabilities API in a way which in principle
258
+ supports all of the capabilities that Appium itself would provide to the end user if they were
259
+ running Appium on their own.
@@ -0,0 +1,102 @@
1
+ ---
2
+ title: The Appium Config File
3
+ ---
4
+
5
+ Instead of passing arguments on the command line to Appium, you may add them to a special config
6
+ file. Appium will read values from this config file when it runs. (Please note that CLI arguments
7
+ have _precedence_ over configuration files; if a value is set in a config file _and_ via CLI
8
+ argument, the CLI argument is preferred.)
9
+
10
+ ## Supported Config File Formats
11
+
12
+ You can store your config data in the following kinds of files:
13
+
14
+ - JSON
15
+ - YAML
16
+ - JS (a JavaScript file exporting a JS object)
17
+ - CJS (the same as above; the extension is for common JS)
18
+
19
+ !!! warning
20
+
21
+ ```
22
+ Note: Configuration files in ESM format are not currently supported.
23
+ ```
24
+
25
+ ## Supported Config File Locations
26
+
27
+ Configuration files can be named anything, but the following filenames will be automatically
28
+ discovered and loaded by Appium:
29
+
30
+ - `.appiumrc.json` (recommended)
31
+ - `.appiumrc.yaml`
32
+ - `.appiumrc.yml`
33
+ - `.appiumrc.js`
34
+ - `.appiumrc.cjs`
35
+ - `appium.config.js`
36
+ - `appium.config.cjs`
37
+ - `.appiumrc` (which is considered to be JSON)
38
+
39
+ Further, _if your project uses Node.js,_ you can use store the configuration inside an `appium`
40
+ property in your `package.json` and it will be automatically discovered.
41
+
42
+ ### Config File Search
43
+
44
+ Appium will search _up_ the directory tree from the current working directory for one of these
45
+ files. If it reaches the current user's home directory or filesystem root, it will stop looking.
46
+
47
+ To specify a _custom_ location for your config file, use `appium --config /path/to/config/file`.
48
+
49
+ #### Configuration File Format
50
+
51
+ First, you might want to look at some examples:
52
+
53
+ - [Appium Configuration - JSON](https://github.com/appium/appium/blob/master/packages/appium/sample-code/appium.config.sample.json)
54
+ - [Appium Configuration - YAML](https://github.com/appium/appium/blob/master/packages/appium/sample-code/appium.config.sample.yaml)
55
+ - [Appium Configuration - JS](https://github.com/appium/appium/blob/master/packages/appium/sample-code/appium.config.sample.js)
56
+
57
+ A description of the format is available, as well:
58
+
59
+ - [Appium Configuration File JSON Schema](https://github.com/appium/appium/blob/master/packages/schema/lib/appium-config.schema.json)
60
+ - [TypeScript declarations for Appium Configuration](https://github.com/appium/appium/blob/master/packages/types/lib/config.ts)
61
+
62
+ To describe in words, the config file will have a root `server` property, and all arguments are
63
+ child properties. For certain properties which must be supplied on the command-line as
64
+ comma-delimited lists, JSON strings, and/or external filepaths, these instead will be of their
65
+ "native" type. For example, `--use-plugins <value>` needs `<value>` to be comma-delimited string
66
+ or path to a delimited file. However, the config file just wants an array, e.g.,:
67
+
68
+ ```json
69
+ {
70
+ "server": {
71
+ "use-plugins": ["my-plugin", "some-other-plugin"]
72
+ }
73
+ }
74
+ ```
75
+
76
+ ## Configuring extensions (drivers and plugins)
77
+
78
+ For `driver`-and-`plugin`-specific configuration, these live under the `server.driver` and
79
+ `server.plugin` properties, respectively. Each driver or plugin will have its own named property,
80
+ and the values of any specific configuration it provides are under this. For example:
81
+
82
+ ```json
83
+ {
84
+ "server": {
85
+ "driver": {
86
+ "xcuitest": {
87
+ "webkit-debug-proxy-port": 5400
88
+ }
89
+ }
90
+ }
91
+ }
92
+ ```
93
+
94
+ !!! note
95
+
96
+ ```
97
+ The above configuration corresponds to the `--driver-xcuitest-webkit-debug-proxy-port` CLI argument.
98
+ ```
99
+
100
+ All properties are case-sensitive and will be in
101
+ [kebab-case](https://en.wikipedia.org/wiki/Naming_convention_\(programming\)#Delimiter-separated_words).
102
+ For example, `callback-port` is allowed, but `callbackPort` is not.
@@ -0,0 +1,44 @@
1
+ ---
2
+ hide:
3
+ - toc
4
+
5
+ title: Managing Contexts
6
+ ---
7
+
8
+ A common feature of many app platforms is the ability for developers to embed web content inside of
9
+ the platform-native app frame. This allows developers to leverage web technologies or existing web
10
+ content for some or all of the app functionality. However, the additional complexity of mixing
11
+ "modes" within a single application can make it difficult for automation tools that are designed to
12
+ target the "native" elements and behaviours.
13
+
14
+ Appium provides a set of APIs for working with different app modes, called "contexts", that Appium
15
+ drivers can implement if they support automation commands in these different modes. There are three
16
+ basic commands that Appium has added to the W3C WebDriver spec for this purpose:
17
+
18
+ | Command Name | Method/Route | Params | Description | Returns |
19
+ | --------------------- | --------------------------- | ------------------------------------ | --------------------------------------------- | --------------- |
20
+ | `Get Contexts` | `GET /session/:id/contexts` | | Get a list of the available contexts | `array<string>` |
21
+ | `Get Current Context` | `GET /session/:id/context` | | Get the name of the active context | `string` |
22
+ | `Set Context` | `POST /session/:id/context` | `name` (`string`) | Switch into the context with the given `name` | `null` |
23
+
24
+ This API is flexible enough to handle a variety of semantic interpretations on the part of the
25
+ driver. For example, the XCUITest driver includes two kinds of contexts: the native app context and
26
+ any active webviews, as one context per webview. A call to `Get Contexts` will return the list of
27
+ names, which you as a test author can sift through and use to switch into the appropriate context.
28
+ As another example, the Appium Altunity
29
+ Plugin introduces the concept of a `UNITY`
30
+ context, which encapsulates all the plugin's specific behaviour to ensure that when outside of the
31
+ `UNITY` context, the active driver's usual command implementations are used.
32
+
33
+ It is important to note that a call to `Get Contexts` will always contain at least one context,
34
+ conventionally but not necessarily named `NATIVE_APP`. This is the default active context.
35
+
36
+ Depending on the type of context you're in, the operation of the driver might change. The XCUITest
37
+ driver, when targeting a webview context, will not run its typical routines for finding and
38
+ interacting with elements. Instead, it will run a different set of routines appropriate to web
39
+ elements. This might have a variety of consequences, like supporting a different set of locator
40
+ strategies.
41
+
42
+ The command names in the table above are generic references to the commands and not code examples.
43
+ For examples of how to access the Context API in the language-specific client libraries, please
44
+ visit the documentation for a given library.
@@ -0,0 +1,75 @@
1
+ ---
2
+ hide:
3
+ - toc
4
+
5
+ title: Retrieving Event Timings
6
+ ---
7
+
8
+ Appium comes with the ability to retrieve timing information about startup
9
+ information and command length. This is an advanced feature that is controlled
10
+ by the use of the `appium:eventTimings` capability (set it to `true` to log event
11
+ timings).
12
+
13
+ With this capability turned on, the `POST /session/:id/appium/events` response (i.e.,
14
+ the response to `driver.logs.events` or similar, depending on client) will be
15
+ decorated with an `events` property. This is the structure of that `events`
16
+ property:
17
+
18
+ ```
19
+ {
20
+ "<event_type>": [<occurence_timestamp_1>, ...],
21
+ "commands": [
22
+ {
23
+ "cmd": "<command_name>",
24
+ "startTime": <js_timestamp>,
25
+ "endTime": <js_timestamp>
26
+ },
27
+ ...
28
+ ]
29
+ }
30
+ ```
31
+
32
+ In other words, the `events` property has 2 kinds of properties of its own:
33
+
34
+ - Properties which are the names of event types
35
+ - The `commands` property
36
+
37
+ Properties which are names of event types correspond to an array of timestamps
38
+ when that event happened. It's an array because events might happen multiple
39
+ times in the course of a session. Examples of event types include:
40
+
41
+ - `newSessionRequested`
42
+ - `newSessionStarted`
43
+
44
+ (Individual drivers will define their own event types, so we do not have an
45
+ exhaustive list to share here. It's best to actually get one of these responses
46
+ from a real session to inspect the possible event types.)
47
+
48
+ The `commands` property is an array of objects. Each object has the name of the
49
+ Appium-internal command (for example `click`), as well as the time the command
50
+ started processing and the time it finished processing.
51
+
52
+ With this data, you can calculate the time between events, or a strict timeline
53
+ of events, or statistical information about average length of a certain type of
54
+ command, and so on.
55
+
56
+ You can only receive data about events that have happened when you make the
57
+ call to `/session/:id/appium/events`, so the best time to get data about an entire session is
58
+ right before quitting it.
59
+
60
+ The Appium team maintains an event timings parser tool that can be used to
61
+ generate various kinds of reports from event timings output:
62
+ [appium/appium-event-parser](https://github.com/appium/appium-event-parser).
63
+
64
+ !!! note
65
+
66
+ ```
67
+ In the past, events were available as a part of `GET /session/:id` response
68
+ ```
69
+
70
+ ## Add a custom event
71
+
72
+ You can add custom events that will show up in the event timings data. You can send a custom event
73
+ name to the Appium server using the [Log Custom Event API](../reference/api/appium.md#logcustomevent),
74
+ and the server will store the timestamp. The [Get Log Events](../reference/api/appium.md#getlogevents)
75
+ command can be used to retrieve named events' timestamps later on.
@@ -0,0 +1,142 @@
1
+ ---
2
+ hide:
3
+ - toc
4
+
5
+ title: Execute Methods
6
+ ---
7
+
8
+ Because the scope of commands implemented in Appium drivers is broader than the scope of commands
9
+ defined by the W3C WebDriver spec, Appium needs a way for these "extended" commands to be accessible
10
+ by client libraries. There are two main strategies for this:
11
+
12
+ 1. Appium drivers define new W3C-compatible API routes, and Appium clients are updated to include
13
+ support for those new routes.
14
+ 2. Appium drivers define so-called "Execute Methods" which provide new functionality by
15
+ overloading the existing `Execute Script` command which is already available in any WebDriver-
16
+ based client library (including all Selenium and Appium clients).
17
+
18
+ There are pros and cons for each strategy, but it is ultimately up to the extension author to
19
+ decide how they wish implement new commands.
20
+
21
+ This guide is designed to specifically help you understand the "Execute Method" strategy. This
22
+ pattern is commonly used in official Appium drivers and other third-party extensions.
23
+ Here's an example of how the `Execute Script` command is designed to work in the world of WebDriver
24
+ and browser automation:
25
+
26
+ \=== "JS (WebDriverIO)"
27
+
28
+ ````
29
+ ```js
30
+ await driver.executeScript('return arguments[0] + arguments[1]', [3, 4])
31
+ ```
32
+ ````
33
+
34
+ \=== "Java"
35
+
36
+ ````
37
+ ```java
38
+ JavascriptExecutor jsDriver = (JavascriptExecutor) driver;
39
+ jsDriver.executeScript("return arguments[0] + arguments[1]", 3, 4);
40
+ ```
41
+ ````
42
+
43
+ \=== "Python"
44
+
45
+ ````
46
+ ```py
47
+ driver.execute_script('return arguments[0] + arguments[1]', 3, 4)
48
+ ```
49
+ ````
50
+
51
+ \=== "Ruby"
52
+
53
+ ````
54
+ ```rb
55
+ driver.execute_script 'return arguments[0] + arguments[1]', 3, 4
56
+ ```
57
+ ````
58
+
59
+ \=== "C#"
60
+
61
+ ````
62
+ ```dotnet
63
+ ((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0] + arguments[1]", 3, 4);
64
+ ```
65
+ ````
66
+
67
+ What's happening here is that we are defining a snippet of Javascript (technically,
68
+ a function body) to be executed within the web browser. The client can send arguments which are
69
+ serialized, sent over HTTP, and finally provided to the function as parameters. In this example,
70
+ we are essentially defining an addition function. The return value of the `Execute Script` command
71
+ is whatever the return value of the Javascript snippet is! In the case of this example, that value
72
+ would be the number `7` (`3` + `4`).
73
+
74
+ Each client library has its own way of calling the command and providing any arguments to the script
75
+ function, but the function itself—the snippet—is always a string and is the same across all languages.
76
+
77
+ In the world of Appium, we are usually not automating a web browser, which means this command is
78
+ not particularly useful. But it _is_ useful as a way to encode the name of an arbitrary command and
79
+ to provide parameters. For example, the XCUITest
80
+ Driver has implemented a command that lets a client
81
+ terminate a running application if you know the ID (the `bundleId`) of the app. The way that the
82
+ driver makes this command available is via the Execute Method `mobile: terminateApp`. Instead of
83
+ providing a JavaScript function to the "Execute Script" command, the user provides a _known string_
84
+ as defined by the driver. The only other thing a client needs to know is the set of
85
+ parameters for the method, which are documented by the driver. In this case, we have a parameter
86
+ named `bundleId`, whose value should be a string encoding the ID of the app to terminate. Here is
87
+ how this Execute Method would be called:
88
+
89
+ \=== "JS (WebDriverIO)"
90
+
91
+ ````
92
+ ```js
93
+ await driver.executeScript('mobile: terminateApp', [{bundleId: 'com.my.app'}])
94
+ ```
95
+ ````
96
+
97
+ \=== "Java"
98
+
99
+ ````
100
+ ```java
101
+ JavascriptExecutor jsDriver = (JavascriptExecutor) driver;
102
+ jsDriver.executeScript("mobile: terminateApp", ImmutableMap.of("bundleId", "com.my.app"));
103
+ ```
104
+ ````
105
+
106
+ \=== "Python"
107
+
108
+ ````
109
+ ```py
110
+ driver.execute_script('mobile: terminateApp', {'bundleId': 'com.my.app'})
111
+ ```
112
+ ````
113
+
114
+ \=== "Ruby"
115
+
116
+ ````
117
+ ```rb
118
+ driver.execute_script 'mobile: terminateApp', { bundleId: 'com.my.app' }
119
+ ```
120
+ ````
121
+
122
+ \=== "C#"
123
+
124
+ ````
125
+ ```dotnet
126
+ ((IJavaScriptExecutor)driver).ExecuteScript("mobile: terminateApp",
127
+ new Dictionary<string, string> { { "bundleId", "com.my.app" } });
128
+
129
+ ```
130
+ ````
131
+
132
+ There are two important differences in using Appium Execute Methods from vanilla Selenium
133
+ Javascript execution:
134
+
135
+ 1. The script string is just a command name; it will be provided by the driver documentation
136
+ 2. The standard way to provide parameters is as a _single_ object with keys representing parameter
137
+ names and values representing parameter values. So in this case, we had to specify both the
138
+ parameter name (`bundleId`) as the key of the parameters object, and the parameter value
139
+ (`com.my.app`) as the value for that key. A driver can define parameters as _required_ or _optional_.
140
+
141
+ Of course, always refer to the documentation for the particular Execute Method in case the author
142
+ has made any alterations to the standard access method.