osn-selenium 1.1.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 (418) hide show
  1. osn_selenium/_decorators.py +57 -0
  2. osn_selenium/_trio_threads_helpers.py +157 -0
  3. osn_selenium/_typehints.py +1 -1
  4. osn_selenium/abstract/webdriver/blink/base.py +14 -0
  5. osn_selenium/abstract/webdriver/blink/lifecycle.py +8 -8
  6. osn_selenium/abstract/webdriver/core/base.py +0 -14
  7. osn_selenium/abstract/webdriver/core/capture.py +4 -3
  8. osn_selenium/abstract/webdriver/core/lifecycle.py +8 -8
  9. osn_selenium/abstract/webdriver/core/script.py +5 -4
  10. osn_selenium/abstract/webdriver/core/window.py +11 -11
  11. osn_selenium/dev_tools/_decorators.py +1 -42
  12. osn_selenium/dev_tools/_functions.py +2 -4
  13. osn_selenium/dev_tools/domains/__init__.py +1 -1
  14. osn_selenium/dev_tools/domains/fetch.py +5 -7
  15. osn_selenium/dev_tools/domains_default/fetch.py +1 -1
  16. osn_selenium/dev_tools/logger/main.py +9 -9
  17. osn_selenium/dev_tools/logger/target.py +7 -7
  18. osn_selenium/dev_tools/manager/base.py +10 -19
  19. osn_selenium/dev_tools/manager/lifecycle.py +83 -74
  20. osn_selenium/dev_tools/manager/logging.py +1 -1
  21. osn_selenium/dev_tools/manager/targets.py +13 -5
  22. osn_selenium/dev_tools/settings.py +4 -4
  23. osn_selenium/dev_tools/target/base.py +18 -11
  24. osn_selenium/dev_tools/target/discovery.py +1 -1
  25. osn_selenium/dev_tools/target/events.py +2 -2
  26. osn_selenium/dev_tools/target/fingerprint.py +1 -1
  27. osn_selenium/dev_tools/target/lifecycle.py +103 -43
  28. osn_selenium/dev_tools/target/logging.py +1 -1
  29. osn_selenium/exceptions/__init__.py +0 -1
  30. osn_selenium/exceptions/base.py +28 -1
  31. osn_selenium/exceptions/bidi_bridge.py +59 -0
  32. osn_selenium/exceptions/configuration.py +1 -8
  33. osn_selenium/exceptions/dependencies.py +2 -2
  34. osn_selenium/exceptions/devtools.py +9 -39
  35. osn_selenium/exceptions/experimental.py +26 -0
  36. osn_selenium/exceptions/flags.py +0 -2
  37. osn_selenium/exceptions/instance.py +1 -9
  38. osn_selenium/exceptions/javascript.py +0 -2
  39. osn_selenium/exceptions/logic.py +0 -2
  40. osn_selenium/exceptions/path.py +1 -9
  41. osn_selenium/exceptions/platform.py +0 -2
  42. osn_selenium/exceptions/protocol.py +0 -3
  43. osn_selenium/exceptions/webdriver.py +1 -7
  44. osn_selenium/exceptions/window.py +1 -8
  45. osn_selenium/executors/sync/cdp.py +0 -5
  46. osn_selenium/executors/trio_bidi/cdp.py +101 -0
  47. osn_selenium/executors/trio_bidi/javascript.py +101 -0
  48. osn_selenium/executors/trio_threads/cdp.py +0 -5
  49. osn_selenium/flags/base.py +6 -4
  50. osn_selenium/flags/blink.py +2 -2
  51. osn_selenium/flags/chrome.py +6 -6
  52. osn_selenium/flags/edge.py +6 -6
  53. osn_selenium/instances/convert.py +44 -3
  54. osn_selenium/instances/protocols.py +47 -1
  55. osn_selenium/instances/sync/browsing_context.py +2 -2
  56. osn_selenium/instances/sync/script.py +7 -2
  57. osn_selenium/instances/sync/web_element.py +1 -1
  58. osn_selenium/instances/trio_bidi/__init__.py +1 -0
  59. osn_selenium/instances/trio_bidi/shadow_root.py +180 -0
  60. osn_selenium/instances/trio_bidi/switch_to.py +143 -0
  61. osn_selenium/instances/trio_bidi/web_driver_wait.py +124 -0
  62. osn_selenium/instances/trio_bidi/web_element.py +239 -0
  63. osn_selenium/instances/trio_threads/browsing_context.py +2 -2
  64. osn_selenium/instances/trio_threads/fedcm.py +1 -1
  65. osn_selenium/instances/trio_threads/network.py +1 -1
  66. osn_selenium/instances/trio_threads/script.py +7 -2
  67. osn_selenium/instances/trio_threads/web_extension.py +1 -1
  68. osn_selenium/instances/unified/browsing_context.py +2 -2
  69. osn_selenium/instances/unified/script.py +2 -2
  70. osn_selenium/instances/unified/web_element.py +3 -5
  71. osn_selenium/javascript/fingerprint/__init__.py +2 -1
  72. osn_selenium/trio_bidi/__init__.py +1 -0
  73. osn_selenium/trio_bidi/_context_vars.py +12 -0
  74. osn_selenium/trio_bidi/_error_mappings.py +123 -0
  75. osn_selenium/trio_bidi/_error_redirects.py +194 -0
  76. osn_selenium/trio_bidi/_file_functions.py +28 -0
  77. osn_selenium/trio_bidi/_internal_mappings.py +10 -0
  78. osn_selenium/trio_bidi/_models.py +199 -0
  79. osn_selenium/trio_bidi/_typehints.py +20 -0
  80. osn_selenium/trio_bidi/connection_pool.py +587 -0
  81. osn_selenium/trio_bidi/mapping/__init__.py +1 -0
  82. osn_selenium/trio_bidi/mapping/_constants.py +14 -0
  83. osn_selenium/trio_bidi/mapping/_js_snippets.py +285 -0
  84. osn_selenium/trio_bidi/mapping/_utils.py +4 -0
  85. osn_selenium/trio_bidi/mapping/request_functions/__init__.py +87 -0
  86. osn_selenium/trio_bidi/mapping/request_functions/_alert.py +102 -0
  87. osn_selenium/trio_bidi/mapping/request_functions/_args_helpers.py +225 -0
  88. osn_selenium/trio_bidi/mapping/request_functions/_capture.py +71 -0
  89. osn_selenium/trio_bidi/mapping/request_functions/_cdp.py +40 -0
  90. osn_selenium/trio_bidi/mapping/request_functions/_element.py +55 -0
  91. osn_selenium/trio_bidi/mapping/request_functions/_file.py +32 -0
  92. osn_selenium/trio_bidi/mapping/request_functions/_navigation.py +147 -0
  93. osn_selenium/trio_bidi/mapping/request_functions/_script.py +85 -0
  94. osn_selenium/trio_bidi/mapping/request_functions/_shadow_root.py +65 -0
  95. osn_selenium/trio_bidi/mapping/request_functions/_switch_to.py +59 -0
  96. osn_selenium/trio_bidi/mapping/request_functions/_web_element.py +448 -0
  97. osn_selenium/trio_bidi/mapping/request_functions/_window.py +125 -0
  98. osn_selenium/trio_bidi/mapping/response_functions/__init__.py +86 -0
  99. osn_selenium/trio_bidi/mapping/response_functions/_alert.py +81 -0
  100. osn_selenium/trio_bidi/mapping/response_functions/_args_helpers.py +183 -0
  101. osn_selenium/trio_bidi/mapping/response_functions/_args_validators.py +153 -0
  102. osn_selenium/trio_bidi/mapping/response_functions/_capture.py +71 -0
  103. osn_selenium/trio_bidi/mapping/response_functions/_cdp.py +26 -0
  104. osn_selenium/trio_bidi/mapping/response_functions/_element.py +58 -0
  105. osn_selenium/trio_bidi/mapping/response_functions/_file.py +30 -0
  106. osn_selenium/trio_bidi/mapping/response_functions/_navigation.py +120 -0
  107. osn_selenium/trio_bidi/mapping/response_functions/_script.py +57 -0
  108. osn_selenium/trio_bidi/mapping/response_functions/_shadow_root.py +58 -0
  109. osn_selenium/trio_bidi/mapping/response_functions/_switch_to.py +57 -0
  110. osn_selenium/trio_bidi/mapping/response_functions/_web_element.py +368 -0
  111. osn_selenium/trio_bidi/mapping/response_functions/_window.py +119 -0
  112. osn_selenium/trio_bidi/mixin.py +186 -0
  113. osn_selenium/trio_bidi/remote_connection.py +164 -0
  114. osn_selenium/trio_threads_mixin.py +22 -68
  115. osn_selenium/webdrivers/_args_helpers.py +118 -5
  116. osn_selenium/webdrivers/_typehints.py +9 -3
  117. osn_selenium/webdrivers/protocols.py +81 -1
  118. osn_selenium/webdrivers/sync/blink/base.py +10 -0
  119. osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
  120. osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
  121. osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
  122. osn_selenium/webdrivers/sync/core/base.py +3 -11
  123. osn_selenium/webdrivers/sync/core/capture.py +3 -2
  124. osn_selenium/webdrivers/sync/core/file.py +3 -2
  125. osn_selenium/webdrivers/sync/core/lifecycle.py +44 -10
  126. osn_selenium/webdrivers/sync/core/script.py +3 -2
  127. osn_selenium/webdrivers/sync/core/window.py +3 -3
  128. osn_selenium/webdrivers/sync/edge/lifecycle.py +23 -5
  129. osn_selenium/webdrivers/sync/edge/settings.py +6 -1
  130. osn_selenium/webdrivers/sync/yandex/lifecycle.py +23 -5
  131. osn_selenium/webdrivers/sync/yandex/settings.py +6 -1
  132. osn_selenium/webdrivers/trio_bidi/__init__.py +1 -0
  133. osn_selenium/webdrivers/trio_bidi/blink/__init__.py +132 -0
  134. osn_selenium/webdrivers/trio_bidi/blink/base.py +167 -0
  135. osn_selenium/webdrivers/trio_bidi/blink/lifecycle.py +89 -0
  136. osn_selenium/webdrivers/trio_bidi/blink/settings.py +63 -0
  137. osn_selenium/webdrivers/trio_bidi/chrome/__init__.py +114 -0
  138. osn_selenium/webdrivers/trio_bidi/chrome/base.py +127 -0
  139. osn_selenium/webdrivers/trio_bidi/chrome/lifecycle.py +85 -0
  140. osn_selenium/webdrivers/trio_bidi/chrome/settings.py +63 -0
  141. osn_selenium/webdrivers/trio_bidi/core/__init__.py +95 -0
  142. osn_selenium/webdrivers/trio_bidi/core/actions.py +70 -0
  143. osn_selenium/webdrivers/trio_bidi/core/base.py +200 -0
  144. osn_selenium/webdrivers/trio_bidi/core/capture.py +39 -0
  145. osn_selenium/webdrivers/trio_bidi/core/devtools.py +49 -0
  146. osn_selenium/webdrivers/trio_bidi/core/element.py +64 -0
  147. osn_selenium/webdrivers/trio_bidi/core/lifecycle.py +135 -0
  148. osn_selenium/webdrivers/trio_bidi/core/navigation.py +37 -0
  149. osn_selenium/webdrivers/trio_bidi/core/script.py +56 -0
  150. osn_selenium/webdrivers/trio_bidi/core/settings.py +36 -0
  151. osn_selenium/webdrivers/trio_bidi/core/window.py +134 -0
  152. osn_selenium/webdrivers/trio_bidi/edge/__init__.py +114 -0
  153. osn_selenium/webdrivers/trio_bidi/edge/base.py +123 -0
  154. osn_selenium/webdrivers/trio_bidi/edge/lifecycle.py +85 -0
  155. osn_selenium/webdrivers/trio_bidi/edge/settings.py +63 -0
  156. osn_selenium/webdrivers/trio_bidi/yandex/__init__.py +114 -0
  157. osn_selenium/webdrivers/trio_bidi/yandex/base.py +120 -0
  158. osn_selenium/webdrivers/trio_bidi/yandex/lifecycle.py +85 -0
  159. osn_selenium/webdrivers/trio_bidi/yandex/settings.py +63 -0
  160. osn_selenium/webdrivers/trio_threads/blink/__init__.py +7 -1
  161. osn_selenium/webdrivers/trio_threads/blink/base.py +14 -0
  162. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
  163. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +23 -5
  164. osn_selenium/webdrivers/trio_threads/chrome/settings.py +1 -1
  165. osn_selenium/webdrivers/trio_threads/core/__init__.py +0 -10
  166. osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
  167. osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
  168. osn_selenium/webdrivers/trio_threads/core/base.py +4 -16
  169. osn_selenium/webdrivers/trio_threads/core/capture.py +3 -2
  170. osn_selenium/webdrivers/trio_threads/core/file.py +3 -2
  171. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +44 -10
  172. osn_selenium/webdrivers/trio_threads/core/script.py +3 -2
  173. osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
  174. osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
  175. osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
  176. osn_selenium/webdrivers/trio_threads/core/window.py +4 -4
  177. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +23 -5
  178. osn_selenium/webdrivers/trio_threads/edge/settings.py +1 -1
  179. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +23 -5
  180. osn_selenium/webdrivers/trio_threads/yandex/settings.py +1 -1
  181. osn_selenium/webdrivers/unified/blink/base.py +5 -1
  182. osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
  183. osn_selenium/webdrivers/unified/chrome/base.py +5 -1
  184. osn_selenium/webdrivers/unified/core/auth.py +4 -2
  185. osn_selenium/webdrivers/unified/core/base.py +16 -10
  186. osn_selenium/webdrivers/unified/core/capture.py +3 -2
  187. osn_selenium/webdrivers/unified/core/components.py +12 -7
  188. osn_selenium/webdrivers/unified/core/devtools.py +2 -1
  189. osn_selenium/webdrivers/unified/core/file.py +3 -2
  190. osn_selenium/webdrivers/unified/core/lifecycle.py +5 -3
  191. osn_selenium/webdrivers/unified/core/script.py +5 -3
  192. osn_selenium/webdrivers/unified/core/storage.py +2 -1
  193. osn_selenium/webdrivers/unified/core/window.py +9 -8
  194. osn_selenium/webdrivers/unified/edge/base.py +5 -1
  195. osn_selenium/webdrivers/unified/yandex/base.py +5 -1
  196. {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/METADATA +3 -2
  197. osn_selenium-1.2.0.dist-info/RECORD +480 -0
  198. osn_selenium/abstract/executors/cdp/__init__.py +0 -435
  199. osn_selenium/abstract/executors/cdp/accessibility.py +0 -62
  200. osn_selenium/abstract/executors/cdp/animation.py +0 -47
  201. osn_selenium/abstract/executors/cdp/audits.py +0 -39
  202. osn_selenium/abstract/executors/cdp/autofill.py +0 -34
  203. osn_selenium/abstract/executors/cdp/background_service.py +0 -22
  204. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -95
  205. osn_selenium/abstract/executors/cdp/browser.py +0 -122
  206. osn_selenium/abstract/executors/cdp/cache_storage.py +0 -49
  207. osn_selenium/abstract/executors/cdp/cast.py +0 -31
  208. osn_selenium/abstract/executors/cdp/console.py +0 -18
  209. osn_selenium/abstract/executors/cdp/css.py +0 -197
  210. osn_selenium/abstract/executors/cdp/debugger.py +0 -198
  211. osn_selenium/abstract/executors/cdp/device_access.py +0 -22
  212. osn_selenium/abstract/executors/cdp/device_orientation.py +0 -14
  213. osn_selenium/abstract/executors/cdp/dom.py +0 -305
  214. osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -57
  215. osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -42
  216. osn_selenium/abstract/executors/cdp/dom_storage.py +0 -31
  217. osn_selenium/abstract/executors/cdp/emulation.py +0 -259
  218. osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -18
  219. osn_selenium/abstract/executors/cdp/extensions.py +0 -31
  220. osn_selenium/abstract/executors/cdp/fed_cm.py +0 -35
  221. osn_selenium/abstract/executors/cdp/fetch.py +0 -76
  222. osn_selenium/abstract/executors/cdp/file_system.py +0 -11
  223. osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -30
  224. osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -73
  225. osn_selenium/abstract/executors/cdp/indexed_db.py +0 -99
  226. osn_selenium/abstract/executors/cdp/input.py +0 -158
  227. osn_selenium/abstract/executors/cdp/inspector.py +0 -14
  228. osn_selenium/abstract/executors/cdp/io.py +0 -24
  229. osn_selenium/abstract/executors/cdp/layer_tree.py +0 -61
  230. osn_selenium/abstract/executors/cdp/log.py +0 -27
  231. osn_selenium/abstract/executors/cdp/media.py +0 -14
  232. osn_selenium/abstract/executors/cdp/memory.py +0 -61
  233. osn_selenium/abstract/executors/cdp/network.py +0 -252
  234. osn_selenium/abstract/executors/cdp/overlay.py +0 -166
  235. osn_selenium/abstract/executors/cdp/page.py +0 -347
  236. osn_selenium/abstract/executors/cdp/performance.py +0 -28
  237. osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -11
  238. osn_selenium/abstract/executors/cdp/preload.py +0 -14
  239. osn_selenium/abstract/executors/cdp/profiler.py +0 -54
  240. osn_selenium/abstract/executors/cdp/pwa.py +0 -46
  241. osn_selenium/abstract/executors/cdp/runtime.py +0 -176
  242. osn_selenium/abstract/executors/cdp/schema.py +0 -11
  243. osn_selenium/abstract/executors/cdp/security.py +0 -26
  244. osn_selenium/abstract/executors/cdp/service_worker.py +0 -54
  245. osn_selenium/abstract/executors/cdp/storage.py +0 -175
  246. osn_selenium/abstract/executors/cdp/system_info.py +0 -24
  247. osn_selenium/abstract/executors/cdp/target.py +0 -125
  248. osn_selenium/abstract/executors/cdp/tethering.py +0 -14
  249. osn_selenium/abstract/executors/cdp/tracing.py +0 -48
  250. osn_selenium/abstract/executors/cdp/web_audio.py +0 -19
  251. osn_selenium/abstract/executors/cdp/web_authn.py +0 -76
  252. osn_selenium/base_mixin.py +0 -122
  253. osn_selenium/executors/sync/cdp/__init__.py +0 -550
  254. osn_selenium/executors/sync/cdp/accessibility.py +0 -74
  255. osn_selenium/executors/sync/cdp/animation.py +0 -50
  256. osn_selenium/executors/sync/cdp/audits.py +0 -48
  257. osn_selenium/executors/sync/cdp/autofill.py +0 -39
  258. osn_selenium/executors/sync/cdp/background_service.py +0 -30
  259. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -101
  260. osn_selenium/executors/sync/cdp/browser.py +0 -131
  261. osn_selenium/executors/sync/cdp/cache_storage.py +0 -66
  262. osn_selenium/executors/sync/cdp/cast.py +0 -38
  263. osn_selenium/executors/sync/cdp/console.py +0 -24
  264. osn_selenium/executors/sync/cdp/css.py +0 -187
  265. osn_selenium/executors/sync/cdp/debugger.py +0 -206
  266. osn_selenium/executors/sync/cdp/device_access.py +0 -27
  267. osn_selenium/executors/sync/cdp/device_orientation.py +0 -24
  268. osn_selenium/executors/sync/cdp/dom.py +0 -310
  269. osn_selenium/executors/sync/cdp/dom_debugger.py +0 -56
  270. osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -58
  271. osn_selenium/executors/sync/cdp/dom_storage.py +0 -38
  272. osn_selenium/executors/sync/cdp/emulation.py +0 -270
  273. osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -27
  274. osn_selenium/executors/sync/cdp/extensions.py +0 -39
  275. osn_selenium/executors/sync/cdp/fed_cm.py +0 -45
  276. osn_selenium/executors/sync/cdp/fetch.py +0 -96
  277. osn_selenium/executors/sync/cdp/file_system.py +0 -18
  278. osn_selenium/executors/sync/cdp/headless_experimental.py +0 -44
  279. osn_selenium/executors/sync/cdp/heap_profiler.py +0 -89
  280. osn_selenium/executors/sync/cdp/indexed_db.py +0 -142
  281. osn_selenium/executors/sync/cdp/input.py +0 -233
  282. osn_selenium/executors/sync/cdp/inspector.py +0 -21
  283. osn_selenium/executors/sync/cdp/io.py +0 -33
  284. osn_selenium/executors/sync/cdp/layer_tree.py +0 -71
  285. osn_selenium/executors/sync/cdp/log.py +0 -35
  286. osn_selenium/executors/sync/cdp/media.py +0 -21
  287. osn_selenium/executors/sync/cdp/memory.py +0 -62
  288. osn_selenium/executors/sync/cdp/network.py +0 -287
  289. osn_selenium/executors/sync/cdp/overlay.py +0 -174
  290. osn_selenium/executors/sync/cdp/page.py +0 -365
  291. osn_selenium/executors/sync/cdp/performance.py +0 -33
  292. osn_selenium/executors/sync/cdp/performance_timeline.py +0 -26
  293. osn_selenium/executors/sync/cdp/preload.py +0 -21
  294. osn_selenium/executors/sync/cdp/profiler.py +0 -58
  295. osn_selenium/executors/sync/cdp/pwa.py +0 -55
  296. osn_selenium/executors/sync/cdp/runtime.py +0 -221
  297. osn_selenium/executors/sync/cdp/schema.py +0 -23
  298. osn_selenium/executors/sync/cdp/security.py +0 -30
  299. osn_selenium/executors/sync/cdp/service_worker.py +0 -56
  300. osn_selenium/executors/sync/cdp/storage.py +0 -151
  301. osn_selenium/executors/sync/cdp/system_info.py +0 -30
  302. osn_selenium/executors/sync/cdp/target.py +0 -147
  303. osn_selenium/executors/sync/cdp/tethering.py +0 -21
  304. osn_selenium/executors/sync/cdp/tracing.py +0 -62
  305. osn_selenium/executors/sync/cdp/web_audio.py +0 -24
  306. osn_selenium/executors/sync/cdp/web_authn.py +0 -82
  307. osn_selenium/executors/trio_threads/cdp/__init__.py +0 -771
  308. osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -87
  309. osn_selenium/executors/trio_threads/cdp/animation.py +0 -63
  310. osn_selenium/executors/trio_threads/cdp/audits.py +0 -57
  311. osn_selenium/executors/trio_threads/cdp/autofill.py +0 -52
  312. osn_selenium/executors/trio_threads/cdp/background_service.py +0 -40
  313. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -111
  314. osn_selenium/executors/trio_threads/cdp/browser.py +0 -140
  315. osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -79
  316. osn_selenium/executors/trio_threads/cdp/cast.py +0 -47
  317. osn_selenium/executors/trio_threads/cdp/console.py +0 -33
  318. osn_selenium/executors/trio_threads/cdp/css.py +0 -196
  319. osn_selenium/executors/trio_threads/cdp/debugger.py +0 -219
  320. osn_selenium/executors/trio_threads/cdp/device_access.py +0 -40
  321. osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -34
  322. osn_selenium/executors/trio_threads/cdp/dom.py +0 -319
  323. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -69
  324. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -71
  325. osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -51
  326. osn_selenium/executors/trio_threads/cdp/emulation.py +0 -283
  327. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -37
  328. osn_selenium/executors/trio_threads/cdp/extensions.py +0 -52
  329. osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -54
  330. osn_selenium/executors/trio_threads/cdp/fetch.py +0 -105
  331. osn_selenium/executors/trio_threads/cdp/file_system.py +0 -31
  332. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -54
  333. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -102
  334. osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -155
  335. osn_selenium/executors/trio_threads/cdp/input.py +0 -242
  336. osn_selenium/executors/trio_threads/cdp/inspector.py +0 -34
  337. osn_selenium/executors/trio_threads/cdp/io.py +0 -42
  338. osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -84
  339. osn_selenium/executors/trio_threads/cdp/log.py +0 -44
  340. osn_selenium/executors/trio_threads/cdp/media.py +0 -30
  341. osn_selenium/executors/trio_threads/cdp/memory.py +0 -71
  342. osn_selenium/executors/trio_threads/cdp/network.py +0 -296
  343. osn_selenium/executors/trio_threads/cdp/overlay.py +0 -183
  344. osn_selenium/executors/trio_threads/cdp/page.py +0 -374
  345. osn_selenium/executors/trio_threads/cdp/performance.py +0 -46
  346. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -36
  347. osn_selenium/executors/trio_threads/cdp/preload.py +0 -30
  348. osn_selenium/executors/trio_threads/cdp/profiler.py +0 -71
  349. osn_selenium/executors/trio_threads/cdp/pwa.py +0 -64
  350. osn_selenium/executors/trio_threads/cdp/runtime.py +0 -230
  351. osn_selenium/executors/trio_threads/cdp/schema.py +0 -32
  352. osn_selenium/executors/trio_threads/cdp/security.py +0 -43
  353. osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -69
  354. osn_selenium/executors/trio_threads/cdp/storage.py +0 -162
  355. osn_selenium/executors/trio_threads/cdp/system_info.py +0 -43
  356. osn_selenium/executors/trio_threads/cdp/target.py +0 -156
  357. osn_selenium/executors/trio_threads/cdp/tethering.py +0 -34
  358. osn_selenium/executors/trio_threads/cdp/tracing.py +0 -71
  359. osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -37
  360. osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -95
  361. osn_selenium/executors/unified/cdp/accessibility.py +0 -81
  362. osn_selenium/executors/unified/cdp/animation.py +0 -50
  363. osn_selenium/executors/unified/cdp/audits.py +0 -45
  364. osn_selenium/executors/unified/cdp/autofill.py +0 -41
  365. osn_selenium/executors/unified/cdp/background_service.py +0 -24
  366. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -132
  367. osn_selenium/executors/unified/cdp/browser.py +0 -143
  368. osn_selenium/executors/unified/cdp/cache_storage.py +0 -69
  369. osn_selenium/executors/unified/cdp/cast.py +0 -32
  370. osn_selenium/executors/unified/cdp/console.py +0 -18
  371. osn_selenium/executors/unified/cdp/css.py +0 -237
  372. osn_selenium/executors/unified/cdp/debugger.py +0 -243
  373. osn_selenium/executors/unified/cdp/device_access.py +0 -21
  374. osn_selenium/executors/unified/cdp/device_orientation.py +0 -18
  375. osn_selenium/executors/unified/cdp/dom.py +0 -380
  376. osn_selenium/executors/unified/cdp/dom_debugger.py +0 -65
  377. osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -58
  378. osn_selenium/executors/unified/cdp/dom_storage.py +0 -38
  379. osn_selenium/executors/unified/cdp/emulation.py +0 -312
  380. osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -24
  381. osn_selenium/executors/unified/cdp/extensions.py +0 -45
  382. osn_selenium/executors/unified/cdp/fed_cm.py +0 -51
  383. osn_selenium/executors/unified/cdp/fetch.py +0 -111
  384. osn_selenium/executors/unified/cdp/file_system.py +0 -15
  385. osn_selenium/executors/unified/cdp/headless_experimental.py +0 -38
  386. osn_selenium/executors/unified/cdp/heap_profiler.py +0 -101
  387. osn_selenium/executors/unified/cdp/indexed_db.py +0 -157
  388. osn_selenium/executors/unified/cdp/input.py +0 -254
  389. osn_selenium/executors/unified/cdp/inspector.py +0 -15
  390. osn_selenium/executors/unified/cdp/io.py +0 -29
  391. osn_selenium/executors/unified/cdp/layer_tree.py +0 -71
  392. osn_selenium/executors/unified/cdp/log.py +0 -29
  393. osn_selenium/executors/unified/cdp/media.py +0 -15
  394. osn_selenium/executors/unified/cdp/memory.py +0 -59
  395. osn_selenium/executors/unified/cdp/network.py +0 -323
  396. osn_selenium/executors/unified/cdp/overlay.py +0 -209
  397. osn_selenium/executors/unified/cdp/page.py +0 -410
  398. osn_selenium/executors/unified/cdp/performance.py +0 -27
  399. osn_selenium/executors/unified/cdp/performance_timeline.py +0 -17
  400. osn_selenium/executors/unified/cdp/preload.py +0 -15
  401. osn_selenium/executors/unified/cdp/profiler.py +0 -55
  402. osn_selenium/executors/unified/cdp/pwa.py +0 -55
  403. osn_selenium/executors/unified/cdp/runtime.py +0 -245
  404. osn_selenium/executors/unified/cdp/schema.py +0 -17
  405. osn_selenium/executors/unified/cdp/security.py +0 -27
  406. osn_selenium/executors/unified/cdp/service_worker.py +0 -62
  407. osn_selenium/executors/unified/cdp/storage.py +0 -178
  408. osn_selenium/executors/unified/cdp/system_info.py +0 -24
  409. osn_selenium/executors/unified/cdp/target.py +0 -165
  410. osn_selenium/executors/unified/cdp/tethering.py +0 -15
  411. osn_selenium/executors/unified/cdp/tracing.py +0 -62
  412. osn_selenium/executors/unified/cdp/web_audio.py +0 -18
  413. osn_selenium/executors/unified/cdp/web_authn.py +0 -103
  414. osn_selenium-1.1.0.dist-info/RECORD +0 -615
  415. /osn_selenium/{dev_tools/_exception_helpers.py → _exception_helpers.py} +0 -0
  416. /osn_selenium/executors/{unified/cdp → trio_bidi}/__init__.py +0 -0
  417. {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/WHEEL +0 -0
  418. {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,71 @@
1
+ from typing import Any, Dict
2
+ from selenium.webdriver.remote.command import Command
3
+ from osn_selenium.trio_bidi.mapping._js_snippets import CAPTURE
4
+ from osn_selenium.trio_bidi._typehints import (
5
+ MAP_REQUEST_FUNCTION_TYPEHINT,
6
+ REQUEST_PARAMS_TYPEHINT
7
+ )
8
+ from osn_selenium.trio_bidi.mapping.request_functions._args_helpers import (
9
+ build_script_evaluate_request
10
+ )
11
+
12
+
13
+ __all__ = ["MAPPED_REQUEST_CAPTURE_COMMANDS"]
14
+
15
+
16
+ def _map_screenshot_request(params: REQUEST_PARAMS_TYPEHINT, context_id: str) -> Dict[str, Any]:
17
+ """
18
+ Maps the screenshot command to BiDi 'captureScreenshot'.
19
+
20
+ Args:
21
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
22
+ context_id (str): The browsing context ID.
23
+
24
+ Returns:
25
+ Dict[str, Any]: The BiDi request.
26
+ """
27
+
28
+ return {
29
+ "method": "browsingContext.captureScreenshot",
30
+ "params": {"context": context_id}
31
+ }
32
+
33
+
34
+ def _map_print_page_request(params: REQUEST_PARAMS_TYPEHINT, context_id: str) -> Dict[str, Any]:
35
+ """
36
+ Maps the print command to BiDi 'browsingContext.print'.
37
+
38
+ Args:
39
+ params (REQUEST_PARAMS_TYPEHINT): Print parameters.
40
+ context_id (str): The browsing context ID.
41
+
42
+ Returns:
43
+ Dict[str, Any]: The BiDi request.
44
+ """
45
+
46
+ return {
47
+ "method": "browsingContext.print",
48
+ "params": {"context": context_id, **params}
49
+ }
50
+
51
+
52
+ def _map_get_page_source_request(params: REQUEST_PARAMS_TYPEHINT, context_id: str) -> Dict[str, Any]:
53
+ """
54
+ Maps the get page source command to a JS evaluation.
55
+
56
+ Args:
57
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
58
+ context_id (str): The browsing context ID.
59
+
60
+ Returns:
61
+ Dict[str, Any]: The BiDi request.
62
+ """
63
+
64
+ return build_script_evaluate_request(context_id=context_id, expression=CAPTURE.GET_PAGE_SOURCE)
65
+
66
+
67
+ MAPPED_REQUEST_CAPTURE_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
68
+ Command.SCREENSHOT: _map_screenshot_request,
69
+ Command.GET_PAGE_SOURCE: _map_get_page_source_request,
70
+ Command.PRINT_PAGE: _map_print_page_request,
71
+ }
@@ -0,0 +1,40 @@
1
+ from typing import Any, Dict
2
+ from osn_selenium.trio_bidi._typehints import (
3
+ CURRENT_BROWSING_CONTEXT_TYPEHINT,
4
+ MAP_REQUEST_FUNCTION_TYPEHINT,
5
+ REQUEST_PARAMS_TYPEHINT
6
+ )
7
+
8
+
9
+ __all__ = ["MAPPED_REQUEST_CDP_COMMANDS"]
10
+
11
+
12
+ def _execute_cdp_command(
13
+ params: REQUEST_PARAMS_TYPEHINT,
14
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT,
15
+ ) -> Dict[str, Any]:
16
+ """
17
+ Maps a generic CDP send command to the BiDi Chrome-specific protocol.
18
+
19
+ Args:
20
+ params (Optional[Dict[str, Any]]): Parameters containing 'cmd' and 'params'.
21
+ context_id (Optional[str]): The target browsing context ID.
22
+
23
+ Returns:
24
+ Dict[str, Any]: The mapped BiDi request.
25
+ """
26
+
27
+ cdp_method = params.get("cmd", "")
28
+ cdp_params = params.get("params", {})
29
+
30
+ return {
31
+ "method": "goog:cdp.sendCommand",
32
+ "params": {
33
+ "method": cdp_method,
34
+ "params": cdp_params,
35
+ "browsingContext": context_id,
36
+ }
37
+ }
38
+
39
+
40
+ MAPPED_REQUEST_CDP_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {"executeCdpCommand": _execute_cdp_command}
@@ -0,0 +1,55 @@
1
+ from typing import Any, Dict
2
+ from selenium.webdriver.remote.command import Command
3
+ from osn_selenium.trio_bidi.mapping.request_functions._args_helpers import (
4
+ build_locate_nodes_request
5
+ )
6
+ from osn_selenium.trio_bidi._typehints import (
7
+ CURRENT_BROWSING_CONTEXT_TYPEHINT,
8
+ MAP_REQUEST_FUNCTION_TYPEHINT,
9
+ REQUEST_PARAMS_TYPEHINT
10
+ )
11
+
12
+
13
+ __all__ = ["MAPPED_REQUEST_ELEMENT_COMMANDS"]
14
+
15
+
16
+ def _map_find_elements_request(
17
+ params: REQUEST_PARAMS_TYPEHINT,
18
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
19
+ ) -> Dict[str, Any]:
20
+ """
21
+ Maps the 'find elements' command to BiDi 'locateNodes'.
22
+
23
+ Args:
24
+ params (REQUEST_PARAMS_TYPEHINT): Strategy and value.
25
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
26
+
27
+ Returns:
28
+ Dict[str, Any]: The BiDi request.
29
+ """
30
+
31
+ return build_locate_nodes_request(context_id=context_id, params=params)
32
+
33
+
34
+ def _map_find_element_request(
35
+ params: REQUEST_PARAMS_TYPEHINT,
36
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
37
+ ) -> Dict[str, Any]:
38
+ """
39
+ Maps the 'find element' command to BiDi 'locateNodes' with max count of 1.
40
+
41
+ Args:
42
+ params (REQUEST_PARAMS_TYPEHINT): Strategy and value.
43
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
44
+
45
+ Returns:
46
+ Dict[str, Any]: The BiDi request.
47
+ """
48
+
49
+ return build_locate_nodes_request(context_id=context_id, params=params, max_nodes=1)
50
+
51
+
52
+ MAPPED_REQUEST_ELEMENT_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
53
+ Command.FIND_ELEMENT: _map_find_element_request,
54
+ Command.FIND_ELEMENTS: _map_find_elements_request
55
+ }
@@ -0,0 +1,32 @@
1
+ from typing import Any, Dict
2
+ from selenium.webdriver.remote.command import Command
3
+ from osn_selenium.trio_bidi._internal_mappings import UPLOAD_INTERNAL_FILE
4
+ from osn_selenium.trio_bidi._typehints import (
5
+ CURRENT_BROWSING_CONTEXT_TYPEHINT,
6
+ MAP_REQUEST_FUNCTION_TYPEHINT,
7
+ REQUEST_PARAMS_TYPEHINT
8
+ )
9
+
10
+
11
+ __all__ = ["MAPPED_REQUEST_FILE_COMMANDS"]
12
+
13
+
14
+ def _map_upload_file_request(
15
+ params: REQUEST_PARAMS_TYPEHINT,
16
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
17
+ ) -> Dict[str, Any]:
18
+ """
19
+ Maps the file upload command to an internal bridge command.
20
+
21
+ Args:
22
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
23
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
24
+
25
+ Returns:
26
+ Dict[str, Any]: The internal BiDi request.
27
+ """
28
+
29
+ return {"method": UPLOAD_INTERNAL_FILE, "params": {}}
30
+
31
+
32
+ MAPPED_REQUEST_FILE_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {Command.UPLOAD_FILE: _map_upload_file_request}
@@ -0,0 +1,147 @@
1
+ from typing import Any, Dict
2
+ from selenium.webdriver.remote.command import Command
3
+ from osn_selenium.trio_bidi.mapping._js_snippets import NAVIGATION
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_NAVIGATION_COMMANDS"]
15
+
16
+
17
+ def _map_refresh_request(
18
+ params: REQUEST_PARAMS_TYPEHINT,
19
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
20
+ ) -> Dict[str, Any]:
21
+ """
22
+ Maps the refresh command to BiDi 'browsingContext.reload'.
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 {
33
+ "method": "browsingContext.reload",
34
+ "params": {"context": context_id, "ignoreCache": True, "wait": "interactive"}
35
+ }
36
+
37
+
38
+ def _map_get_title_request(
39
+ params: REQUEST_PARAMS_TYPEHINT,
40
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
41
+ ) -> Dict[str, Any]:
42
+ """
43
+ Maps the get title command to a JS evaluation.
44
+
45
+ Args:
46
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
47
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
48
+
49
+ Returns:
50
+ Dict[str, Any]: The BiDi request.
51
+ """
52
+
53
+ return build_script_evaluate_request(context_id=context_id, expression=NAVIGATION.GET_TITLE)
54
+
55
+
56
+ def _map_get_request(
57
+ params: REQUEST_PARAMS_TYPEHINT,
58
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
59
+ ) -> Dict[str, Any]:
60
+ """
61
+ Maps the navigate command to BiDi 'browsingContext.navigate'.
62
+
63
+ Args:
64
+ params (REQUEST_PARAMS_TYPEHINT): Parameters containing 'url'.
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 {
72
+ "method": "browsingContext.navigate",
73
+ "params": {"context": context_id, "url": params["url"], "wait": "interactive"}
74
+ }
75
+
76
+
77
+ def _map_get_current_url_request(
78
+ params: REQUEST_PARAMS_TYPEHINT,
79
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
80
+ ) -> Dict[str, Any]:
81
+ """
82
+ Maps the get current URL command to BiDi 'browsingContext.getTree'.
83
+
84
+ Args:
85
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
86
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
87
+
88
+ Returns:
89
+ Dict[str, Any]: The BiDi request.
90
+ """
91
+
92
+ return {
93
+ "method": "browsingContext.getTree",
94
+ "params": {"root": context_id, "maxDepth": 0}
95
+ }
96
+
97
+
98
+ def _map_forward_request(
99
+ params: REQUEST_PARAMS_TYPEHINT,
100
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
101
+ ) -> Dict[str, Any]:
102
+ """
103
+ Maps the forward history command to BiDi history traversal.
104
+
105
+ Args:
106
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
107
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
108
+
109
+ Returns:
110
+ Dict[str, Any]: The BiDi request.
111
+ """
112
+
113
+ return {
114
+ "method": "browsingContext.traverseHistory",
115
+ "params": {"context": context_id, "delta": 1}
116
+ }
117
+
118
+
119
+ def _map_back_request(
120
+ params: REQUEST_PARAMS_TYPEHINT,
121
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
122
+ ) -> Dict[str, Any]:
123
+ """
124
+ Maps the back history command to BiDi history traversal.
125
+
126
+ Args:
127
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
128
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
129
+
130
+ Returns:
131
+ Dict[str, Any]: The BiDi request.
132
+ """
133
+
134
+ return {
135
+ "method": "browsingContext.traverseHistory",
136
+ "params": {"context": context_id, "delta": -1}
137
+ }
138
+
139
+
140
+ MAPPED_REQUEST_NAVIGATION_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
141
+ Command.GET: _map_get_request,
142
+ Command.GET_CURRENT_URL: _map_get_current_url_request,
143
+ Command.REFRESH: _map_refresh_request,
144
+ Command.GO_BACK: _map_back_request,
145
+ Command.GO_FORWARD: _map_forward_request,
146
+ Command.GET_TITLE: _map_get_title_request,
147
+ }
@@ -0,0 +1,85 @@
1
+ from typing import Any, Dict
2
+ from selenium.webdriver.remote.command import Command
3
+ from osn_selenium.trio_bidi.mapping.request_functions._args_helpers import (
4
+ build_script_call_request,
5
+ convert_w3c_to_bidi_js
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_SCRIPT_COMMANDS"]
15
+
16
+
17
+ def _map_w3c_execute_script_request(
18
+ params: REQUEST_PARAMS_TYPEHINT,
19
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
20
+ ) -> Dict[str, Any]:
21
+ """
22
+ Maps synchronous script execution to BiDi 'script.callFunction'.
23
+
24
+ Args:
25
+ params (REQUEST_PARAMS_TYPEHINT): Script and arguments.
26
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
27
+
28
+ Returns:
29
+ Dict[str, Any]: The BiDi request.
30
+ """
31
+
32
+ script = params.get("script", "")
33
+ args = params.get("args", [])
34
+ bidi_args = [convert_w3c_to_bidi_js(w3c_value=arg) for arg in args]
35
+
36
+ return build_script_call_request(
37
+ context_id=context_id,
38
+ function=f"function() {{ {script} }}",
39
+ args=bidi_args,
40
+ ownership="none",
41
+ )
42
+
43
+
44
+ def _map_w3c_execute_script_async_request(
45
+ params: REQUEST_PARAMS_TYPEHINT,
46
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
47
+ ) -> Dict[str, Any]:
48
+ """
49
+ Maps asynchronous script execution to a Promise-based BiDi 'script.callFunction'.
50
+
51
+ Args:
52
+ params (REQUEST_PARAMS_TYPEHINT): Script and arguments.
53
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
54
+
55
+ Returns:
56
+ Dict[str, Any]: The BiDi request.
57
+ """
58
+
59
+ script = params.get("script", "")
60
+ args = params.get("args", [])
61
+ bidi_args = [convert_w3c_to_bidi_js(w3c_value=arg) for arg in args]
62
+
63
+ wrapper_script = f"""
64
+ function() {{
65
+ return new Promise((resolve) => {{
66
+ const args = Array.from(arguments);
67
+ const callback = (result) => resolve(result);
68
+ args.push(callback);
69
+ (function() {{ {script} }}).apply(null, args);
70
+ }});
71
+ }}
72
+ """
73
+
74
+ return build_script_call_request(
75
+ context_id=context_id,
76
+ function=wrapper_script,
77
+ args=bidi_args,
78
+ ownership="none",
79
+ )
80
+
81
+
82
+ MAPPED_REQUEST_SCRIPT_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
83
+ Command.W3C_EXECUTE_SCRIPT: _map_w3c_execute_script_request,
84
+ Command.W3C_EXECUTE_SCRIPT_ASYNC: _map_w3c_execute_script_async_request,
85
+ }
@@ -0,0 +1,65 @@
1
+ from typing import Any, Dict
2
+ from selenium.webdriver.remote.command import Command
3
+ from osn_selenium.trio_bidi.mapping.request_functions._args_helpers import (
4
+ build_locate_nodes_request,
5
+ get_shadow_root_argument
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_SHADOW_ROOT_COMMANDS"]
15
+
16
+
17
+ def _map_find_elements_from_shadow_root_request(
18
+ params: REQUEST_PARAMS_TYPEHINT,
19
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
20
+ ) -> Dict[str, Any]:
21
+ """
22
+ Maps the find elements from shadow root command to BiDi 'locateNodes'.
23
+
24
+ Args:
25
+ params (REQUEST_PARAMS_TYPEHINT): Strategy, value and shadow ID.
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 build_locate_nodes_request(
33
+ context_id=context_id,
34
+ params=params,
35
+ start_nodes=[get_shadow_root_argument(params=params)],
36
+ )
37
+
38
+
39
+ def _map_find_element_from_shadow_root_request(
40
+ params: REQUEST_PARAMS_TYPEHINT,
41
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
42
+ ) -> Dict[str, Any]:
43
+ """
44
+ Maps the find element from shadow root command to BiDi 'locateNodes' (max 1).
45
+
46
+ Args:
47
+ params (REQUEST_PARAMS_TYPEHINT): Strategy, value and shadow ID.
48
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
49
+
50
+ Returns:
51
+ Dict[str, Any]: The BiDi request.
52
+ """
53
+
54
+ return build_locate_nodes_request(
55
+ context_id=context_id,
56
+ params=params,
57
+ max_nodes=1,
58
+ start_nodes=[get_shadow_root_argument(params=params)],
59
+ )
60
+
61
+
62
+ MAPPED_REQUEST_SHADOW_ROOT_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
63
+ Command.FIND_ELEMENT_FROM_SHADOW_ROOT: _map_find_element_from_shadow_root_request,
64
+ Command.FIND_ELEMENTS_FROM_SHADOW_ROOT: _map_find_elements_from_shadow_root_request,
65
+ }
@@ -0,0 +1,59 @@
1
+ from typing import Any, Dict
2
+ from selenium.webdriver.remote.command import Command
3
+ from osn_selenium.trio_bidi._typehints import (
4
+ CURRENT_BROWSING_CONTEXT_TYPEHINT,
5
+ MAP_REQUEST_FUNCTION_TYPEHINT,
6
+ REQUEST_PARAMS_TYPEHINT
7
+ )
8
+
9
+
10
+ __all__ = ["MAPPED_REQUEST_SWITCH_TO_COMMANDS"]
11
+
12
+
13
+ def _map_switch_to_window_request(
14
+ params: REQUEST_PARAMS_TYPEHINT,
15
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
16
+ ) -> Dict[str, Any]:
17
+ """
18
+ Maps switch to window command to BiDi 'browsingContext.getTree'.
19
+
20
+ Args:
21
+ params (REQUEST_PARAMS_TYPEHINT): Parameters containing 'handle'.
22
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The current browsing context ID.
23
+
24
+ Returns:
25
+ Dict[str, Any]: The BiDi request.
26
+ """
27
+
28
+ target_handle = params.get("handle")
29
+
30
+ return {
31
+ "method": "browsingContext.getTree",
32
+ "params": {"root": target_handle, "maxDepth": 0}
33
+ }
34
+
35
+
36
+ def _map_new_window_request(
37
+ params: REQUEST_PARAMS_TYPEHINT,
38
+ context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
39
+ ) -> Dict[str, Any]:
40
+ """
41
+ Maps new window command to BiDi 'browsingContext.create'.
42
+
43
+ Args:
44
+ params (REQUEST_PARAMS_TYPEHINT): Request parameters.
45
+ context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
46
+
47
+ Returns:
48
+ Dict[str, Any]: The BiDi request.
49
+ """
50
+
51
+ return {"method": "browsingContext.create", "params": {"type": "tab"}}
52
+
53
+
54
+ MAPPED_REQUEST_SWITCH_TO_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
55
+ Command.SWITCH_TO_WINDOW: _map_switch_to_window_request,
56
+ Command.NEW_WINDOW: _map_new_window_request,
57
+ }
58
+
59
+ # TODO create mappings for Command.SWITCH_TO_FRAME, Command.SWITCH_TO_PARENT_FRAME and Command.W3C_GET_ACTIVE_ELEMENT