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,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
@@ -0,0 +1,85 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium._typehints import PATH_TYPEHINT
4
+ from osn_selenium.flags.models.edge import EdgeFlags
5
+ from osn_selenium.webdrivers.trio_bidi.blink.lifecycle import BlinkLifecycleMixin
6
+ from osn_selenium.webdrivers.unified.edge.lifecycle import (
7
+ UnifiedEdgeLifecycleMixin
8
+ )
9
+ from osn_selenium.abstract.webdriver.edge.lifecycle import (
10
+ AbstractEdgeLifecycleMixin
11
+ )
12
+
13
+
14
+ __all__ = ["EdgeLifecycleMixin"]
15
+
16
+
17
+ class EdgeLifecycleMixin(
18
+ UnifiedEdgeLifecycleMixin,
19
+ BlinkLifecycleMixin,
20
+ AbstractEdgeLifecycleMixin
21
+ ):
22
+ """
23
+ Mixin for managing the lifecycle of the Edge WebDriver.
24
+
25
+ Handles the creation, startup, shutdown, and restarting processes of the
26
+ underlying browser instance, ensuring clean session management.
27
+ """
28
+
29
+ async def start_webdriver(
30
+ self,
31
+ flags: Optional[EdgeFlags] = None,
32
+ browser_exe: Optional[PATH_TYPEHINT] = None,
33
+ browser_name_in_system: Optional[str] = None,
34
+ use_browser_exe: Optional[bool] = None,
35
+ start_page_url: Optional[str] = None,
36
+ window_rect: Optional[WindowRect] = None,
37
+ ) -> None:
38
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
39
+ flags=flags,
40
+ browser_exe=browser_exe,
41
+ browser_name_in_system=browser_name_in_system,
42
+ use_browser_exe=use_browser_exe,
43
+ start_page_url=start_page_url,
44
+ window_rect=window_rect,
45
+ )
46
+ await self._start_bidi_bridge()
47
+
48
+ async def __aenter__(
49
+ self,
50
+ flags: Optional[EdgeFlags] = None,
51
+ browser_exe: Optional[PATH_TYPEHINT] = None,
52
+ browser_name_in_system: Optional[str] = None,
53
+ use_browser_exe: Optional[bool] = None,
54
+ start_page_url: Optional[str] = None,
55
+ window_rect: Optional[WindowRect] = None,
56
+ ) -> None:
57
+ await self.start_webdriver(
58
+ flags=flags,
59
+ browser_exe=browser_exe,
60
+ browser_name_in_system=browser_name_in_system,
61
+ use_browser_exe=use_browser_exe,
62
+ start_page_url=start_page_url,
63
+ window_rect=window_rect,
64
+ )
65
+
66
+ async def restart_webdriver(
67
+ self,
68
+ flags: Optional[EdgeFlags] = None,
69
+ browser_exe: Optional[PATH_TYPEHINT] = None,
70
+ browser_name_in_system: Optional[str] = None,
71
+ use_browser_exe: Optional[bool] = None,
72
+ start_page_url: Optional[str] = None,
73
+ window_rect: Optional[WindowRect] = None,
74
+ ) -> None:
75
+ await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
76
+ flags=flags,
77
+ browser_exe=browser_exe,
78
+ browser_name_in_system=browser_name_in_system,
79
+ use_browser_exe=use_browser_exe,
80
+ start_page_url=start_page_url,
81
+ window_rect=window_rect,
82
+ )
83
+
84
+ await self._stop_bidi_bridge()
85
+ await self._start_bidi_bridge()
@@ -0,0 +1,63 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium._typehints import PATH_TYPEHINT
4
+ from osn_selenium.flags.models.edge import EdgeFlags
5
+ from osn_selenium.webdrivers.trio_bidi.blink.settings import BlinkSettingsMixin
6
+ from osn_selenium.webdrivers.unified.edge.settings import (
7
+ UnifiedEdgeSettingsMixin
8
+ )
9
+ from osn_selenium.abstract.webdriver.edge.settings import (
10
+ AbstractEdgeSettingsMixin
11
+ )
12
+
13
+
14
+ __all__ = ["EdgeSettingsMixin"]
15
+
16
+
17
+ class EdgeSettingsMixin(
18
+ UnifiedEdgeSettingsMixin,
19
+ BlinkSettingsMixin,
20
+ AbstractEdgeSettingsMixin
21
+ ):
22
+ """
23
+ Mixin for configuring and updating settings of the Edge WebDriver.
24
+
25
+ Provides methods to modify browser flags, window rectangles, and other
26
+ configuration parameters either before startup or during a reset.
27
+ """
28
+
29
+ async def reset_settings(
30
+ self,
31
+ flags: Optional[EdgeFlags] = None,
32
+ browser_exe: Optional[PATH_TYPEHINT] = None,
33
+ browser_name_in_system: Optional[str] = None,
34
+ use_browser_exe: Optional[bool] = None,
35
+ start_page_url: str = "",
36
+ window_rect: Optional[WindowRect] = None,
37
+ ) -> None:
38
+ await self.sync_to_trio(sync_function=self._reset_settings_impl)(
39
+ flags=flags,
40
+ browser_exe=browser_exe,
41
+ browser_name_in_system=browser_name_in_system,
42
+ use_browser_exe=use_browser_exe,
43
+ start_page_url=start_page_url,
44
+ window_rect=window_rect,
45
+ )
46
+
47
+ async def update_settings(
48
+ self,
49
+ flags: Optional[EdgeFlags] = None,
50
+ browser_exe: Optional[PATH_TYPEHINT] = None,
51
+ browser_name_in_system: Optional[str] = None,
52
+ use_browser_exe: Optional[bool] = None,
53
+ start_page_url: Optional[str] = None,
54
+ window_rect: Optional[WindowRect] = None,
55
+ ) -> None:
56
+ await self.sync_to_trio(sync_function=self._update_settings_impl)(
57
+ flags=flags,
58
+ browser_exe=browser_exe,
59
+ browser_name_in_system=browser_name_in_system,
60
+ use_browser_exe=use_browser_exe,
61
+ start_page_url=start_page_url,
62
+ window_rect=window_rect,
63
+ )
@@ -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.models.yandex import YandexFlags
10
+ from osn_selenium.flags.yandex import YandexFlagsManager
11
+ from osn_selenium.dev_tools.settings import DevToolsSettings
12
+ from osn_selenium.webdrivers.trio_bidi.chrome import ChromeWebDriver
13
+ from osn_selenium.webdrivers.trio_bidi.yandex.base import YandexBaseMixin
14
+ from osn_selenium.abstract.webdriver.yandex import (
15
+ AbstractYandexWebDriver
16
+ )
17
+ from osn_selenium.webdrivers.trio_bidi.yandex.settings import YandexSettingsMixin
18
+ from osn_selenium.webdrivers.trio_bidi.yandex.lifecycle import YandexLifecycleMixin
19
+
20
+
21
+ __all__ = ["YandexWebDriver"]
22
+
23
+
24
+ class YandexWebDriver(
25
+ YandexBaseMixin,
26
+ YandexLifecycleMixin,
27
+ YandexSettingsMixin,
28
+ ChromeWebDriver,
29
+ AbstractYandexWebDriver,
30
+ ):
31
+ """
32
+ Concrete Yandex 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[YandexFlagsManager] = YandexFlagsManager,
42
+ use_browser_exe: bool = True,
43
+ browser_name_in_system: str = "Yandex",
44
+ browser_exe: Optional[PATH_TYPEHINT] = None,
45
+ flags: Optional[YandexFlags] = 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 Yandex WebDriver with specified configuration.
58
+
59
+ Args:
60
+ webdriver_path (str): Path to the YandexDriver executable.
61
+ flags_manager_type (Type[YandexFlagsManager]): The class type used for managing Yandex flags.
62
+ Defaults to YandexFlagsManager.
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 "Yandex".
67
+ browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Yandex browser executable.
68
+ flags (Optional[YandexFlags]): 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
+ ChromeWebDriver.__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
+ YandexBaseMixin.__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
+ )