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,135 @@
1
+ from types import TracebackType
2
+ from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Any,
5
+ Dict,
6
+ Optional,
7
+ Type
8
+ )
9
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
10
+ from osn_selenium.flags.models.base import BrowserFlags
11
+ from osn_selenium.trio_bidi.connection_pool import BiDiConnectionPool
12
+ from osn_selenium.trio_bidi.remote_connection import (
13
+ BiDiBridgeRemoteConnection
14
+ )
15
+ from osn_selenium.webdrivers.unified.core.lifecycle import (
16
+ UnifiedCoreLifecycleMixin
17
+ )
18
+ from osn_selenium.abstract.webdriver.core.lifecycle import (
19
+ AbstractCoreLifecycleMixin
20
+ )
21
+
22
+
23
+ __all__ = ["CoreLifecycleMixin"]
24
+
25
+
26
+ class CoreLifecycleMixin(UnifiedCoreLifecycleMixin, TrioBiDiMixin, AbstractCoreLifecycleMixin):
27
+ """
28
+ Mixin for managing the lifecycle of the Core WebDriver.
29
+
30
+ Handles the creation, startup, shutdown, and restarting processes of the
31
+ underlying browser instance, ensuring clean session management.
32
+ """
33
+
34
+ async def _start_bidi_bridge(self) -> None:
35
+ """
36
+ Internal method to initialize and start the BiDi bridge.
37
+ """
38
+
39
+ def _init_context() -> None:
40
+ driver = self._driver_impl
41
+ driver.switch_to.window(driver.current_window_handle)
42
+
43
+ self._bidi_bridge_connection_pool = BiDiConnectionPool(
44
+ websocket_url=self._caps_get_impl()["webSocketUrl"],
45
+ buffer_size=self._trio_bidi_buffer_size
46
+ )
47
+ send_channel = await self._bidi_bridge_connection_pool.start()
48
+
49
+ legacy_remote_connection = self._command_executor_get_impl()
50
+ self._bidi_bridge_remote_connection = BiDiBridgeRemoteConnection(
51
+ send_channel=send_channel,
52
+ trio_token=self._trio_token,
53
+ legacy_remote_connection=legacy_remote_connection
54
+ )
55
+ self._command_executor_set_impl(value=self._bidi_bridge_remote_connection)
56
+
57
+
58
+
59
+ await self.sync_to_trio(sync_function=_init_context)()
60
+
61
+ async def start_webdriver(
62
+ self,
63
+ flags: Optional[BrowserFlags] = None,
64
+ window_rect: Optional[WindowRect] = None,
65
+ ) -> None:
66
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(flags=flags, window_rect=window_rect)
67
+ await self._start_bidi_bridge()
68
+
69
+ async def __aenter__(
70
+ self,
71
+ flags: Optional[BrowserFlags] = None,
72
+ window_rect: Optional[WindowRect] = None,
73
+ ) -> None:
74
+ await self.start_webdriver(flags=flags, window_rect=window_rect)
75
+
76
+ async def _stop_bidi_bridge(self) -> None:
77
+ """
78
+ Internal method to stop the BiDi connection pool.
79
+ """
80
+
81
+ await self._bidi_bridge_connection_pool.stop()
82
+
83
+ async def stop_webdriver(self) -> None:
84
+ await self.sync_to_trio(sync_function=self._stop_webdriver_impl)()
85
+ await self._stop_bidi_bridge()
86
+
87
+ async def __aexit__(
88
+ self,
89
+ exc_type: Optional[Type[BaseException]],
90
+ exc_val: Optional[BaseException],
91
+ exc_tb: Optional[TracebackType],
92
+ ) -> bool:
93
+ """
94
+ Asynchronously exits the WebDriver context.
95
+
96
+ Args:
97
+ exc_type (Optional[Type[BaseException]]): The exception type, if any.
98
+ exc_val (Optional[BaseException]): The exception value, if any.
99
+ exc_tb (Optional[TracebackType]): The exception traceback, if any.
100
+
101
+ Returns:
102
+ bool: True if an exception was suppressed, False otherwise.
103
+ """
104
+
105
+ await self.stop_webdriver()
106
+
107
+ if exc_type is not None and exc_val is not None and exc_tb is not None:
108
+ return True
109
+
110
+ return False
111
+
112
+ async def quit(self) -> None:
113
+ await self.sync_to_trio(sync_function=self._quit_impl)()
114
+
115
+ async def remote_connect_driver(self, command_executor: BiDiBridgeRemoteConnection) -> None:
116
+ await self.sync_to_trio(sync_function=self._remote_connect_driver_impl)(command_executor=command_executor)
117
+
118
+ async def restart_webdriver(
119
+ self,
120
+ flags: Optional[BrowserFlags] = None,
121
+ window_rect: Optional[WindowRect] = None,
122
+ ) -> None:
123
+ await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(flags=flags, window_rect=window_rect)
124
+
125
+ await self._stop_bidi_bridge()
126
+ await self._start_bidi_bridge()
127
+
128
+ async def start_client(self) -> None:
129
+ await self.sync_to_trio(sync_function=self._start_client_impl)()
130
+
131
+ async def start_session(self, capabilities: Dict[str, Any]) -> None:
132
+ await self.sync_to_trio(sync_function=self._start_session_impl)(capabilities=capabilities)
133
+
134
+ async def stop_client(self) -> None:
135
+ await self.sync_to_trio(sync_function=self._stop_client_impl)()
@@ -0,0 +1,37 @@
1
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
2
+ from osn_selenium.webdrivers.unified.core.navigation import (
3
+ UnifiedCoreNavigationMixin
4
+ )
5
+ from osn_selenium.abstract.webdriver.core.navigation import (
6
+ AbstractCoreNavigationMixin
7
+ )
8
+
9
+
10
+ __all__ = ["CoreNavigationMixin"]
11
+
12
+
13
+ class CoreNavigationMixin(UnifiedCoreNavigationMixin, TrioBiDiMixin, AbstractCoreNavigationMixin):
14
+ """
15
+ Mixin controlling browser navigation for Core WebDrivers.
16
+
17
+ Includes standard navigation commands such as visiting URLs, history
18
+ traversal (back/forward), and page refreshing.
19
+ """
20
+
21
+ async def back(self) -> None:
22
+ await self.sync_to_trio(sync_function=self._back_impl)()
23
+
24
+ async def current_url(self) -> str:
25
+ return await self.sync_to_trio(sync_function=self._current_url_impl)()
26
+
27
+ async def forward(self) -> None:
28
+ await self.sync_to_trio(sync_function=self._forward_impl)()
29
+
30
+ async def get(self, url: str) -> None:
31
+ await self.sync_to_trio(sync_function=self._get_impl)(url=url)
32
+
33
+ async def refresh(self) -> None:
34
+ await self.sync_to_trio(sync_function=self._refresh_impl)()
35
+
36
+ async def title(self) -> str:
37
+ return await self.sync_to_trio(sync_function=self._title_impl)()
@@ -0,0 +1,56 @@
1
+ from typing import Any, List, Optional
2
+ from typing_extensions import deprecated
3
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
4
+ from selenium.webdriver.remote.script_key import ScriptKey
5
+ from osn_selenium.webdrivers.unified.core.script import (
6
+ UnifiedCoreScriptMixin
7
+ )
8
+ from osn_selenium.abstract.webdriver.core.script import (
9
+ AbstractCoreScriptMixin
10
+ )
11
+ from osn_selenium.webdrivers._args_helpers import (
12
+ unwrap_args,
13
+ wrap_trio_thread_args
14
+ )
15
+ from osn_selenium.exceptions.experimental import (
16
+ NotImplementedExperimentalFeatureError
17
+ )
18
+
19
+
20
+ __all__ = ["CoreScriptMixin"]
21
+
22
+
23
+ class CoreScriptMixin(UnifiedCoreScriptMixin, TrioBiDiMixin, AbstractCoreScriptMixin):
24
+ """
25
+ Mixin for JavaScript execution and management in Core WebDrivers.
26
+
27
+ Allows execution of synchronous and asynchronous JavaScript, as well as
28
+ pinning scripts for repeated use.
29
+ """
30
+
31
+ async def execute_async_script(self, script: str, *args: Any) -> Any:
32
+ unwrapped = unwrap_args(args=args)
33
+ result = await self.sync_to_trio(sync_function=self._execute_async_script_impl)(script, *unwrapped)
34
+
35
+ return wrap_trio_thread_args(args=result, lock=self._lock, limiter=self._capacity_limiter)
36
+
37
+ async def execute_script(self, script: str, *args: Any) -> Any:
38
+ unwrapped = unwrap_args(args=args)
39
+ result = await self.sync_to_trio(sync_function=self._execute_script_impl)(script, *unwrapped)
40
+
41
+ return wrap_trio_thread_args(args=result, lock=self._lock, limiter=self._capacity_limiter)
42
+
43
+ async def get_pinned_scripts(self) -> List[str]:
44
+ return await self.sync_to_trio(sync_function=self._get_pinned_scripts_impl)()
45
+
46
+ async def pin_script(self, script: str, script_key: Optional[Any] = None) -> ScriptKey:
47
+ return await self.sync_to_trio(sync_function=self._pin_script_impl)(script=script, script_key=script_key)
48
+
49
+ @deprecated(
50
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
51
+ )
52
+ async def script(self):
53
+ raise NotImplementedExperimentalFeatureError(name="CoreScriptMixin.script")
54
+
55
+ async def unpin(self, script_key: ScriptKey) -> None:
56
+ await self.sync_to_trio(sync_function=self._unpin_impl)(script_key=script_key)
@@ -0,0 +1,36 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
4
+ from osn_selenium.flags.models.base import BrowserFlags
5
+ from osn_selenium.webdrivers.unified.core.settings import (
6
+ UnifiedCoreSettingsMixin
7
+ )
8
+ from osn_selenium.abstract.webdriver.core.settings import (
9
+ AbstractCoreSettingsMixin
10
+ )
11
+
12
+
13
+ __all__ = ["CoreSettingsMixin"]
14
+
15
+
16
+ class CoreSettingsMixin(UnifiedCoreSettingsMixin, TrioBiDiMixin, AbstractCoreSettingsMixin):
17
+ """
18
+ Mixin for configuring and updating settings of the Core WebDriver.
19
+
20
+ Provides methods to modify browser flags, window rectangles, and other
21
+ configuration parameters either before startup or during a reset.
22
+ """
23
+
24
+ async def reset_settings(
25
+ self,
26
+ flags: Optional[BrowserFlags] = None,
27
+ window_rect: Optional[WindowRect] = None,
28
+ ) -> None:
29
+ await self.sync_to_trio(sync_function=self._reset_settings_impl)(flags=flags, window_rect=window_rect)
30
+
31
+ async def update_settings(
32
+ self,
33
+ flags: Optional[BrowserFlags] = None,
34
+ window_rect: Optional[WindowRect] = None,
35
+ ) -> None:
36
+ await self.sync_to_trio(sync_function=self._update_settings_impl)(flags=flags, window_rect=window_rect)
@@ -0,0 +1,134 @@
1
+ from typing_extensions import deprecated
2
+ from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
3
+ from typing import (
4
+ List,
5
+ Literal,
6
+ Optional,
7
+ Union
8
+ )
9
+ from osn_selenium.instances.trio_bidi.switch_to import SwitchTo
10
+ from osn_selenium.models import (
11
+ Position,
12
+ Rectangle,
13
+ Size
14
+ )
15
+ from osn_selenium.instances.convert import (
16
+ get_trio_bidi_instance_wrapper
17
+ )
18
+ from osn_selenium.webdrivers.unified.core.window import (
19
+ UnifiedCoreWindowMixin
20
+ )
21
+ from osn_selenium.abstract.webdriver.core.window import (
22
+ AbstractCoreWindowMixin
23
+ )
24
+ from osn_selenium.exceptions.experimental import (
25
+ NotImplementedExperimentalFeatureError
26
+ )
27
+
28
+
29
+ __all__ = ["CoreWindowMixin"]
30
+
31
+
32
+ class CoreWindowMixin(UnifiedCoreWindowMixin, TrioBiDiMixin, AbstractCoreWindowMixin):
33
+ """
34
+ Mixin for window and tab management in Core WebDrivers.
35
+
36
+ Controls window dimensions, position, state (minimized/maximized), and
37
+ switching between active window handles or frames.
38
+ """
39
+
40
+ async def close(self) -> None:
41
+ await self.sync_to_trio(sync_function=self._close_impl)()
42
+
43
+ async def close_all_windows(self) -> None:
44
+ await self.sync_to_trio(sync_function=self._close_all_windows_impl)()
45
+
46
+ async def close_window(self, window: Optional[Union[str, int]] = None) -> None:
47
+ await self.sync_to_trio(sync_function=self._close_window_impl)(window=window)
48
+
49
+ async def current_window_handle(self) -> str:
50
+ return await self.sync_to_trio(sync_function=self._current_window_handle_impl)()
51
+
52
+ @deprecated(
53
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
54
+ )
55
+ async def fullscreen_window(self) -> None:
56
+ raise NotImplementedExperimentalFeatureError(name="CoreWindowMixin.fullscreen_window")
57
+
58
+ async def get_orientation(self) -> Literal["LANDSCAPE", "PORTRAIT"]:
59
+ return await self.sync_to_trio(sync_function=self._orientation_get_impl)()
60
+
61
+ async def get_window_handle(self, window: Optional[Union[str, int]] = None) -> str:
62
+ return await self.sync_to_trio(sync_function=self._get_window_handle_impl)(window=window)
63
+
64
+ @deprecated(
65
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
66
+ )
67
+ async def get_window_position(self, windowHandle: str = "current") -> Position:
68
+ raise NotImplementedExperimentalFeatureError(name="CoreWindowMixin.get_window_position")
69
+
70
+ @deprecated(
71
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
72
+ )
73
+ async def get_window_rect(self) -> Rectangle:
74
+ raise NotImplementedExperimentalFeatureError(name="CoreWindowMixin.get_window_rect")
75
+
76
+ @deprecated(
77
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
78
+ )
79
+ async def get_window_size(self, windowHandle: str = "current") -> Size:
80
+ raise NotImplementedExperimentalFeatureError(name="CoreWindowMixin.get_window_size")
81
+
82
+ @deprecated(
83
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
84
+ )
85
+ async def maximize_window(self) -> None:
86
+ raise NotImplementedExperimentalFeatureError(name="CoreWindowMixin.maximize_window")
87
+
88
+ @deprecated(
89
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
90
+ )
91
+ async def minimize_window(self) -> None:
92
+ raise NotImplementedExperimentalFeatureError(name="CoreWindowMixin.minimize_window")
93
+
94
+ async def set_orientation(self, value: Literal["LANDSCAPE", "PORTRAIT"]) -> None:
95
+ await self.sync_to_trio(sync_function=self._orientation_set_impl)(value=value)
96
+
97
+ @deprecated(
98
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
99
+ )
100
+ async def set_window_position(self, x: int, y: int, windowHandle: str = "current") -> Position:
101
+ raise NotImplementedExperimentalFeatureError(name="CoreWindowMixin.set_window_position")
102
+
103
+ @deprecated(
104
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
105
+ )
106
+ async def set_window_rect(
107
+ self,
108
+ x: Optional[int] = None,
109
+ y: Optional[int] = None,
110
+ width: Optional[int] = None,
111
+ height: Optional[int] = None,
112
+ ) -> Rectangle:
113
+ raise NotImplementedExperimentalFeatureError(name="CoreWindowMixin.set_window_rect")
114
+
115
+ @deprecated(
116
+ "This method is currently not supported. It will raise 'NotImplementedExperimentalFeatureError' on call."
117
+ )
118
+ async def set_window_size(self, width: int, height: int, windowHandle: str = "current") -> None:
119
+ raise NotImplementedExperimentalFeatureError(name="CoreWindowMixin.set_window_size")
120
+
121
+ def switch_to(self) -> SwitchTo:
122
+ legacy = self._switch_to_impl()
123
+
124
+ return get_trio_bidi_instance_wrapper(
125
+ wrapper_class=SwitchTo,
126
+ legacy_object=legacy,
127
+ lock=self._lock,
128
+ limiter=self._capacity_limiter,
129
+ trio_token=self._trio_token,
130
+ bidi_buffer_size=self._trio_bidi_buffer_size,
131
+ )
132
+
133
+ async def window_handles(self) -> List[str]:
134
+ return await self.sync_to_trio(sync_function=self._window_handles_impl)()
@@ -0,0 +1,114 @@
1
+ import trio
2
+ from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
8
+ from osn_selenium._typehints import PATH_TYPEHINT
9
+ from osn_selenium.flags.edge import EdgeFlagsManager
10
+ from osn_selenium.flags.models.edge import EdgeFlags
11
+ from osn_selenium.dev_tools.settings import DevToolsSettings
12
+ from osn_selenium.webdrivers.trio_bidi.blink import BlinkWebDriver
13
+ from osn_selenium.webdrivers.trio_bidi.edge.base import EdgeBaseMixin
14
+ from osn_selenium.abstract.webdriver.edge import (
15
+ AbstractEdgeWebDriver
16
+ )
17
+ from osn_selenium.webdrivers.trio_bidi.edge.settings import EdgeSettingsMixin
18
+ from osn_selenium.webdrivers.trio_bidi.edge.lifecycle import EdgeLifecycleMixin
19
+
20
+
21
+ __all__ = ["EdgeWebDriver"]
22
+
23
+
24
+ class EdgeWebDriver(
25
+ EdgeBaseMixin,
26
+ EdgeLifecycleMixin,
27
+ EdgeSettingsMixin,
28
+ BlinkWebDriver,
29
+ AbstractEdgeWebDriver,
30
+ ):
31
+ """
32
+ Concrete Edge WebDriver implementation combining all functional mixins.
33
+
34
+ This class aggregates lifecycle management, element interaction, navigation,
35
+ and browser-specific features into a single usable driver instance.
36
+ """
37
+
38
+ def __init__(
39
+ self,
40
+ webdriver_path: str,
41
+ flags_manager_type: Type[EdgeFlagsManager] = EdgeFlagsManager,
42
+ use_browser_exe: bool = True,
43
+ browser_name_in_system: str = "Microsoft Edge",
44
+ browser_exe: Optional[PATH_TYPEHINT] = None,
45
+ flags: Optional[EdgeFlags] = None,
46
+ start_page_url: str = "about:blank",
47
+ implicitly_wait: int = 5,
48
+ page_load_timeout: int = 5,
49
+ script_timeout: int = 5,
50
+ window_rect: Optional[WindowRect] = None,
51
+ devtools_settings: Optional[DevToolsSettings] = None,
52
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
53
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
54
+ ignore_cdp_version_package_missing: bool = True,
55
+ ):
56
+ """
57
+ Initializes the Trio-based Edge WebDriver with specified configuration.
58
+
59
+ Args:
60
+ webdriver_path (str): Path to the EdgeDriver executable.
61
+ flags_manager_type (Type[EdgeFlagsManager]): The class type used for managing Edge flags.
62
+ Defaults to EdgeFlagsManager.
63
+ use_browser_exe (bool): Whether to use a specific browser executable path or auto-detect.
64
+ Defaults to True.
65
+ browser_name_in_system (str): The name of the browser in the system registry or path.
66
+ Defaults to "Microsoft Edge".
67
+ browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Edge browser executable.
68
+ flags (Optional[EdgeFlags]): Initial set of flags.
69
+ start_page_url (str): The initial URL. Defaults to "about:blank".
70
+ implicitly_wait (int): Default implicit wait time.
71
+ page_load_timeout (int): Default page load timeout.
72
+ script_timeout (int): Default script timeout.
73
+ window_rect (Optional[WindowRect]): Initial window dimensions.
74
+ capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
75
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
76
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
77
+ """
78
+
79
+ BlinkWebDriver.__init__(
80
+ self,
81
+ browser_exe=browser_exe,
82
+ browser_name_in_system=browser_name_in_system,
83
+ webdriver_path=webdriver_path,
84
+ use_browser_exe=use_browser_exe,
85
+ flags_manager_type=flags_manager_type,
86
+ flags=flags,
87
+ implicitly_wait=implicitly_wait,
88
+ page_load_timeout=page_load_timeout,
89
+ script_timeout=script_timeout,
90
+ window_rect=window_rect,
91
+ devtools_settings=devtools_settings,
92
+ capacity_limiter=capacity_limiter,
93
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
94
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
95
+ )
96
+
97
+ EdgeBaseMixin.__init__(
98
+ self,
99
+ browser_exe=browser_exe,
100
+ browser_name_in_system=browser_name_in_system,
101
+ use_browser_exe=use_browser_exe,
102
+ webdriver_path=webdriver_path,
103
+ architecture="trio_bidi",
104
+ flags_manager_type=flags_manager_type,
105
+ flags=flags,
106
+ start_page_url=start_page_url,
107
+ implicitly_wait=implicitly_wait,
108
+ page_load_timeout=page_load_timeout,
109
+ script_timeout=script_timeout,
110
+ window_rect=window_rect,
111
+ capacity_limiter=capacity_limiter,
112
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
113
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
114
+ )
@@ -0,0 +1,123 @@
1
+ import math
2
+ import trio
3
+ from osn_selenium.models import WindowRect
4
+ from selenium.webdriver import Edge as legacyEdge
5
+ from osn_selenium.flags.edge import EdgeFlagsManager
6
+ from osn_selenium.flags.models.edge import EdgeFlags
7
+ from typing import (
8
+ Mapping,
9
+ Optional,
10
+ Type,
11
+ Union
12
+ )
13
+ from osn_selenium.webdrivers.trio_bidi.blink.base import BlinkBaseMixin
14
+ from osn_selenium.webdrivers.unified.edge.base import UnifiedEdgeBaseMixin
15
+ from osn_selenium._typehints import (
16
+ ARCHITECTURES_TYPEHINT,
17
+ PATH_TYPEHINT
18
+ )
19
+ from osn_selenium.abstract.webdriver.edge.base import (
20
+ AbstractEdgeBaseMixin
21
+ )
22
+
23
+
24
+ __all__ = ["EdgeBaseMixin"]
25
+
26
+
27
+ class EdgeBaseMixin(UnifiedEdgeBaseMixin, BlinkBaseMixin, AbstractEdgeBaseMixin):
28
+ """
29
+ Base mixin for Edge WebDrivers handling core initialization and state management.
30
+
31
+ This class serves as the foundation for browser-specific implementations, managing
32
+ the WebDriver executable path, configuration flags, timeouts, and the active
33
+ driver instance.
34
+ """
35
+
36
+ def __init__(
37
+ self,
38
+ webdriver_path: str,
39
+ architecture: ARCHITECTURES_TYPEHINT,
40
+ flags_manager_type: Type[EdgeFlagsManager] = EdgeFlagsManager,
41
+ use_browser_exe: bool = True,
42
+ browser_name_in_system: str = "Microsoft Edge",
43
+ browser_exe: Optional[PATH_TYPEHINT] = None,
44
+ flags: Optional[EdgeFlags] = None,
45
+ start_page_url: str = "about:blank",
46
+ implicitly_wait: int = 5,
47
+ page_load_timeout: int = 5,
48
+ script_timeout: int = 5,
49
+ window_rect: Optional[WindowRect] = None,
50
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
51
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
52
+ ignore_cdp_version_package_missing: bool = True,
53
+ trio_token: Optional[trio.lowlevel.TrioToken] = None,
54
+ bidi_buffer_size: Union[int, float] = math.inf,
55
+ ):
56
+ """
57
+ Initializes the Trio-based Edge WebDriver mixin with specified configuration.
58
+
59
+ Args:
60
+ webdriver_path (str): Path to the EdgeDriver executable.
61
+ architecture (ARCHITECTURE_TYPEHINT): System architecture.
62
+ flags_manager_type (Type[EdgeFlagsManager]): The class type used for managing Edge flags.
63
+ Defaults to EdgeFlagsManager.
64
+ use_browser_exe (bool): Whether to use a specific browser executable path or auto-detect.
65
+ Defaults to True.
66
+ browser_name_in_system (str): The name of the browser in the system registry or path.
67
+ Defaults to "Microsoft Edge".
68
+ browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Edge browser executable.
69
+ flags (Optional[EdgeFlags]): Initial set of flags.
70
+ start_page_url (str): The initial URL. Defaults to "about:blank".
71
+ implicitly_wait (int): Default implicit wait time.
72
+ page_load_timeout (int): Default page load timeout.
73
+ script_timeout (int): Default script timeout.
74
+ window_rect (Optional[WindowRect]): Initial window dimensions.
75
+ capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
76
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
77
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
78
+ trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
79
+ bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
80
+ """
81
+
82
+ BlinkBaseMixin.__init__(
83
+ self,
84
+ browser_exe=browser_exe,
85
+ browser_name_in_system=browser_name_in_system,
86
+ use_browser_exe=use_browser_exe,
87
+ webdriver_path=webdriver_path,
88
+ architecture=architecture,
89
+ flags_manager_type=flags_manager_type,
90
+ flags=flags,
91
+ start_page_url=start_page_url,
92
+ implicitly_wait=implicitly_wait,
93
+ page_load_timeout=page_load_timeout,
94
+ script_timeout=script_timeout,
95
+ window_rect=window_rect,
96
+ capacity_limiter=capacity_limiter,
97
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
98
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
99
+ trio_token=trio_token,
100
+ bidi_buffer_size=bidi_buffer_size,
101
+ )
102
+
103
+ UnifiedEdgeBaseMixin.__init__(
104
+ self,
105
+ webdriver_path=webdriver_path,
106
+ architecture=architecture,
107
+ flags_manager_type=flags_manager_type,
108
+ use_browser_exe=use_browser_exe,
109
+ browser_name_in_system=browser_name_in_system,
110
+ browser_exe=browser_exe,
111
+ flags=flags,
112
+ start_page_url=start_page_url,
113
+ implicitly_wait=implicitly_wait,
114
+ page_load_timeout=page_load_timeout,
115
+ script_timeout=script_timeout,
116
+ window_rect=window_rect,
117
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
118
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
119
+ )
120
+
121
+ @property
122
+ def driver(self) -> Optional[legacyEdge]:
123
+ return self._driver_impl