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
@@ -1,10 +1,10 @@
1
- from osn_selenium.base_mixin import TrioThreadMixin
2
1
  from typing import (
3
2
  List,
4
3
  Literal,
5
4
  Optional,
6
5
  Union
7
6
  )
7
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
8
8
  from osn_selenium.models import (
9
9
  Position,
10
10
  Rectangle,
@@ -48,6 +48,9 @@ class CoreWindowMixin(UnifiedCoreWindowMixin, TrioThreadMixin, AbstractCoreWindo
48
48
  async def fullscreen_window(self) -> None:
49
49
  await self.sync_to_trio(sync_function=self._fullscreen_window_impl)()
50
50
 
51
+ async def get_orientation(self) -> Literal["LANDSCAPE", "PORTRAIT"]:
52
+ return await self.sync_to_trio(sync_function=self._orientation_get_impl)()
53
+
51
54
  async def get_window_handle(self, window: Optional[Union[str, int]] = None) -> str:
52
55
  return await self.sync_to_trio(sync_function=self._get_window_handle_impl)(window=window)
53
56
 
@@ -69,9 +72,6 @@ class CoreWindowMixin(UnifiedCoreWindowMixin, TrioThreadMixin, AbstractCoreWindo
69
72
  async def minimize_window(self) -> None:
70
73
  await self.sync_to_trio(sync_function=self._minimize_window_impl)()
71
74
 
72
- async def orientation(self) -> Literal["LANDSCAPE", "PORTRAIT"]:
73
- return await self.sync_to_trio(sync_function=self._orientation_get_impl)()
74
-
75
75
  async def set_orientation(self, value: Literal["LANDSCAPE", "PORTRAIT"]) -> None:
76
76
  await self.sync_to_trio(sync_function=self._orientation_set_impl)(value=value)
77
77
 
@@ -92,8 +92,8 @@ class CoreWindowMixin(UnifiedCoreWindowMixin, TrioThreadMixin, AbstractCoreWindo
92
92
  async def set_window_size(self, width: int, height: int, windowHandle: str = "current") -> None:
93
93
  await self.sync_to_trio(sync_function=self._set_window_size_impl)(width=width, height=height, windowHandle=windowHandle)
94
94
 
95
- async def switch_to(self) -> SwitchTo:
96
- legacy = await self.sync_to_trio(sync_function=self._switch_to_impl)()
95
+ def switch_to(self) -> SwitchTo:
96
+ legacy = self._switch_to_impl()
97
97
  return get_trio_thread_instance_wrapper(
98
98
  wrapper_class=SwitchTo,
99
99
  legacy_object=legacy,
@@ -1,6 +1,10 @@
1
1
  import trio
2
- from typing import Optional, Type
3
2
  from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
4
8
  from osn_selenium._typehints import PATH_TYPEHINT
5
9
  from osn_selenium.flags.edge import EdgeFlagsManager
6
10
  from osn_selenium.flags.models.edge import EdgeFlags
@@ -46,7 +50,32 @@ class EdgeWebDriver(
46
50
  window_rect: Optional[WindowRect] = None,
47
51
  devtools_settings: Optional[DevToolsSettings] = None,
48
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,
49
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
+
50
79
  BlinkWebDriver.__init__(
51
80
  self,
52
81
  browser_exe=browser_exe,
@@ -61,6 +90,8 @@ class EdgeWebDriver(
61
90
  window_rect=window_rect,
62
91
  devtools_settings=devtools_settings,
63
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,
64
95
  )
65
96
 
66
97
  EdgeBaseMixin.__init__(
@@ -78,4 +109,6 @@ class EdgeWebDriver(
78
109
  script_timeout=script_timeout,
79
110
  window_rect=window_rect,
80
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,
81
114
  )
@@ -1,6 +1,10 @@
1
1
  import trio
2
- from typing import Optional, Type
3
2
  from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
4
8
  from selenium.webdriver import Edge as legacyEdge
5
9
  from osn_selenium.flags.edge import EdgeFlagsManager
6
10
  from osn_selenium.flags.models.edge import EdgeFlags
@@ -42,9 +46,11 @@ class EdgeBaseMixin(UnifiedEdgeBaseMixin, BlinkBaseMixin, AbstractEdgeBaseMixin)
42
46
  script_timeout: int = 5,
43
47
  window_rect: Optional[WindowRect] = None,
44
48
  capacity_limiter: Optional[trio.CapacityLimiter] = None,
49
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
50
+ ignore_cdp_version_package_missing: bool = True,
45
51
  ):
46
52
  """
47
- Initializes the Trio-based Edge WebDriver mixin.
53
+ Initializes the Trio-based Edge WebDriver mixin with specified configuration.
48
54
 
49
55
  Args:
50
56
  webdriver_path (str): Path to the EdgeDriver executable.
@@ -63,6 +69,8 @@ class EdgeBaseMixin(UnifiedEdgeBaseMixin, BlinkBaseMixin, AbstractEdgeBaseMixin)
63
69
  script_timeout (int): Default script timeout.
64
70
  window_rect (Optional[WindowRect]): Initial window dimensions.
65
71
  capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
72
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
73
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
66
74
  """
67
75
 
68
76
  BlinkBaseMixin.__init__(
@@ -80,6 +88,8 @@ class EdgeBaseMixin(UnifiedEdgeBaseMixin, BlinkBaseMixin, AbstractEdgeBaseMixin)
80
88
  script_timeout=script_timeout,
81
89
  window_rect=window_rect,
82
90
  capacity_limiter=capacity_limiter,
91
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
92
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
83
93
  )
84
94
 
85
95
  UnifiedEdgeBaseMixin.__init__(
@@ -96,6 +106,8 @@ class EdgeBaseMixin(UnifiedEdgeBaseMixin, BlinkBaseMixin, AbstractEdgeBaseMixin)
96
106
  page_load_timeout=page_load_timeout,
97
107
  script_timeout=script_timeout,
98
108
  window_rect=window_rect,
109
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
110
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
99
111
  )
100
112
 
101
113
  @property
@@ -2,7 +2,7 @@ from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
3
  from osn_selenium._typehints import PATH_TYPEHINT
4
4
  from osn_selenium.flags.models.edge import EdgeFlags
5
- from osn_selenium.webdrivers.trio_threads.blink import BlinkLifecycleMixin
5
+ from osn_selenium.webdrivers.trio_threads.blink.lifecycle import BlinkLifecycleMixin
6
6
  from osn_selenium.webdrivers.unified.edge.lifecycle import (
7
7
  UnifiedEdgeLifecycleMixin
8
8
  )
@@ -26,7 +26,7 @@ class EdgeLifecycleMixin(
26
26
  underlying browser instance, ensuring clean session management.
27
27
  """
28
28
 
29
- async def restart_webdriver(
29
+ async def start_webdriver(
30
30
  self,
31
31
  flags: Optional[EdgeFlags] = None,
32
32
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -35,7 +35,7 @@ class EdgeLifecycleMixin(
35
35
  start_page_url: Optional[str] = None,
36
36
  window_rect: Optional[WindowRect] = None,
37
37
  ) -> None:
38
- await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
38
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
39
39
  flags=flags,
40
40
  browser_exe=browser_exe,
41
41
  browser_name_in_system=browser_name_in_system,
@@ -44,7 +44,7 @@ class EdgeLifecycleMixin(
44
44
  window_rect=window_rect,
45
45
  )
46
46
 
47
- async def start_webdriver(
47
+ async def __aenter__(
48
48
  self,
49
49
  flags: Optional[EdgeFlags] = None,
50
50
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -53,7 +53,25 @@ class EdgeLifecycleMixin(
53
53
  start_page_url: Optional[str] = None,
54
54
  window_rect: Optional[WindowRect] = None,
55
55
  ) -> None:
56
- await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
56
+ await self.start_webdriver(
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
+ )
64
+
65
+ async def restart_webdriver(
66
+ self,
67
+ flags: Optional[EdgeFlags] = None,
68
+ browser_exe: Optional[PATH_TYPEHINT] = None,
69
+ browser_name_in_system: Optional[str] = None,
70
+ use_browser_exe: Optional[bool] = None,
71
+ start_page_url: Optional[str] = None,
72
+ window_rect: Optional[WindowRect] = None,
73
+ ) -> None:
74
+ await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
57
75
  flags=flags,
58
76
  browser_exe=browser_exe,
59
77
  browser_name_in_system=browser_name_in_system,
@@ -2,7 +2,7 @@ from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
3
  from osn_selenium._typehints import PATH_TYPEHINT
4
4
  from osn_selenium.flags.models.edge import EdgeFlags
5
- from osn_selenium.webdrivers.trio_threads.blink import BlinkSettingsMixin
5
+ from osn_selenium.webdrivers.trio_threads.blink.settings import BlinkSettingsMixin
6
6
  from osn_selenium.webdrivers.unified.edge.settings import (
7
7
  UnifiedEdgeSettingsMixin
8
8
  )
@@ -1,6 +1,10 @@
1
1
  import trio
2
- from typing import Optional, Type
3
2
  from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
4
8
  from osn_selenium._typehints import PATH_TYPEHINT
5
9
  from osn_selenium.flags.models.yandex import YandexFlags
6
10
  from osn_selenium.flags.yandex import YandexFlagsManager
@@ -46,7 +50,32 @@ class YandexWebDriver(
46
50
  window_rect: Optional[WindowRect] = None,
47
51
  devtools_settings: Optional[DevToolsSettings] = None,
48
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,
49
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
+
50
79
  ChromeWebDriver.__init__(
51
80
  self,
52
81
  browser_exe=browser_exe,
@@ -61,6 +90,8 @@ class YandexWebDriver(
61
90
  window_rect=window_rect,
62
91
  devtools_settings=devtools_settings,
63
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,
64
95
  )
65
96
 
66
97
  YandexBaseMixin.__init__(
@@ -78,4 +109,6 @@ class YandexWebDriver(
78
109
  script_timeout=script_timeout,
79
110
  window_rect=window_rect,
80
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,
81
114
  )
@@ -1,6 +1,10 @@
1
1
  import trio
2
- from typing import Optional, Type
3
2
  from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
4
8
  from osn_selenium.flags.models.yandex import YandexFlags
5
9
  from osn_selenium.flags.yandex import YandexFlagsManager
6
10
  from osn_selenium.webdrivers.trio_threads.chrome.base import ChromeBaseMixin
@@ -43,9 +47,11 @@ class YandexBaseMixin(UnifiedYandexBaseMixin, ChromeBaseMixin, AbstractYandexBas
43
47
  script_timeout: int = 5,
44
48
  window_rect: Optional[WindowRect] = None,
45
49
  capacity_limiter: Optional[trio.CapacityLimiter] = None,
50
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
51
+ ignore_cdp_version_package_missing: bool = True,
46
52
  ):
47
53
  """
48
- Initializes the Trio-based Yandex WebDriver mixin.
54
+ Initializes the Trio-based Yandex WebDriver mixin with specified configuration.
49
55
 
50
56
  Args:
51
57
  webdriver_path (str): Path to the YandexDriver executable.
@@ -64,6 +70,8 @@ class YandexBaseMixin(UnifiedYandexBaseMixin, ChromeBaseMixin, AbstractYandexBas
64
70
  script_timeout (int): Default script timeout.
65
71
  window_rect (Optional[WindowRect]): Initial window dimensions.
66
72
  capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
73
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
74
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
67
75
  """
68
76
 
69
77
  ChromeBaseMixin.__init__(
@@ -81,6 +89,8 @@ class YandexBaseMixin(UnifiedYandexBaseMixin, ChromeBaseMixin, AbstractYandexBas
81
89
  script_timeout=script_timeout,
82
90
  window_rect=window_rect,
83
91
  capacity_limiter=capacity_limiter,
92
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
93
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
84
94
  )
85
95
 
86
96
  UnifiedYandexBaseMixin.__init__(
@@ -97,4 +107,6 @@ class YandexBaseMixin(UnifiedYandexBaseMixin, ChromeBaseMixin, AbstractYandexBas
97
107
  page_load_timeout=page_load_timeout,
98
108
  script_timeout=script_timeout,
99
109
  window_rect=window_rect,
110
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
111
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
100
112
  )
@@ -2,7 +2,7 @@ from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
3
  from osn_selenium._typehints import PATH_TYPEHINT
4
4
  from osn_selenium.flags.models.yandex import YandexFlags
5
- from osn_selenium.webdrivers.trio_threads.chrome import ChromeLifecycleMixin
5
+ from osn_selenium.webdrivers.trio_threads.chrome.lifecycle import ChromeLifecycleMixin
6
6
  from osn_selenium.webdrivers.unified.yandex.lifecycle import (
7
7
  UnifiedYandexLifecycleMixin
8
8
  )
@@ -26,7 +26,7 @@ class YandexLifecycleMixin(
26
26
  underlying browser instance, ensuring clean session management.
27
27
  """
28
28
 
29
- async def restart_webdriver(
29
+ async def start_webdriver(
30
30
  self,
31
31
  flags: Optional[YandexFlags] = None,
32
32
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -35,7 +35,7 @@ class YandexLifecycleMixin(
35
35
  start_page_url: Optional[str] = None,
36
36
  window_rect: Optional[WindowRect] = None,
37
37
  ) -> None:
38
- await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
38
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
39
39
  flags=flags,
40
40
  browser_exe=browser_exe,
41
41
  browser_name_in_system=browser_name_in_system,
@@ -44,7 +44,7 @@ class YandexLifecycleMixin(
44
44
  window_rect=window_rect,
45
45
  )
46
46
 
47
- async def start_webdriver(
47
+ async def __aenter__(
48
48
  self,
49
49
  flags: Optional[YandexFlags] = None,
50
50
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -53,7 +53,25 @@ class YandexLifecycleMixin(
53
53
  start_page_url: Optional[str] = None,
54
54
  window_rect: Optional[WindowRect] = None,
55
55
  ) -> None:
56
- await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
56
+ await self.start_webdriver(
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
+ )
64
+
65
+ async def restart_webdriver(
66
+ self,
67
+ flags: Optional[YandexFlags] = None,
68
+ browser_exe: Optional[PATH_TYPEHINT] = None,
69
+ browser_name_in_system: Optional[str] = None,
70
+ use_browser_exe: Optional[bool] = None,
71
+ start_page_url: Optional[str] = None,
72
+ window_rect: Optional[WindowRect] = None,
73
+ ) -> None:
74
+ await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
57
75
  flags=flags,
58
76
  browser_exe=browser_exe,
59
77
  browser_name_in_system=browser_name_in_system,
@@ -2,7 +2,7 @@ from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
3
  from osn_selenium._typehints import PATH_TYPEHINT
4
4
  from osn_selenium.flags.models.yandex import YandexFlags
5
- from osn_selenium.webdrivers.trio_threads.chrome import ChromeSettingsMixin
5
+ from osn_selenium.webdrivers.trio_threads.chrome.settings import ChromeSettingsMixin
6
6
  from osn_selenium.webdrivers.unified.yandex.settings import (
7
7
  UnifiedYandexSettingsMixin
8
8
  )
@@ -1,6 +1,10 @@
1
1
  import pathlib
2
- from typing import Optional, Type
3
2
  from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
4
8
  from osn_selenium.flags.blink import BlinkFlagsManager
5
9
  from osn_selenium.flags.models.values import ArgumentValue
6
10
  from osn_selenium.browsers_handler import get_path_to_browser
@@ -44,6 +48,8 @@ class UnifiedBlinkBaseMixin(UnifiedCoreBaseMixin):
44
48
  page_load_timeout: int = 5,
45
49
  script_timeout: int = 5,
46
50
  window_rect: Optional[WindowRect] = None,
51
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
52
+ ignore_cdp_version_package_missing: bool = True,
47
53
  ):
48
54
  UnifiedCoreBaseMixin.__init__(
49
55
  self,
@@ -55,6 +61,8 @@ class UnifiedBlinkBaseMixin(UnifiedCoreBaseMixin):
55
61
  page_load_timeout=page_load_timeout,
56
62
  script_timeout=script_timeout,
57
63
  window_rect=window_rect,
64
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
65
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
58
66
  )
59
67
 
60
68
  if browser_exe is not None:
@@ -73,7 +73,7 @@ class UnifiedBlinkLifecycleMixin(UnifiedBlinkSettingsMixin, UnifiedCoreLifecycle
73
73
  self._create_driver_impl()
74
74
  self._is_active = True
75
75
 
76
- def _close_webdriver_impl(self) -> None:
76
+ def _stop_webdriver_impl(self) -> None:
77
77
  if self._browser_exe_impl is not None:
78
78
  debugging_port = self._debugging_port_impl
79
79
  pids_with_ports = get_localhost_pids_with_ports()
@@ -83,8 +83,10 @@ class UnifiedBlinkLifecycleMixin(UnifiedBlinkSettingsMixin, UnifiedCoreLifecycle
83
83
  kill_process_by_pid(pid=pid, force=True)
84
84
 
85
85
  is_active = self._check_browser_exe_active_impl()
86
+
86
87
  while is_active:
87
88
  is_active = self._check_browser_exe_active_impl()
89
+
88
90
  if is_active:
89
91
  time.sleep(0.05)
90
92
 
@@ -103,7 +105,7 @@ class UnifiedBlinkLifecycleMixin(UnifiedBlinkSettingsMixin, UnifiedCoreLifecycle
103
105
  start_page_url: Optional[str] = None,
104
106
  window_rect: Optional[WindowRect] = None,
105
107
  ) -> None:
106
- self._close_webdriver_impl()
108
+ self._stop_webdriver_impl()
107
109
  self._start_webdriver_impl(
108
110
  flags=flags,
109
111
  browser_exe=browser_exe,
@@ -1,5 +1,9 @@
1
- from typing import Optional, Type
2
1
  from osn_selenium.models import WindowRect
2
+ from typing import (
3
+ Mapping,
4
+ Optional,
5
+ Type
6
+ )
3
7
  from osn_selenium.flags.chrome import ChromeFlagsManager
4
8
  from osn_selenium.flags.models.chrome import ChromeFlags
5
9
  from selenium.webdriver import (
@@ -32,6 +36,8 @@ class UnifiedChromeBaseMixin(UnifiedBlinkBaseMixin):
32
36
  page_load_timeout: int = 5,
33
37
  script_timeout: int = 5,
34
38
  window_rect: Optional[WindowRect] = None,
39
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
40
+ ignore_cdp_version_package_missing: bool = True,
35
41
  ):
36
42
  UnifiedBlinkBaseMixin.__init__(
37
43
  self,
@@ -47,6 +53,8 @@ class UnifiedChromeBaseMixin(UnifiedBlinkBaseMixin):
47
53
  page_load_timeout=page_load_timeout,
48
54
  script_timeout=script_timeout,
49
55
  window_rect=window_rect,
56
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
57
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
50
58
  )
51
59
 
52
60
  @property
@@ -1,9 +1,11 @@
1
+ from selenium.webdriver.remote.fedcm import FedCM
1
2
  from typing import (
2
3
  Any,
3
4
  List,
4
5
  Optional,
5
6
  Union
6
7
  )
8
+ from selenium.webdriver.common.fedcm.dialog import Dialog
7
9
  from osn_selenium.webdrivers._decorators import requires_driver
8
10
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
9
11
  from selenium.webdriver.common.virtual_authenticator import (
@@ -30,7 +32,7 @@ class UnifiedCoreAuthMixin(UnifiedCoreBaseMixin):
30
32
  timeout: int = 5,
31
33
  poll_frequency: float = 0.5,
32
34
  ignored_exceptions: Any = None,
33
- ) -> Any:
35
+ ) -> Dialog:
34
36
  return self._driver_impl.fedcm_dialog(
35
37
  timeout=timeout,
36
38
  poll_frequency=poll_frequency,
@@ -38,7 +40,7 @@ class UnifiedCoreAuthMixin(UnifiedCoreBaseMixin):
38
40
  )
39
41
 
40
42
  @requires_driver
41
- def _fedcm_impl(self) -> Any:
43
+ def _fedcm_impl(self) -> FedCM:
42
44
  return self._driver_impl.fedcm
43
45
 
44
46
  @requires_driver
@@ -1,16 +1,15 @@
1
1
  from osn_selenium.models import WindowRect
2
+ from osn_selenium._cdp_import import install_cdp_hook
3
+ from osn_selenium.flags.base import BrowserFlagsManager
4
+ from osn_selenium.flags.models.base import BrowserFlags
5
+ from selenium.webdriver.common.bidi.session import Session
2
6
  from typing import (
3
7
  Any,
4
8
  Dict,
9
+ Mapping,
5
10
  Optional,
6
11
  Type
7
12
  )
8
- from osn_selenium.flags.base import BrowserFlagsManager
9
- from osn_selenium.flags.models.base import BrowserFlags
10
- from selenium.webdriver.common.bidi.session import Session
11
- from osn_selenium._typehints import (
12
- ARCHITECTURES_TYPEHINT
13
- )
14
13
  from selenium.webdriver.remote.errorhandler import ErrorHandler
15
14
  from osn_selenium.webdrivers._decorators import requires_driver
16
15
  from selenium.webdriver.remote.locator_converter import LocatorConverter
@@ -18,6 +17,10 @@ from selenium.webdriver.remote.remote_connection import RemoteConnection
18
17
  from osn_selenium.exceptions.webdriver import (
19
18
  WebDriverNotStartedError
20
19
  )
20
+ from osn_selenium._typehints import (
21
+ ARCHITECTURES_TYPEHINT,
22
+ PATH_TYPEHINT
23
+ )
21
24
  from selenium.webdriver.remote.webdriver import (
22
25
  WebDriver as legacyWebDriver
23
26
  )
@@ -37,6 +40,8 @@ class UnifiedCoreBaseMixin:
37
40
  page_load_timeout: int = 5,
38
41
  script_timeout: int = 5,
39
42
  window_rect: Optional[WindowRect] = None,
43
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
44
+ ignore_cdp_version_package_missing: bool = True,
40
45
  ) -> None:
41
46
  self._window_rect = window_rect
42
47
  self._webdriver_path = webdriver_path
@@ -50,6 +55,14 @@ class UnifiedCoreBaseMixin:
50
55
 
51
56
  if flags is not None:
52
57
  self._webdriver_flags_manager.update_flags(flags)
58
+
59
+ if not getattr(self, "cdp_hook_installed", False):
60
+ install_cdp_hook(
61
+ cdp_paths=cdp_versioned_packages_paths,
62
+ ignore_package_missing=ignore_cdp_version_package_missing
63
+ )
64
+
65
+ setattr(self, "cdp_hook_installed", True)
53
66
 
54
67
  @property
55
68
  def _architecture_impl(self) -> ARCHITECTURES_TYPEHINT:
@@ -1,5 +1,6 @@
1
- from typing import Any, Optional
1
+ from typing import Optional
2
2
  from osn_selenium.webdrivers._decorators import requires_driver
3
+ from selenium.webdriver.common.print_page_options import PrintOptions
3
4
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
4
5
 
5
6
 
@@ -24,7 +25,7 @@ class UnifiedCoreCaptureMixin(UnifiedCoreBaseMixin):
24
25
  return self._driver_impl.page_source
25
26
 
26
27
  @requires_driver
27
- def _print_page_impl(self, print_options: Optional[Any] = None) -> str:
28
+ def _print_page_impl(self, print_options: Optional[PrintOptions] = None) -> str:
28
29
  return self._driver_impl.print_page(print_options=print_options)
29
30
 
30
31
  @requires_driver
@@ -1,6 +1,11 @@
1
- from typing import Any
1
+ from selenium.webdriver.remote.mobile import Mobile
2
+ from selenium.webdriver.common.fedcm.dialog import Dialog
3
+ from selenium.webdriver.common.bidi.browser import Browser
2
4
  from osn_selenium.webdrivers._decorators import requires_driver
5
+ from selenium.webdriver.common.bidi.permissions import Permissions
6
+ from selenium.webdriver.common.bidi.webextension import WebExtension
3
7
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
8
+ from selenium.webdriver.common.bidi.browsing_context import BrowsingContext
4
9
 
5
10
 
6
11
  __all__ = ["UnifiedCoreComponentsMixin"]
@@ -8,25 +13,25 @@ __all__ = ["UnifiedCoreComponentsMixin"]
8
13
 
9
14
  class UnifiedCoreComponentsMixin(UnifiedCoreBaseMixin):
10
15
  @requires_driver
11
- def _browser_impl(self) -> Any:
16
+ def _browser_impl(self) -> Browser:
12
17
  return self._driver_impl.browser
13
18
 
14
19
  @requires_driver
15
- def _browsing_context_impl(self) -> Any:
20
+ def _browsing_context_impl(self) -> BrowsingContext:
16
21
  return self._driver_impl.browsing_context
17
22
 
18
23
  @requires_driver
19
- def _dialog_impl(self) -> Any:
24
+ def _dialog_impl(self) -> Dialog:
20
25
  return self._driver_impl.dialog
21
26
 
22
27
  @requires_driver
23
- def _mobile_impl(self) -> Any:
28
+ def _mobile_impl(self) -> Mobile:
24
29
  return self._driver_impl.mobile
25
30
 
26
31
  @requires_driver
27
- def _permissions_impl(self) -> Any:
32
+ def _permissions_impl(self) -> Permissions:
28
33
  return self._driver_impl.permissions
29
34
 
30
35
  @requires_driver
31
- def _webextension_impl(self) -> Any:
36
+ def _webextension_impl(self) -> WebExtension:
32
37
  return self._driver_impl.webextension
@@ -1,4 +1,5 @@
1
1
  from contextlib import asynccontextmanager
2
+ from selenium.webdriver.common.bidi.network import Network
2
3
  from typing import (
3
4
  Any,
4
5
  AsyncGenerator,
@@ -27,7 +28,7 @@ class UnifiedCoreDevToolsMixin(UnifiedCoreBaseMixin):
27
28
  return self._driver_impl.execute_cdp_cmd(cmd=cmd, cmd_args=build_cdp_kwargs(**cmd_args))
28
29
 
29
30
  @requires_driver
30
- def _network_impl(self) -> Any:
31
+ def _network_impl(self) -> Network:
31
32
  return self._driver_impl.network
32
33
 
33
34
  @requires_driver