osn-selenium 1.0.0__py3-none-any.whl → 1.2.0__py3-none-any.whl

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 (475) hide show
  1. osn_selenium/_base_models.py +41 -0
  2. osn_selenium/_cdp_import.py +253 -0
  3. osn_selenium/_decorators.py +57 -0
  4. osn_selenium/_trio_threads_helpers.py +157 -0
  5. osn_selenium/_typehints.py +1 -1
  6. osn_selenium/abstract/executors/cdp.py +63 -0
  7. osn_selenium/abstract/webdriver/blink/base.py +14 -0
  8. osn_selenium/abstract/webdriver/blink/lifecycle.py +8 -8
  9. osn_selenium/abstract/webdriver/core/base.py +0 -14
  10. osn_selenium/abstract/webdriver/core/capture.py +4 -3
  11. osn_selenium/abstract/webdriver/core/lifecycle.py +8 -8
  12. osn_selenium/abstract/webdriver/core/script.py +5 -4
  13. osn_selenium/abstract/webdriver/core/window.py +11 -11
  14. osn_selenium/browsers_handler/models.py +1 -1
  15. osn_selenium/dev_tools/_decorators.py +19 -51
  16. osn_selenium/dev_tools/_functions.py +2 -4
  17. osn_selenium/dev_tools/_typehints.py +5 -2
  18. osn_selenium/dev_tools/_wrappers.py +0 -3
  19. osn_selenium/dev_tools/domains/__init__.py +2 -2
  20. osn_selenium/dev_tools/domains/abstract.py +1 -1
  21. osn_selenium/dev_tools/domains/fetch.py +6 -8
  22. osn_selenium/dev_tools/domains_default/fetch.py +2 -2
  23. osn_selenium/dev_tools/filters.py +1 -1
  24. osn_selenium/dev_tools/logger/main.py +9 -21
  25. osn_selenium/dev_tools/logger/models.py +1 -1
  26. osn_selenium/dev_tools/logger/target.py +49 -29
  27. osn_selenium/dev_tools/manager/base.py +10 -42
  28. osn_selenium/dev_tools/manager/lifecycle.py +84 -75
  29. osn_selenium/dev_tools/manager/logging.py +1 -1
  30. osn_selenium/dev_tools/manager/targets.py +13 -5
  31. osn_selenium/dev_tools/models.py +1 -1
  32. osn_selenium/dev_tools/settings.py +9 -5
  33. osn_selenium/dev_tools/target/base.py +30 -34
  34. osn_selenium/dev_tools/target/discovery.py +1 -1
  35. osn_selenium/dev_tools/target/events.py +2 -2
  36. osn_selenium/dev_tools/target/fingerprint.py +1 -1
  37. osn_selenium/dev_tools/target/lifecycle.py +103 -38
  38. osn_selenium/dev_tools/target/logging.py +11 -3
  39. osn_selenium/exceptions/__init__.py +0 -1
  40. osn_selenium/exceptions/base.py +28 -1
  41. osn_selenium/exceptions/bidi_bridge.py +59 -0
  42. osn_selenium/exceptions/configuration.py +1 -8
  43. osn_selenium/exceptions/dependencies.py +60 -0
  44. osn_selenium/exceptions/devtools.py +9 -39
  45. osn_selenium/exceptions/experimental.py +26 -0
  46. osn_selenium/exceptions/flags.py +0 -2
  47. osn_selenium/exceptions/instance.py +1 -9
  48. osn_selenium/exceptions/javascript.py +0 -2
  49. osn_selenium/exceptions/logic.py +0 -2
  50. osn_selenium/exceptions/path.py +1 -9
  51. osn_selenium/exceptions/platform.py +0 -2
  52. osn_selenium/exceptions/protocol.py +0 -3
  53. osn_selenium/exceptions/webdriver.py +1 -7
  54. osn_selenium/exceptions/window.py +1 -8
  55. osn_selenium/executors/sync/cdp.py +95 -0
  56. osn_selenium/executors/trio_bidi/cdp.py +101 -0
  57. osn_selenium/executors/trio_bidi/javascript.py +101 -0
  58. osn_selenium/executors/trio_threads/cdp.py +99 -0
  59. osn_selenium/executors/trio_threads/javascript.py +1 -1
  60. osn_selenium/executors/unified/javascript.py +0 -4
  61. osn_selenium/flags/base.py +7 -13
  62. osn_selenium/flags/blink.py +2 -8
  63. osn_selenium/flags/chrome.py +6 -6
  64. osn_selenium/flags/edge.py +6 -6
  65. osn_selenium/flags/models/base.py +4 -4
  66. osn_selenium/flags/models/blink.py +1 -1
  67. osn_selenium/flags/models/values.py +1 -1
  68. osn_selenium/instances/convert.py +44 -3
  69. osn_selenium/instances/protocols.py +47 -1
  70. osn_selenium/instances/sync/action_chains/__init__.py +6 -0
  71. osn_selenium/instances/sync/browsing_context.py +2 -2
  72. osn_selenium/instances/sync/script.py +7 -2
  73. osn_selenium/instances/sync/shadow_root.py +30 -8
  74. osn_selenium/instances/sync/web_element.py +1 -1
  75. osn_selenium/instances/trio_bidi/__init__.py +1 -0
  76. osn_selenium/instances/trio_bidi/shadow_root.py +180 -0
  77. osn_selenium/instances/trio_bidi/switch_to.py +143 -0
  78. osn_selenium/instances/trio_bidi/web_driver_wait.py +124 -0
  79. osn_selenium/instances/trio_bidi/web_element.py +239 -0
  80. osn_selenium/instances/trio_threads/action_chains/__init__.py +6 -0
  81. osn_selenium/instances/trio_threads/action_chains/base.py +1 -1
  82. osn_selenium/instances/trio_threads/alert.py +1 -1
  83. osn_selenium/instances/trio_threads/browser.py +1 -1
  84. osn_selenium/instances/trio_threads/browsing_context.py +3 -3
  85. osn_selenium/instances/trio_threads/dialog.py +1 -1
  86. osn_selenium/instances/trio_threads/fedcm.py +1 -1
  87. osn_selenium/instances/trio_threads/mobile.py +1 -1
  88. osn_selenium/instances/trio_threads/network.py +1 -1
  89. osn_selenium/instances/trio_threads/permissions.py +1 -1
  90. osn_selenium/instances/trio_threads/script.py +8 -3
  91. osn_selenium/instances/trio_threads/shadow_root.py +46 -15
  92. osn_selenium/instances/trio_threads/storage.py +1 -1
  93. osn_selenium/instances/trio_threads/switch_to.py +1 -1
  94. osn_selenium/instances/trio_threads/web_driver_wait.py +1 -1
  95. osn_selenium/instances/trio_threads/web_element.py +1 -1
  96. osn_selenium/instances/trio_threads/web_extension.py +1 -1
  97. osn_selenium/instances/unified/browsing_context.py +2 -2
  98. osn_selenium/instances/unified/script.py +2 -2
  99. osn_selenium/instances/unified/web_element.py +3 -5
  100. osn_selenium/javascript/fingerprint/__init__.py +3 -2
  101. osn_selenium/javascript/fingerprint/registry/models.py +1 -1
  102. osn_selenium/javascript/fingerprint/spoof/core_rules.py +1 -1
  103. osn_selenium/javascript/fingerprint/spoof/noise.py +1 -1
  104. osn_selenium/javascript/models.py +1 -1
  105. osn_selenium/models.py +2 -47
  106. osn_selenium/trio_bidi/__init__.py +1 -0
  107. osn_selenium/trio_bidi/_context_vars.py +12 -0
  108. osn_selenium/trio_bidi/_error_mappings.py +123 -0
  109. osn_selenium/trio_bidi/_error_redirects.py +194 -0
  110. osn_selenium/trio_bidi/_file_functions.py +28 -0
  111. osn_selenium/trio_bidi/_internal_mappings.py +10 -0
  112. osn_selenium/trio_bidi/_models.py +199 -0
  113. osn_selenium/trio_bidi/_typehints.py +20 -0
  114. osn_selenium/trio_bidi/connection_pool.py +587 -0
  115. osn_selenium/trio_bidi/mapping/__init__.py +1 -0
  116. osn_selenium/trio_bidi/mapping/_constants.py +14 -0
  117. osn_selenium/trio_bidi/mapping/_js_snippets.py +285 -0
  118. osn_selenium/trio_bidi/mapping/_utils.py +4 -0
  119. osn_selenium/trio_bidi/mapping/request_functions/__init__.py +87 -0
  120. osn_selenium/trio_bidi/mapping/request_functions/_alert.py +102 -0
  121. osn_selenium/trio_bidi/mapping/request_functions/_args_helpers.py +225 -0
  122. osn_selenium/trio_bidi/mapping/request_functions/_capture.py +71 -0
  123. osn_selenium/trio_bidi/mapping/request_functions/_cdp.py +40 -0
  124. osn_selenium/trio_bidi/mapping/request_functions/_element.py +55 -0
  125. osn_selenium/trio_bidi/mapping/request_functions/_file.py +32 -0
  126. osn_selenium/trio_bidi/mapping/request_functions/_navigation.py +147 -0
  127. osn_selenium/trio_bidi/mapping/request_functions/_script.py +85 -0
  128. osn_selenium/trio_bidi/mapping/request_functions/_shadow_root.py +65 -0
  129. osn_selenium/trio_bidi/mapping/request_functions/_switch_to.py +59 -0
  130. osn_selenium/trio_bidi/mapping/request_functions/_web_element.py +448 -0
  131. osn_selenium/trio_bidi/mapping/request_functions/_window.py +125 -0
  132. osn_selenium/trio_bidi/mapping/response_functions/__init__.py +86 -0
  133. osn_selenium/trio_bidi/mapping/response_functions/_alert.py +81 -0
  134. osn_selenium/trio_bidi/mapping/response_functions/_args_helpers.py +183 -0
  135. osn_selenium/trio_bidi/mapping/response_functions/_args_validators.py +153 -0
  136. osn_selenium/trio_bidi/mapping/response_functions/_capture.py +71 -0
  137. osn_selenium/trio_bidi/mapping/response_functions/_cdp.py +26 -0
  138. osn_selenium/trio_bidi/mapping/response_functions/_element.py +58 -0
  139. osn_selenium/trio_bidi/mapping/response_functions/_file.py +30 -0
  140. osn_selenium/trio_bidi/mapping/response_functions/_navigation.py +120 -0
  141. osn_selenium/trio_bidi/mapping/response_functions/_script.py +57 -0
  142. osn_selenium/trio_bidi/mapping/response_functions/_shadow_root.py +58 -0
  143. osn_selenium/trio_bidi/mapping/response_functions/_switch_to.py +57 -0
  144. osn_selenium/trio_bidi/mapping/response_functions/_web_element.py +368 -0
  145. osn_selenium/trio_bidi/mapping/response_functions/_window.py +119 -0
  146. osn_selenium/trio_bidi/mixin.py +186 -0
  147. osn_selenium/trio_bidi/remote_connection.py +164 -0
  148. osn_selenium/{base_mixin.py → trio_threads_mixin.py} +31 -40
  149. osn_selenium/webdrivers/_args_helpers.py +120 -7
  150. osn_selenium/webdrivers/_bridges.py +2 -2
  151. osn_selenium/webdrivers/_executable_tables/models.py +1 -1
  152. osn_selenium/webdrivers/_typehints.py +9 -3
  153. osn_selenium/webdrivers/protocols.py +81 -1
  154. osn_selenium/webdrivers/sync/blink/__init__.py +11 -1
  155. osn_selenium/webdrivers/sync/blink/base.py +23 -1
  156. osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
  157. osn_selenium/webdrivers/sync/chrome/__init__.py +36 -1
  158. osn_selenium/webdrivers/sync/chrome/base.py +13 -1
  159. osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
  160. osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
  161. osn_selenium/webdrivers/sync/core/__init__.py +10 -1
  162. osn_selenium/webdrivers/sync/core/base.py +18 -18
  163. osn_selenium/webdrivers/sync/core/capture.py +3 -2
  164. osn_selenium/webdrivers/sync/core/file.py +3 -2
  165. osn_selenium/webdrivers/sync/core/lifecycle.py +44 -10
  166. osn_selenium/webdrivers/sync/core/script.py +3 -2
  167. osn_selenium/webdrivers/sync/core/window.py +3 -3
  168. osn_selenium/webdrivers/sync/edge/__init__.py +36 -1
  169. osn_selenium/webdrivers/sync/edge/base.py +13 -1
  170. osn_selenium/webdrivers/sync/edge/lifecycle.py +23 -5
  171. osn_selenium/webdrivers/sync/edge/settings.py +6 -1
  172. osn_selenium/webdrivers/sync/yandex/__init__.py +36 -1
  173. osn_selenium/webdrivers/sync/yandex/base.py +13 -1
  174. osn_selenium/webdrivers/sync/yandex/lifecycle.py +23 -5
  175. osn_selenium/webdrivers/sync/yandex/settings.py +6 -1
  176. osn_selenium/webdrivers/trio_bidi/__init__.py +1 -0
  177. osn_selenium/webdrivers/trio_bidi/blink/__init__.py +132 -0
  178. osn_selenium/webdrivers/trio_bidi/blink/base.py +167 -0
  179. osn_selenium/webdrivers/trio_bidi/blink/lifecycle.py +89 -0
  180. osn_selenium/webdrivers/trio_bidi/blink/settings.py +63 -0
  181. osn_selenium/webdrivers/trio_bidi/chrome/__init__.py +114 -0
  182. osn_selenium/webdrivers/trio_bidi/chrome/base.py +127 -0
  183. osn_selenium/webdrivers/trio_bidi/chrome/lifecycle.py +85 -0
  184. osn_selenium/webdrivers/trio_bidi/chrome/settings.py +63 -0
  185. osn_selenium/webdrivers/trio_bidi/core/__init__.py +95 -0
  186. osn_selenium/webdrivers/trio_bidi/core/actions.py +70 -0
  187. osn_selenium/webdrivers/trio_bidi/core/base.py +200 -0
  188. osn_selenium/webdrivers/trio_bidi/core/capture.py +39 -0
  189. osn_selenium/webdrivers/trio_bidi/core/devtools.py +49 -0
  190. osn_selenium/webdrivers/trio_bidi/core/element.py +64 -0
  191. osn_selenium/webdrivers/trio_bidi/core/lifecycle.py +135 -0
  192. osn_selenium/webdrivers/trio_bidi/core/navigation.py +37 -0
  193. osn_selenium/webdrivers/trio_bidi/core/script.py +56 -0
  194. osn_selenium/webdrivers/trio_bidi/core/settings.py +36 -0
  195. osn_selenium/webdrivers/trio_bidi/core/window.py +134 -0
  196. osn_selenium/webdrivers/trio_bidi/edge/__init__.py +114 -0
  197. osn_selenium/webdrivers/trio_bidi/edge/base.py +123 -0
  198. osn_selenium/webdrivers/trio_bidi/edge/lifecycle.py +85 -0
  199. osn_selenium/webdrivers/trio_bidi/edge/settings.py +63 -0
  200. osn_selenium/webdrivers/trio_bidi/yandex/__init__.py +114 -0
  201. osn_selenium/webdrivers/trio_bidi/yandex/base.py +120 -0
  202. osn_selenium/webdrivers/trio_bidi/yandex/lifecycle.py +85 -0
  203. osn_selenium/webdrivers/trio_bidi/yandex/settings.py +63 -0
  204. osn_selenium/webdrivers/trio_threads/blink/__init__.py +18 -2
  205. osn_selenium/webdrivers/trio_threads/blink/base.py +25 -1
  206. osn_selenium/webdrivers/trio_threads/blink/casting.py +1 -1
  207. osn_selenium/webdrivers/trio_threads/blink/features.py +1 -1
  208. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
  209. osn_selenium/webdrivers/trio_threads/blink/logging.py +1 -1
  210. osn_selenium/webdrivers/trio_threads/blink/network.py +1 -1
  211. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +34 -1
  212. osn_selenium/webdrivers/trio_threads/chrome/base.py +14 -2
  213. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +23 -5
  214. osn_selenium/webdrivers/trio_threads/chrome/settings.py +1 -1
  215. osn_selenium/webdrivers/trio_threads/core/__init__.py +10 -14
  216. osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
  217. osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
  218. osn_selenium/webdrivers/trio_threads/core/base.py +18 -22
  219. osn_selenium/webdrivers/trio_threads/core/capture.py +4 -3
  220. osn_selenium/webdrivers/trio_threads/core/comonents.py +1 -1
  221. osn_selenium/webdrivers/trio_threads/core/devtools.py +1 -1
  222. osn_selenium/webdrivers/trio_threads/core/element.py +1 -1
  223. osn_selenium/webdrivers/trio_threads/core/file.py +5 -4
  224. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +45 -11
  225. osn_selenium/webdrivers/trio_threads/core/navigation.py +1 -1
  226. osn_selenium/webdrivers/trio_threads/core/script.py +4 -3
  227. osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
  228. osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
  229. osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
  230. osn_selenium/webdrivers/trio_threads/core/window.py +6 -6
  231. osn_selenium/webdrivers/trio_threads/edge/__init__.py +34 -1
  232. osn_selenium/webdrivers/trio_threads/edge/base.py +14 -2
  233. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +23 -5
  234. osn_selenium/webdrivers/trio_threads/edge/settings.py +1 -1
  235. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +34 -1
  236. osn_selenium/webdrivers/trio_threads/yandex/base.py +14 -2
  237. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +23 -5
  238. osn_selenium/webdrivers/trio_threads/yandex/settings.py +1 -1
  239. osn_selenium/webdrivers/unified/blink/base.py +9 -1
  240. osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
  241. osn_selenium/webdrivers/unified/chrome/base.py +9 -1
  242. osn_selenium/webdrivers/unified/core/auth.py +4 -2
  243. osn_selenium/webdrivers/unified/core/base.py +19 -6
  244. osn_selenium/webdrivers/unified/core/capture.py +3 -2
  245. osn_selenium/webdrivers/unified/core/components.py +12 -7
  246. osn_selenium/webdrivers/unified/core/devtools.py +2 -1
  247. osn_selenium/webdrivers/unified/core/file.py +3 -2
  248. osn_selenium/webdrivers/unified/core/lifecycle.py +5 -3
  249. osn_selenium/webdrivers/unified/core/script.py +5 -3
  250. osn_selenium/webdrivers/unified/core/storage.py +2 -1
  251. osn_selenium/webdrivers/unified/core/window.py +9 -8
  252. osn_selenium/webdrivers/unified/edge/base.py +9 -1
  253. osn_selenium/webdrivers/unified/yandex/base.py +9 -1
  254. {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/METADATA +24 -10
  255. osn_selenium-1.2.0.dist-info/RECORD +480 -0
  256. {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/WHEEL +1 -1
  257. osn_selenium/abstract/executors/cdp/__init__.py +0 -435
  258. osn_selenium/abstract/executors/cdp/accessibility.py +0 -62
  259. osn_selenium/abstract/executors/cdp/animation.py +0 -47
  260. osn_selenium/abstract/executors/cdp/audits.py +0 -39
  261. osn_selenium/abstract/executors/cdp/autofill.py +0 -34
  262. osn_selenium/abstract/executors/cdp/background_service.py +0 -22
  263. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -95
  264. osn_selenium/abstract/executors/cdp/browser.py +0 -122
  265. osn_selenium/abstract/executors/cdp/cache_storage.py +0 -49
  266. osn_selenium/abstract/executors/cdp/cast.py +0 -31
  267. osn_selenium/abstract/executors/cdp/console.py +0 -18
  268. osn_selenium/abstract/executors/cdp/css.py +0 -197
  269. osn_selenium/abstract/executors/cdp/debugger.py +0 -198
  270. osn_selenium/abstract/executors/cdp/device_access.py +0 -22
  271. osn_selenium/abstract/executors/cdp/device_orientation.py +0 -14
  272. osn_selenium/abstract/executors/cdp/dom.py +0 -305
  273. osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -57
  274. osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -42
  275. osn_selenium/abstract/executors/cdp/dom_storage.py +0 -31
  276. osn_selenium/abstract/executors/cdp/emulation.py +0 -259
  277. osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -18
  278. osn_selenium/abstract/executors/cdp/extensions.py +0 -31
  279. osn_selenium/abstract/executors/cdp/fed_cm.py +0 -35
  280. osn_selenium/abstract/executors/cdp/fetch.py +0 -76
  281. osn_selenium/abstract/executors/cdp/file_system.py +0 -11
  282. osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -30
  283. osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -73
  284. osn_selenium/abstract/executors/cdp/indexed_db.py +0 -99
  285. osn_selenium/abstract/executors/cdp/input.py +0 -158
  286. osn_selenium/abstract/executors/cdp/inspector.py +0 -14
  287. osn_selenium/abstract/executors/cdp/io.py +0 -24
  288. osn_selenium/abstract/executors/cdp/layer_tree.py +0 -61
  289. osn_selenium/abstract/executors/cdp/log.py +0 -27
  290. osn_selenium/abstract/executors/cdp/media.py +0 -14
  291. osn_selenium/abstract/executors/cdp/memory.py +0 -61
  292. osn_selenium/abstract/executors/cdp/network.py +0 -252
  293. osn_selenium/abstract/executors/cdp/overlay.py +0 -166
  294. osn_selenium/abstract/executors/cdp/page.py +0 -347
  295. osn_selenium/abstract/executors/cdp/performance.py +0 -28
  296. osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -11
  297. osn_selenium/abstract/executors/cdp/preload.py +0 -14
  298. osn_selenium/abstract/executors/cdp/profiler.py +0 -54
  299. osn_selenium/abstract/executors/cdp/pwa.py +0 -46
  300. osn_selenium/abstract/executors/cdp/runtime.py +0 -176
  301. osn_selenium/abstract/executors/cdp/schema.py +0 -11
  302. osn_selenium/abstract/executors/cdp/security.py +0 -26
  303. osn_selenium/abstract/executors/cdp/service_worker.py +0 -54
  304. osn_selenium/abstract/executors/cdp/storage.py +0 -175
  305. osn_selenium/abstract/executors/cdp/system_info.py +0 -24
  306. osn_selenium/abstract/executors/cdp/target.py +0 -125
  307. osn_selenium/abstract/executors/cdp/tethering.py +0 -14
  308. osn_selenium/abstract/executors/cdp/tracing.py +0 -48
  309. osn_selenium/abstract/executors/cdp/web_audio.py +0 -19
  310. osn_selenium/abstract/executors/cdp/web_authn.py +0 -76
  311. osn_selenium/executors/sync/cdp/__init__.py +0 -550
  312. osn_selenium/executors/sync/cdp/accessibility.py +0 -74
  313. osn_selenium/executors/sync/cdp/animation.py +0 -50
  314. osn_selenium/executors/sync/cdp/audits.py +0 -48
  315. osn_selenium/executors/sync/cdp/autofill.py +0 -39
  316. osn_selenium/executors/sync/cdp/background_service.py +0 -30
  317. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -101
  318. osn_selenium/executors/sync/cdp/browser.py +0 -131
  319. osn_selenium/executors/sync/cdp/cache_storage.py +0 -66
  320. osn_selenium/executors/sync/cdp/cast.py +0 -38
  321. osn_selenium/executors/sync/cdp/console.py +0 -24
  322. osn_selenium/executors/sync/cdp/css.py +0 -187
  323. osn_selenium/executors/sync/cdp/debugger.py +0 -206
  324. osn_selenium/executors/sync/cdp/device_access.py +0 -27
  325. osn_selenium/executors/sync/cdp/device_orientation.py +0 -24
  326. osn_selenium/executors/sync/cdp/dom.py +0 -310
  327. osn_selenium/executors/sync/cdp/dom_debugger.py +0 -56
  328. osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -58
  329. osn_selenium/executors/sync/cdp/dom_storage.py +0 -38
  330. osn_selenium/executors/sync/cdp/emulation.py +0 -270
  331. osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -27
  332. osn_selenium/executors/sync/cdp/extensions.py +0 -39
  333. osn_selenium/executors/sync/cdp/fed_cm.py +0 -45
  334. osn_selenium/executors/sync/cdp/fetch.py +0 -96
  335. osn_selenium/executors/sync/cdp/file_system.py +0 -18
  336. osn_selenium/executors/sync/cdp/headless_experimental.py +0 -44
  337. osn_selenium/executors/sync/cdp/heap_profiler.py +0 -89
  338. osn_selenium/executors/sync/cdp/indexed_db.py +0 -142
  339. osn_selenium/executors/sync/cdp/input.py +0 -233
  340. osn_selenium/executors/sync/cdp/inspector.py +0 -21
  341. osn_selenium/executors/sync/cdp/io.py +0 -33
  342. osn_selenium/executors/sync/cdp/layer_tree.py +0 -71
  343. osn_selenium/executors/sync/cdp/log.py +0 -35
  344. osn_selenium/executors/sync/cdp/media.py +0 -21
  345. osn_selenium/executors/sync/cdp/memory.py +0 -62
  346. osn_selenium/executors/sync/cdp/network.py +0 -287
  347. osn_selenium/executors/sync/cdp/overlay.py +0 -174
  348. osn_selenium/executors/sync/cdp/page.py +0 -365
  349. osn_selenium/executors/sync/cdp/performance.py +0 -33
  350. osn_selenium/executors/sync/cdp/performance_timeline.py +0 -26
  351. osn_selenium/executors/sync/cdp/preload.py +0 -21
  352. osn_selenium/executors/sync/cdp/profiler.py +0 -58
  353. osn_selenium/executors/sync/cdp/pwa.py +0 -55
  354. osn_selenium/executors/sync/cdp/runtime.py +0 -221
  355. osn_selenium/executors/sync/cdp/schema.py +0 -23
  356. osn_selenium/executors/sync/cdp/security.py +0 -30
  357. osn_selenium/executors/sync/cdp/service_worker.py +0 -56
  358. osn_selenium/executors/sync/cdp/storage.py +0 -151
  359. osn_selenium/executors/sync/cdp/system_info.py +0 -30
  360. osn_selenium/executors/sync/cdp/target.py +0 -147
  361. osn_selenium/executors/sync/cdp/tethering.py +0 -21
  362. osn_selenium/executors/sync/cdp/tracing.py +0 -62
  363. osn_selenium/executors/sync/cdp/web_audio.py +0 -24
  364. osn_selenium/executors/sync/cdp/web_authn.py +0 -82
  365. osn_selenium/executors/trio_threads/cdp/__init__.py +0 -771
  366. osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -87
  367. osn_selenium/executors/trio_threads/cdp/animation.py +0 -63
  368. osn_selenium/executors/trio_threads/cdp/audits.py +0 -57
  369. osn_selenium/executors/trio_threads/cdp/autofill.py +0 -52
  370. osn_selenium/executors/trio_threads/cdp/background_service.py +0 -40
  371. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -111
  372. osn_selenium/executors/trio_threads/cdp/browser.py +0 -140
  373. osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -79
  374. osn_selenium/executors/trio_threads/cdp/cast.py +0 -47
  375. osn_selenium/executors/trio_threads/cdp/console.py +0 -33
  376. osn_selenium/executors/trio_threads/cdp/css.py +0 -196
  377. osn_selenium/executors/trio_threads/cdp/debugger.py +0 -219
  378. osn_selenium/executors/trio_threads/cdp/device_access.py +0 -40
  379. osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -34
  380. osn_selenium/executors/trio_threads/cdp/dom.py +0 -319
  381. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -69
  382. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -71
  383. osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -51
  384. osn_selenium/executors/trio_threads/cdp/emulation.py +0 -283
  385. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -37
  386. osn_selenium/executors/trio_threads/cdp/extensions.py +0 -52
  387. osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -54
  388. osn_selenium/executors/trio_threads/cdp/fetch.py +0 -105
  389. osn_selenium/executors/trio_threads/cdp/file_system.py +0 -31
  390. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -54
  391. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -102
  392. osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -155
  393. osn_selenium/executors/trio_threads/cdp/input.py +0 -242
  394. osn_selenium/executors/trio_threads/cdp/inspector.py +0 -34
  395. osn_selenium/executors/trio_threads/cdp/io.py +0 -42
  396. osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -84
  397. osn_selenium/executors/trio_threads/cdp/log.py +0 -44
  398. osn_selenium/executors/trio_threads/cdp/media.py +0 -30
  399. osn_selenium/executors/trio_threads/cdp/memory.py +0 -71
  400. osn_selenium/executors/trio_threads/cdp/network.py +0 -296
  401. osn_selenium/executors/trio_threads/cdp/overlay.py +0 -183
  402. osn_selenium/executors/trio_threads/cdp/page.py +0 -374
  403. osn_selenium/executors/trio_threads/cdp/performance.py +0 -46
  404. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -36
  405. osn_selenium/executors/trio_threads/cdp/preload.py +0 -30
  406. osn_selenium/executors/trio_threads/cdp/profiler.py +0 -71
  407. osn_selenium/executors/trio_threads/cdp/pwa.py +0 -64
  408. osn_selenium/executors/trio_threads/cdp/runtime.py +0 -230
  409. osn_selenium/executors/trio_threads/cdp/schema.py +0 -32
  410. osn_selenium/executors/trio_threads/cdp/security.py +0 -43
  411. osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -69
  412. osn_selenium/executors/trio_threads/cdp/storage.py +0 -162
  413. osn_selenium/executors/trio_threads/cdp/system_info.py +0 -43
  414. osn_selenium/executors/trio_threads/cdp/target.py +0 -156
  415. osn_selenium/executors/trio_threads/cdp/tethering.py +0 -34
  416. osn_selenium/executors/trio_threads/cdp/tracing.py +0 -71
  417. osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -37
  418. osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -95
  419. osn_selenium/executors/unified/cdp/accessibility.py +0 -81
  420. osn_selenium/executors/unified/cdp/animation.py +0 -50
  421. osn_selenium/executors/unified/cdp/audits.py +0 -45
  422. osn_selenium/executors/unified/cdp/autofill.py +0 -41
  423. osn_selenium/executors/unified/cdp/background_service.py +0 -24
  424. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -132
  425. osn_selenium/executors/unified/cdp/browser.py +0 -143
  426. osn_selenium/executors/unified/cdp/cache_storage.py +0 -69
  427. osn_selenium/executors/unified/cdp/cast.py +0 -32
  428. osn_selenium/executors/unified/cdp/console.py +0 -18
  429. osn_selenium/executors/unified/cdp/css.py +0 -237
  430. osn_selenium/executors/unified/cdp/debugger.py +0 -243
  431. osn_selenium/executors/unified/cdp/device_access.py +0 -21
  432. osn_selenium/executors/unified/cdp/device_orientation.py +0 -18
  433. osn_selenium/executors/unified/cdp/dom.py +0 -380
  434. osn_selenium/executors/unified/cdp/dom_debugger.py +0 -65
  435. osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -58
  436. osn_selenium/executors/unified/cdp/dom_storage.py +0 -38
  437. osn_selenium/executors/unified/cdp/emulation.py +0 -312
  438. osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -24
  439. osn_selenium/executors/unified/cdp/extensions.py +0 -45
  440. osn_selenium/executors/unified/cdp/fed_cm.py +0 -51
  441. osn_selenium/executors/unified/cdp/fetch.py +0 -111
  442. osn_selenium/executors/unified/cdp/file_system.py +0 -15
  443. osn_selenium/executors/unified/cdp/headless_experimental.py +0 -38
  444. osn_selenium/executors/unified/cdp/heap_profiler.py +0 -101
  445. osn_selenium/executors/unified/cdp/indexed_db.py +0 -157
  446. osn_selenium/executors/unified/cdp/input.py +0 -254
  447. osn_selenium/executors/unified/cdp/inspector.py +0 -15
  448. osn_selenium/executors/unified/cdp/io.py +0 -29
  449. osn_selenium/executors/unified/cdp/layer_tree.py +0 -71
  450. osn_selenium/executors/unified/cdp/log.py +0 -29
  451. osn_selenium/executors/unified/cdp/media.py +0 -15
  452. osn_selenium/executors/unified/cdp/memory.py +0 -59
  453. osn_selenium/executors/unified/cdp/network.py +0 -323
  454. osn_selenium/executors/unified/cdp/overlay.py +0 -209
  455. osn_selenium/executors/unified/cdp/page.py +0 -410
  456. osn_selenium/executors/unified/cdp/performance.py +0 -27
  457. osn_selenium/executors/unified/cdp/performance_timeline.py +0 -17
  458. osn_selenium/executors/unified/cdp/preload.py +0 -15
  459. osn_selenium/executors/unified/cdp/profiler.py +0 -55
  460. osn_selenium/executors/unified/cdp/pwa.py +0 -55
  461. osn_selenium/executors/unified/cdp/runtime.py +0 -245
  462. osn_selenium/executors/unified/cdp/schema.py +0 -17
  463. osn_selenium/executors/unified/cdp/security.py +0 -27
  464. osn_selenium/executors/unified/cdp/service_worker.py +0 -62
  465. osn_selenium/executors/unified/cdp/storage.py +0 -178
  466. osn_selenium/executors/unified/cdp/system_info.py +0 -24
  467. osn_selenium/executors/unified/cdp/target.py +0 -165
  468. osn_selenium/executors/unified/cdp/tethering.py +0 -15
  469. osn_selenium/executors/unified/cdp/tracing.py +0 -62
  470. osn_selenium/executors/unified/cdp/web_audio.py +0 -18
  471. osn_selenium/executors/unified/cdp/web_authn.py +0 -103
  472. osn_selenium-1.0.0.dist-info/RECORD +0 -608
  473. /osn_selenium/{dev_tools/_exception_helpers.py → _exception_helpers.py} +0 -0
  474. /osn_selenium/executors/{unified/cdp → trio_bidi}/__init__.py +0 -0
  475. {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,448 @@
1
+ import os
2
+ from typing import Any, Dict
3
+ from selenium.webdriver.remote.command import Command
4
+ from osn_selenium.trio_bidi.mapping._js_snippets import WEB_ELEMENT
5
+ from osn_selenium.trio_bidi._typehints import (
6
+ CURRENT_BROWSING_CONTEXT_TYPEHINT,
7
+ MAP_REQUEST_FUNCTION_TYPEHINT,
8
+ REQUEST_PARAMS_TYPEHINT
9
+ )
10
+ from osn_selenium.trio_bidi.mapping.request_functions._args_helpers import (
11
+ build_locate_nodes_request,
12
+ build_script_call_request,
13
+ get_web_element_argument
14
+ )
15
+
16
+
17
+ __all__ = ["MAPPED_REQUEST_WEB_ELEMENT_COMMANDS"]
18
+
19
+
20
+ def _map_send_keys_to_element_request(
21
+ params: REQUEST_PARAMS_TYPEHINT,
22
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
23
+ ) -> Dict[str, Any]:
24
+ """
25
+ Maps send keys to element, handling file uploads if needed.
26
+
27
+ Args:
28
+ params (REQUEST_PARAMS_TYPEHINT): Parameters containing 'text'.
29
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
30
+
31
+ Returns:
32
+ Dict[str, Any]: The BiDi request.
33
+ """
34
+
35
+ text_to_type = {"type": "string", "value": params.get("text", "")}
36
+ files = [line for line in text_to_type["value"].split("\n")]
37
+
38
+ if all(os.path.isfile(file) for file in files):
39
+ return {
40
+ "method": "input.setFiles",
41
+ "params": {
42
+ "context": context_id,
43
+ "element": get_web_element_argument(params),
44
+ "files": files,
45
+ }
46
+ }
47
+
48
+ return build_script_call_request(
49
+ context_id=context_id,
50
+ function=WEB_ELEMENT.SEND_KEYS_TO,
51
+ args=[get_web_element_argument(params=params), text_to_type],
52
+ ownership="none",
53
+ )
54
+
55
+
56
+ def _map_is_element_selected_request(
57
+ params: REQUEST_PARAMS_TYPEHINT,
58
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
59
+ ) -> Dict[str, Any]:
60
+ """
61
+ Maps is element selected via JS call.
62
+
63
+ Args:
64
+ params (REQUEST_PARAMS_TYPEHINT): Element parameters.
65
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
66
+
67
+ Returns:
68
+ Dict[str, Any]: The BiDi request.
69
+ """
70
+
71
+ return build_script_call_request(
72
+ context_id=context_id,
73
+ function=WEB_ELEMENT.IS_SELECTED,
74
+ args=[get_web_element_argument(params=params)],
75
+ ownership="none",
76
+ )
77
+
78
+
79
+ def _map_is_element_enabled_request(
80
+ params: REQUEST_PARAMS_TYPEHINT,
81
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
82
+ ) -> Dict[str, Any]:
83
+ """
84
+ Maps is element enabled via JS call.
85
+
86
+ Args:
87
+ params (REQUEST_PARAMS_TYPEHINT): Element parameters.
88
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
89
+
90
+ Returns:
91
+ Dict[str, Any]: The BiDi request.
92
+ """
93
+
94
+ return build_script_call_request(
95
+ context_id=context_id,
96
+ function=WEB_ELEMENT.IS_ENABLED,
97
+ args=[get_web_element_argument(params=params)],
98
+ ownership="none",
99
+ )
100
+
101
+
102
+ def _map_get_shadow_root_request(
103
+ params: REQUEST_PARAMS_TYPEHINT,
104
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
105
+ ) -> Dict[str, Any]:
106
+ """
107
+ Maps get shadow root via JS call with 'root' ownership.
108
+
109
+ Args:
110
+ params (REQUEST_PARAMS_TYPEHINT): Element parameters.
111
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
112
+
113
+ Returns:
114
+ Dict[str, Any]: The BiDi request.
115
+ """
116
+
117
+ return build_script_call_request(
118
+ context_id=context_id,
119
+ function=WEB_ELEMENT.GET_SHADOW_ROOT,
120
+ args=[get_web_element_argument(params=params)],
121
+ ownership="root",
122
+ )
123
+
124
+
125
+ def _map_get_element_text_request(
126
+ params: REQUEST_PARAMS_TYPEHINT,
127
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
128
+ ) -> Dict[str, Any]:
129
+ """
130
+ Maps get element text via JS call.
131
+
132
+ Args:
133
+ params (REQUEST_PARAMS_TYPEHINT): Element parameters.
134
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
135
+
136
+ Returns:
137
+ Dict[str, Any]: The BiDi request.
138
+ """
139
+
140
+ return build_script_call_request(
141
+ context_id=context_id,
142
+ function=WEB_ELEMENT.GET_TEXT,
143
+ args=[get_web_element_argument(params=params)],
144
+ ownership="none",
145
+ )
146
+
147
+
148
+ def _map_get_element_tag_name_request(
149
+ params: REQUEST_PARAMS_TYPEHINT,
150
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
151
+ ) -> Dict[str, Any]:
152
+ """
153
+ Maps get element tag name via JS call.
154
+
155
+ Args:
156
+ params (REQUEST_PARAMS_TYPEHINT): Element parameters.
157
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
158
+
159
+ Returns:
160
+ Dict[str, Any]: The BiDi request.
161
+ """
162
+
163
+ return build_script_call_request(
164
+ context_id=context_id,
165
+ function=WEB_ELEMENT.GET_TAG,
166
+ args=[get_web_element_argument(params=params)],
167
+ ownership="none",
168
+ )
169
+
170
+
171
+ def _map_get_element_rect_request(
172
+ params: REQUEST_PARAMS_TYPEHINT,
173
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
174
+ ) -> Dict[str, Any]:
175
+ """
176
+ Maps get element rect via JS call.
177
+
178
+ Args:
179
+ params (REQUEST_PARAMS_TYPEHINT): Element parameters.
180
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
181
+
182
+ Returns:
183
+ Dict[str, Any]: The BiDi request.
184
+ """
185
+
186
+ return build_script_call_request(
187
+ context_id=context_id,
188
+ function=WEB_ELEMENT.GET_RECT,
189
+ args=[get_web_element_argument(params=params)],
190
+ ownership="none",
191
+ )
192
+
193
+
194
+ def _map_get_element_property_request(
195
+ params: REQUEST_PARAMS_TYPEHINT,
196
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
197
+ ) -> Dict[str, Any]:
198
+ """
199
+ Maps get element property via JS call.
200
+
201
+ Args:
202
+ params (REQUEST_PARAMS_TYPEHINT): Element and property name.
203
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
204
+
205
+ Returns:
206
+ Dict[str, Any]: The BiDi request.
207
+ """
208
+
209
+ prop_name = {"type": "string", "value": params["name"]}
210
+
211
+ return build_script_call_request(
212
+ context_id=context_id,
213
+ function=WEB_ELEMENT.GET_PROPERTY,
214
+ args=[get_web_element_argument(params=params), prop_name],
215
+ ownership="none",
216
+ )
217
+
218
+
219
+ def _map_get_element_css_value_request(
220
+ params: REQUEST_PARAMS_TYPEHINT,
221
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
222
+ ) -> Dict[str, Any]:
223
+ """
224
+ Maps get computed CSS value via JS call.
225
+
226
+ Args:
227
+ params (REQUEST_PARAMS_TYPEHINT): Element and CSS property name.
228
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
229
+
230
+ Returns:
231
+ Dict[str, Any]: The BiDi request.
232
+ """
233
+
234
+ prop_name = {"type": "string", "value": params["propertyName"]}
235
+
236
+ return build_script_call_request(
237
+ context_id=context_id,
238
+ function=WEB_ELEMENT.GET_CSS,
239
+ args=[get_web_element_argument(params=params), prop_name],
240
+ ownership="none",
241
+ )
242
+
243
+
244
+ def _map_get_element_attribute_request(
245
+ params: REQUEST_PARAMS_TYPEHINT,
246
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
247
+ ) -> Dict[str, Any]:
248
+ """
249
+ Maps get attribute via JS call.
250
+
251
+ Args:
252
+ params (REQUEST_PARAMS_TYPEHINT): Element and attribute name.
253
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
254
+
255
+ Returns:
256
+ Dict[str, Any]: The BiDi request.
257
+ """
258
+
259
+ attr_name = {"type": "string", "value": params["name"]}
260
+
261
+ return build_script_call_request(
262
+ context_id=context_id,
263
+ function=WEB_ELEMENT.GET_ATTRIBUTE,
264
+ args=[get_web_element_argument(params=params), attr_name],
265
+ ownership="none",
266
+ )
267
+
268
+
269
+ def _map_get_element_aria_role_request(
270
+ params: REQUEST_PARAMS_TYPEHINT,
271
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
272
+ ) -> Dict[str, Any]:
273
+ """
274
+ Maps get ARIA role via JS call.
275
+
276
+ Args:
277
+ params (REQUEST_PARAMS_TYPEHINT): Element parameters.
278
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
279
+
280
+ Returns:
281
+ Dict[str, Any]: The BiDi request.
282
+ """
283
+
284
+ return build_script_call_request(
285
+ context_id=context_id,
286
+ function=WEB_ELEMENT.GET_ARIA_ROLE,
287
+ args=[get_web_element_argument(params=params)],
288
+ ownership="none",
289
+ )
290
+
291
+
292
+ def _map_get_element_aria_label_request(
293
+ params: REQUEST_PARAMS_TYPEHINT,
294
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
295
+ ) -> Dict[str, Any]:
296
+ """
297
+ Maps get ARIA label via JS call.
298
+
299
+ Args:
300
+ params (REQUEST_PARAMS_TYPEHINT): Element parameters.
301
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
302
+
303
+ Returns:
304
+ Dict[str, Any]: The BiDi request.
305
+ """
306
+
307
+ return build_script_call_request(
308
+ context_id=context_id,
309
+ function=WEB_ELEMENT.GET_ARIA_LABEL,
310
+ args=[get_web_element_argument(params=params)],
311
+ ownership="none",
312
+ )
313
+
314
+
315
+ def _map_find_child_elements_request(
316
+ params: REQUEST_PARAMS_TYPEHINT,
317
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
318
+ ) -> Dict[str, Any]:
319
+ """
320
+ Maps find child elements from a parent element.
321
+
322
+ Args:
323
+ params (REQUEST_PARAMS_TYPEHINT): Strategy, value and parent element ID.
324
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
325
+
326
+ Returns:
327
+ Dict[str, Any]: The BiDi request.
328
+ """
329
+
330
+ return build_locate_nodes_request(
331
+ context_id=context_id,
332
+ params=params,
333
+ start_nodes=[get_web_element_argument(params=params)]
334
+ )
335
+
336
+
337
+ def _map_find_child_element_request(
338
+ params: REQUEST_PARAMS_TYPEHINT,
339
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
340
+ ) -> Dict[str, Any]:
341
+ """
342
+ Maps find child element from a parent element (max 1).
343
+
344
+ Args:
345
+ params (REQUEST_PARAMS_TYPEHINT): Strategy, value and parent element ID.
346
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
347
+
348
+ Returns:
349
+ Dict[str, Any]: The BiDi request.
350
+ """
351
+
352
+ return build_locate_nodes_request(
353
+ context_id=context_id,
354
+ params=params,
355
+ max_nodes=1,
356
+ start_nodes=[get_web_element_argument(params=params)]
357
+ )
358
+
359
+
360
+ def _map_element_screenshot_request(
361
+ params: REQUEST_PARAMS_TYPEHINT,
362
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
363
+ ) -> Dict[str, Any]:
364
+ """
365
+ Maps element-specific screenshot command.
366
+
367
+ Args:
368
+ params (REQUEST_PARAMS_TYPEHINT): Element ID.
369
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
370
+
371
+ Returns:
372
+ Dict[str, Any]: The BiDi request.
373
+ """
374
+
375
+ return {
376
+ "method": "browsingContext.captureScreenshot",
377
+ "params": {
378
+ "context": context_id,
379
+ "clip": {"type": "element", "element": get_web_element_argument(params=params)}
380
+ }
381
+ }
382
+
383
+
384
+ def _map_click_element_request(
385
+ params: REQUEST_PARAMS_TYPEHINT,
386
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
387
+ ) -> Dict[str, Any]:
388
+ """
389
+ Maps element click via JS call.
390
+
391
+ Args:
392
+ params (REQUEST_PARAMS_TYPEHINT): Element ID.
393
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
394
+
395
+ Returns:
396
+ Dict[str, Any]: The BiDi request.
397
+ """
398
+
399
+ return build_script_call_request(
400
+ context_id=context_id,
401
+ function=WEB_ELEMENT.CLICK,
402
+ args=[get_web_element_argument(params=params)],
403
+ ownership="none",
404
+ )
405
+
406
+
407
+ def _map_clear_element_request(
408
+ params: REQUEST_PARAMS_TYPEHINT,
409
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
410
+ ) -> Dict[str, Any]:
411
+ """
412
+ Maps element clear via JS call.
413
+
414
+ Args:
415
+ params (REQUEST_PARAMS_TYPEHINT): Element ID.
416
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
417
+
418
+ Returns:
419
+ Dict[str, Any]: The BiDi request.
420
+ """
421
+
422
+ return build_script_call_request(
423
+ context_id=context_id,
424
+ function=WEB_ELEMENT.CLEAR,
425
+ args=[get_web_element_argument(params=params)],
426
+ ownership="none",
427
+ )
428
+
429
+
430
+ MAPPED_REQUEST_WEB_ELEMENT_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
431
+ Command.GET_ELEMENT_TAG_NAME: _map_get_element_tag_name_request,
432
+ Command.GET_ELEMENT_TEXT: _map_get_element_text_request,
433
+ Command.CLICK_ELEMENT: _map_click_element_request,
434
+ Command.CLEAR_ELEMENT: _map_clear_element_request,
435
+ Command.GET_ELEMENT_PROPERTY: _map_get_element_property_request,
436
+ Command.GET_ELEMENT_ATTRIBUTE: _map_get_element_attribute_request,
437
+ Command.IS_ELEMENT_SELECTED: _map_is_element_selected_request,
438
+ Command.IS_ELEMENT_ENABLED: _map_is_element_enabled_request,
439
+ Command.SEND_KEYS_TO_ELEMENT: _map_send_keys_to_element_request,
440
+ Command.GET_SHADOW_ROOT: _map_get_shadow_root_request,
441
+ Command.GET_ELEMENT_RECT: _map_get_element_rect_request,
442
+ Command.GET_ELEMENT_VALUE_OF_CSS_PROPERTY: _map_get_element_css_value_request,
443
+ Command.GET_ELEMENT_ARIA_ROLE: _map_get_element_aria_role_request,
444
+ Command.GET_ELEMENT_ARIA_LABEL: _map_get_element_aria_label_request,
445
+ Command.ELEMENT_SCREENSHOT: _map_element_screenshot_request,
446
+ Command.FIND_CHILD_ELEMENT: _map_find_child_element_request,
447
+ Command.FIND_CHILD_ELEMENTS: _map_find_child_elements_request,
448
+ }
@@ -0,0 +1,125 @@
1
+ from typing import Any, Dict
2
+ from selenium.webdriver.remote.command import Command
3
+ from osn_selenium.trio_bidi.mapping._js_snippets import WINDOW
4
+ from osn_selenium.trio_bidi.mapping.request_functions._args_helpers import (
5
+ build_script_evaluate_request
6
+ )
7
+ from osn_selenium.trio_bidi._typehints import (
8
+ CURRENT_BROWSING_CONTEXT_TYPEHINT,
9
+ MAP_REQUEST_FUNCTION_TYPEHINT,
10
+ REQUEST_PARAMS_TYPEHINT
11
+ )
12
+
13
+
14
+ __all__ = ["MAPPED_REQUEST_WINDOW_COMMANDS"]
15
+
16
+
17
+ def _map_w3c_get_window_handles_request(
18
+ params: REQUEST_PARAMS_TYPEHINT,
19
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
20
+ ) -> Dict[str, Any]:
21
+ """
22
+ Maps command to get all window handles.
23
+
24
+ Args:
25
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
26
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
27
+
28
+ Returns:
29
+ Dict[str, Any]: The BiDi request.
30
+ """
31
+
32
+ return {"method": "browsingContext.getTree", "params": {}}
33
+
34
+
35
+ def _map_w3c_get_current_window_handle_request(
36
+ params: REQUEST_PARAMS_TYPEHINT,
37
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
38
+ ) -> Dict[str, Any]:
39
+ """
40
+ Maps command to get current window handle.
41
+
42
+ Args:
43
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
44
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
45
+
46
+ Returns:
47
+ Dict[str, Any]: The BiDi request.
48
+ """
49
+
50
+ return {
51
+ "method": "browsingContext.getTree",
52
+ "params": {"root": context_id, "maxDepth": 0}
53
+ }
54
+
55
+
56
+ def _map_set_screen_orientation_request(
57
+ params: REQUEST_PARAMS_TYPEHINT,
58
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
59
+ ) -> Dict[str, Any]:
60
+ """
61
+ Maps set screen orientation via JS evaluation.
62
+
63
+ Args:
64
+ params (REQUEST_PARAMS_TYPEHINT): Parameters containing 'orientation'.
65
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
66
+
67
+ Returns:
68
+ Dict[str, Any]: The BiDi request.
69
+ """
70
+
71
+ orientation = params.get("orientation").lower()
72
+
73
+ return build_script_evaluate_request(
74
+ context_id=context_id,
75
+ expression=WINDOW.SET_ORIENTATION.format(orientation=orientation),
76
+ )
77
+
78
+
79
+ def _map_get_screen_orientation_request(
80
+ params: REQUEST_PARAMS_TYPEHINT,
81
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
82
+ ) -> Dict[str, Any]:
83
+ """
84
+ Maps get screen orientation via JS evaluation.
85
+
86
+ Args:
87
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
88
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
89
+
90
+ Returns:
91
+ Dict[str, Any]: The BiDi request.
92
+ """
93
+
94
+ return build_script_evaluate_request(context_id=context_id, expression=WINDOW.GET_ORIENTATION)
95
+
96
+
97
+ def _map_close_request(
98
+ params: REQUEST_PARAMS_TYPEHINT,
99
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
100
+ ) -> Dict[str, Any]:
101
+ """
102
+ Maps window close command.
103
+
104
+ Args:
105
+ params (REQUEST_PARAMS_TYPEHINT): Parameters containing 'handle'.
106
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
107
+
108
+ Returns:
109
+ Dict[str, Any]: The BiDi request.
110
+ """
111
+
112
+ target_context = params.get("handle") or context_id
113
+
114
+ return {"method": "browsingContext.close", "params": {"context": target_context}}
115
+
116
+
117
+ MAPPED_REQUEST_WINDOW_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
118
+ Command.W3C_GET_WINDOW_HANDLES: _map_w3c_get_window_handles_request,
119
+ Command.W3C_GET_CURRENT_WINDOW_HANDLE: _map_w3c_get_current_window_handle_request,
120
+ Command.CLOSE: _map_close_request,
121
+ Command.GET_SCREEN_ORIENTATION: _map_get_screen_orientation_request,
122
+ Command.SET_SCREEN_ORIENTATION: _map_set_screen_orientation_request,
123
+ }
124
+
125
+ # TODO create mappings for Command.GET_WINDOW_RECT, Command.SET_WINDOW_RECT, Command.W3C_MAXIMIZE_WINDOW, Command.MINIMIZE_WINDOW, Command.FULLSCREEN_WINDOW
@@ -0,0 +1,86 @@
1
+ from typing import Any, Dict
2
+ from osn_selenium.exceptions.bidi_bridge import (
3
+ CommandNotMappedToBiDiError
4
+ )
5
+ from osn_selenium.trio_bidi.mapping.response_functions._cdp import (
6
+ MAPPED_RESPONSE_CDP_COMMANDS
7
+ )
8
+ from osn_selenium.trio_bidi.mapping.response_functions._file import (
9
+ MAPPED_RESPONSE_FILE_COMMANDS
10
+ )
11
+ from osn_selenium.trio_bidi.mapping.response_functions._alert import (
12
+ MAPPED_RESPONSE_ALERT_COMMANDS
13
+ )
14
+ from osn_selenium.trio_bidi.mapping.response_functions._script import (
15
+ MAPPED_RESPONSE_SCRIPT_COMMANDS
16
+ )
17
+ from osn_selenium.trio_bidi.mapping.response_functions._window import (
18
+ MAPPED_RESPONSE_WINDOW_COMMANDS
19
+ )
20
+ from osn_selenium.trio_bidi._typehints import (
21
+ MAP_RESPONSE_FUNCTION_TYPEHINT,
22
+ REQUEST_PARAMS_TYPEHINT
23
+ )
24
+ from osn_selenium.trio_bidi.mapping.response_functions._capture import (
25
+ MAPPED_RESPONSE_CAPTURE_COMMANDS
26
+ )
27
+ from osn_selenium.trio_bidi.mapping.response_functions._element import (
28
+ MAPPED_RESPONSE_ELEMENT_COMMANDS
29
+ )
30
+ from osn_selenium.trio_bidi.mapping.response_functions._switch_to import (
31
+ MAPPED_RESPONSE_SWITCH_TO_COMMANDS
32
+ )
33
+ from osn_selenium.trio_bidi.mapping.response_functions._navigation import (
34
+ MAPPED_RESPONSE_NAVIGATION_COMMANDS
35
+ )
36
+ from osn_selenium.trio_bidi.mapping.response_functions._web_element import (
37
+ MAPPED_RESPONSE_WEB_ELEMENT_COMMANDS
38
+ )
39
+ from osn_selenium.trio_bidi.mapping.response_functions._shadow_root import (
40
+ MAPPED_RESPONSE_SHADOW_ROOT_COMMANDS
41
+ )
42
+
43
+
44
+ __all__ = ["map_response"]
45
+
46
+ _MAPPED_RESPONSE_COMMANDS: Dict[str, MAP_RESPONSE_FUNCTION_TYPEHINT] = {
47
+ **MAPPED_RESPONSE_ALERT_COMMANDS,
48
+ **MAPPED_RESPONSE_CAPTURE_COMMANDS,
49
+ **MAPPED_RESPONSE_CDP_COMMANDS,
50
+ **MAPPED_RESPONSE_ELEMENT_COMMANDS,
51
+ **MAPPED_RESPONSE_FILE_COMMANDS,
52
+ **MAPPED_RESPONSE_NAVIGATION_COMMANDS,
53
+ **MAPPED_RESPONSE_SCRIPT_COMMANDS,
54
+ **MAPPED_RESPONSE_SHADOW_ROOT_COMMANDS,
55
+ **MAPPED_RESPONSE_SWITCH_TO_COMMANDS,
56
+ **MAPPED_RESPONSE_WEB_ELEMENT_COMMANDS,
57
+ **MAPPED_RESPONSE_WINDOW_COMMANDS,
58
+ }
59
+
60
+
61
+ def map_response(
62
+ command: str,
63
+ bidi_result: Dict[str, Any],
64
+ request_params: REQUEST_PARAMS_TYPEHINT
65
+ ) -> Dict[str, Any]:
66
+ """
67
+ Maps a BiDi response result back to the W3C WebDriver response format.
68
+
69
+ Args:
70
+ command (str): The original W3C command name.
71
+ bidi_result (Dict[str, Any]): The result dictionary received from BiDi.
72
+ request_params (REQUEST_PARAMS_TYPEHINT): The parameters sent with the original request.
73
+
74
+ Returns:
75
+ Dict[str, Any]: The formatted W3C response dictionary.
76
+
77
+ Raises:
78
+ CommandNotMappedToBiDiError: If the command does not have a registered response mapper.
79
+ """
80
+
81
+ function = _MAPPED_RESPONSE_COMMANDS.get(command, None)
82
+
83
+ if function is not None:
84
+ return function(bidi_result, request_params)
85
+
86
+ raise CommandNotMappedToBiDiError(command=command)