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,120 @@
1
+ import math
2
+ import trio
3
+ from osn_selenium.models import WindowRect
4
+ from osn_selenium.flags.models.yandex import YandexFlags
5
+ from osn_selenium.flags.yandex import YandexFlagsManager
6
+ from typing import (
7
+ Mapping,
8
+ Optional,
9
+ Type,
10
+ Union
11
+ )
12
+ from osn_selenium.webdrivers.trio_bidi.chrome.base import ChromeBaseMixin
13
+ from osn_selenium._typehints import (
14
+ ARCHITECTURES_TYPEHINT,
15
+ PATH_TYPEHINT
16
+ )
17
+ from osn_selenium.webdrivers.unified.yandex.base import (
18
+ UnifiedYandexBaseMixin
19
+ )
20
+ from osn_selenium.abstract.webdriver.yandex.base import (
21
+ AbstractYandexBaseMixin
22
+ )
23
+
24
+
25
+ __all__ = ["YandexBaseMixin"]
26
+
27
+
28
+ class YandexBaseMixin(UnifiedYandexBaseMixin, ChromeBaseMixin, AbstractYandexBaseMixin):
29
+ """
30
+ Base mixin for Yandex WebDrivers handling core initialization and state management.
31
+
32
+ This class serves as the foundation for browser-specific implementations, managing
33
+ the WebDriver executable path, configuration flags, timeouts, and the active
34
+ driver instance.
35
+ """
36
+
37
+ def __init__(
38
+ self,
39
+ webdriver_path: str,
40
+ architecture: ARCHITECTURES_TYPEHINT,
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
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
52
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
53
+ ignore_cdp_version_package_missing: bool = True,
54
+ trio_token: Optional[trio.lowlevel.TrioToken] = None,
55
+ bidi_buffer_size: Union[int, float] = math.inf,
56
+ ):
57
+ """
58
+ Initializes the Trio-based Yandex WebDriver mixin with specified configuration.
59
+
60
+ Args:
61
+ webdriver_path (str): Path to the YandexDriver executable.
62
+ architecture (ARCHITECTURE_TYPEHINT): System architecture.
63
+ flags_manager_type (Type[YandexFlagsManager]): The class type used for managing Yandex flags.
64
+ Defaults to YandexFlagsManager.
65
+ use_browser_exe (bool): Whether to use a specific browser executable path or auto-detect.
66
+ Defaults to True.
67
+ browser_name_in_system (str): The name of the browser in the system registry or path.
68
+ Defaults to "Yandex".
69
+ browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Yandex browser executable.
70
+ flags (Optional[YandexFlags]): Initial set of flags.
71
+ start_page_url (str): The initial URL. Defaults to "about:blank".
72
+ implicitly_wait (int): Default implicit wait time.
73
+ page_load_timeout (int): Default page load timeout.
74
+ script_timeout (int): Default script timeout.
75
+ window_rect (Optional[WindowRect]): Initial window dimensions.
76
+ capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
77
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
78
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
79
+ trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
80
+ bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
81
+ """
82
+
83
+ ChromeBaseMixin.__init__(
84
+ self,
85
+ browser_exe=browser_exe,
86
+ browser_name_in_system=browser_name_in_system,
87
+ use_browser_exe=use_browser_exe,
88
+ webdriver_path=webdriver_path,
89
+ architecture=architecture,
90
+ flags_manager_type=flags_manager_type,
91
+ flags=flags,
92
+ start_page_url=start_page_url,
93
+ implicitly_wait=implicitly_wait,
94
+ page_load_timeout=page_load_timeout,
95
+ script_timeout=script_timeout,
96
+ window_rect=window_rect,
97
+ capacity_limiter=capacity_limiter,
98
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
99
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
100
+ trio_token=trio_token,
101
+ bidi_buffer_size=bidi_buffer_size,
102
+ )
103
+
104
+ UnifiedYandexBaseMixin.__init__(
105
+ self,
106
+ webdriver_path=webdriver_path,
107
+ architecture=architecture,
108
+ flags_manager_type=flags_manager_type,
109
+ use_browser_exe=use_browser_exe,
110
+ browser_name_in_system=browser_name_in_system,
111
+ browser_exe=browser_exe,
112
+ flags=flags,
113
+ start_page_url=start_page_url,
114
+ implicitly_wait=implicitly_wait,
115
+ page_load_timeout=page_load_timeout,
116
+ script_timeout=script_timeout,
117
+ window_rect=window_rect,
118
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
119
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
120
+ )
@@ -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.yandex import YandexFlags
5
+ from osn_selenium.webdrivers.trio_bidi.chrome.lifecycle import ChromeLifecycleMixin
6
+ from osn_selenium.webdrivers.unified.yandex.lifecycle import (
7
+ UnifiedYandexLifecycleMixin
8
+ )
9
+ from osn_selenium.abstract.webdriver.yandex.lifecycle import (
10
+ AbstractYandexLifecycleMixin
11
+ )
12
+
13
+
14
+ __all__ = ["YandexLifecycleMixin"]
15
+
16
+
17
+ class YandexLifecycleMixin(
18
+ UnifiedYandexLifecycleMixin,
19
+ ChromeLifecycleMixin,
20
+ AbstractYandexLifecycleMixin
21
+ ):
22
+ """
23
+ Mixin for managing the lifecycle of the Yandex 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[YandexFlags] = 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[YandexFlags] = 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[YandexFlags] = 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.yandex import YandexFlags
5
+ from osn_selenium.webdrivers.trio_bidi.chrome.settings import ChromeSettingsMixin
6
+ from osn_selenium.webdrivers.unified.yandex.settings import (
7
+ UnifiedYandexSettingsMixin
8
+ )
9
+ from osn_selenium.abstract.webdriver.yandex.settings import (
10
+ AbstractYandexSettingsMixin
11
+ )
12
+
13
+
14
+ __all__ = ["YandexSettingsMixin"]
15
+
16
+
17
+ class YandexSettingsMixin(
18
+ UnifiedYandexSettingsMixin,
19
+ ChromeSettingsMixin,
20
+ AbstractYandexSettingsMixin
21
+ ):
22
+ """
23
+ Mixin for configuring and updating settings of the Yandex 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[YandexFlags] = 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[YandexFlags] = 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
+ )
@@ -6,6 +6,7 @@ from typing import (
6
6
  Type
7
7
  )
8
8
  from osn_selenium._typehints import PATH_TYPEHINT
9
+ from osn_selenium.dev_tools.manager import DevTools
9
10
  from osn_selenium.flags.blink import BlinkFlagsManager
10
11
  from osn_selenium.flags.models.blink import BlinkFlags
11
12
  from osn_selenium.dev_tools.settings import DevToolsSettings
@@ -108,7 +109,6 @@ class BlinkWebDriver(
108
109
  page_load_timeout=page_load_timeout,
109
110
  script_timeout=script_timeout,
110
111
  window_rect=window_rect,
111
- devtools_settings=devtools_settings,
112
112
  capacity_limiter=capacity_limiter,
113
113
  cdp_versioned_packages_paths=cdp_versioned_packages_paths,
114
114
  ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
@@ -132,3 +132,9 @@ class BlinkWebDriver(
132
132
  cdp_versioned_packages_paths=cdp_versioned_packages_paths,
133
133
  ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
134
134
  )
135
+
136
+ self._devtools = DevTools(parent_webdriver=self, devtools_settings=devtools_settings)
137
+
138
+ @property
139
+ def devtools(self) -> DevTools:
140
+ return self._devtools
@@ -8,7 +8,11 @@ from typing import (
8
8
  )
9
9
  from osn_selenium.flags.blink import BlinkFlagsManager
10
10
  from osn_selenium.flags.models.blink import BlinkFlags
11
+ from osn_selenium.executors.trio_threads.cdp import CDPExecutor
11
12
  from osn_selenium.webdrivers.trio_threads.core.base import CoreBaseMixin
13
+ from osn_selenium.webdrivers._bridges import (
14
+ get_cdp_executor_bridge
15
+ )
12
16
  from osn_selenium._typehints import (
13
17
  ARCHITECTURES_TYPEHINT,
14
18
  PATH_TYPEHINT
@@ -122,11 +126,21 @@ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixi
122
126
  script_timeout=script_timeout,
123
127
  window_rect=window_rect,
124
128
  )
129
+
130
+ self._cdp_executor = CDPExecutor(
131
+ execute_function=get_cdp_executor_bridge(self),
132
+ lock=self._lock,
133
+ limiter=self._capacity_limiter,
134
+ )
125
135
 
126
136
  @property
127
137
  def browser_exe(self) -> Optional[pathlib.Path]:
128
138
  return self._browser_exe_impl
129
139
 
140
+ @property
141
+ def cdp(self) -> CDPExecutor:
142
+ return self._cdp_executor
143
+
130
144
  @property
131
145
  def debugging_ip(self) -> Optional[str]:
132
146
  return self._debugging_ip_impl
@@ -26,10 +26,7 @@ class BlinkLifecycleMixin(
26
26
  underlying browser instance, ensuring clean session management.
27
27
  """
28
28
 
29
- async def close_webdriver(self) -> None:
30
- await self.sync_to_trio(sync_function=self._close_webdriver_impl)()
31
-
32
- async def restart_webdriver(
29
+ async def start_webdriver(
33
30
  self,
34
31
  flags: Optional[BlinkFlags] = None,
35
32
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -38,16 +35,16 @@ class BlinkLifecycleMixin(
38
35
  start_page_url: Optional[str] = None,
39
36
  window_rect: Optional[WindowRect] = None,
40
37
  ) -> None:
41
- await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
38
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
42
39
  flags=flags,
43
40
  browser_exe=browser_exe,
44
41
  browser_name_in_system=browser_name_in_system,
45
42
  use_browser_exe=use_browser_exe,
46
43
  start_page_url=start_page_url,
47
- window_rect=window_rect
44
+ window_rect=window_rect,
48
45
  )
49
46
 
50
- async def start_webdriver(
47
+ async def __aenter__(
51
48
  self,
52
49
  flags: Optional[BlinkFlags] = None,
53
50
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -56,7 +53,7 @@ class BlinkLifecycleMixin(
56
53
  start_page_url: Optional[str] = None,
57
54
  window_rect: Optional[WindowRect] = None,
58
55
  ) -> None:
59
- await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
56
+ await self.start_webdriver(
60
57
  flags=flags,
61
58
  browser_exe=browser_exe,
62
59
  browser_name_in_system=browser_name_in_system,
@@ -64,3 +61,24 @@ class BlinkLifecycleMixin(
64
61
  start_page_url=start_page_url,
65
62
  window_rect=window_rect,
66
63
  )
64
+
65
+ async def restart_webdriver(
66
+ self,
67
+ flags: Optional[BlinkFlags] = 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)(
75
+ flags=flags,
76
+ browser_exe=browser_exe,
77
+ browser_name_in_system=browser_name_in_system,
78
+ use_browser_exe=use_browser_exe,
79
+ start_page_url=start_page_url,
80
+ window_rect=window_rect
81
+ )
82
+
83
+ async def stop_webdriver(self) -> None:
84
+ await self.sync_to_trio(sync_function=self._stop_webdriver_impl)()
@@ -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.chrome import ChromeFlags
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.chrome.lifecycle import (
7
7
  UnifiedChromeLifecycleMixin
8
8
  )
@@ -26,7 +26,7 @@ class ChromeLifecycleMixin(
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[ChromeFlags] = None,
32
32
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -35,7 +35,7 @@ class ChromeLifecycleMixin(
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 ChromeLifecycleMixin(
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[ChromeFlags] = None,
50
50
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -53,7 +53,25 @@ class ChromeLifecycleMixin(
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[ChromeFlags] = 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.chrome import ChromeFlags
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.chrome.settings import (
7
7
  UnifiedChromeSettingsMixin
8
8
  )
@@ -6,10 +6,8 @@ from typing import (
6
6
  Type
7
7
  )
8
8
  from osn_selenium._typehints import PATH_TYPEHINT
9
- from osn_selenium.dev_tools.manager import DevTools
10
9
  from osn_selenium.flags.base import BrowserFlagsManager
11
10
  from osn_selenium.flags.models.base import BrowserFlags
12
- from osn_selenium.dev_tools.settings import DevToolsSettings
13
11
  from osn_selenium.webdrivers.trio_threads.core.auth import CoreAuthMixin
14
12
  from osn_selenium.webdrivers.trio_threads.core.base import CoreBaseMixin
15
13
  from osn_selenium.webdrivers.trio_threads.core.file import CoreFileMixin
@@ -67,7 +65,6 @@ class CoreWebDriver(
67
65
  page_load_timeout: int = 5,
68
66
  script_timeout: int = 5,
69
67
  window_rect: Optional[WindowRect] = None,
70
- devtools_settings: Optional[DevToolsSettings] = None,
71
68
  capacity_limiter: Optional[trio.CapacityLimiter] = None,
72
69
  cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
73
70
  ignore_cdp_version_package_missing: bool = True,
@@ -89,7 +86,6 @@ class CoreWebDriver(
89
86
  asynchronous script to finish execution. Defaults to 5.
90
87
  window_rect (Optional[WindowRect]): The initial size and position of the
91
88
  browser window. Defaults to None.
92
- devtools_settings (Optional[DevToolsSettings]): Configuration for Chrome DevTools Protocol.
93
89
  capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
94
90
  throttle concurrent thread-based operations. Defaults to None.
95
91
  """
@@ -107,9 +103,3 @@ class CoreWebDriver(
107
103
  cdp_versioned_packages_paths=cdp_versioned_packages_paths,
108
104
  ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
109
105
  )
110
-
111
- self._devtools = DevTools(parent_webdriver=self, devtools_settings=devtools_settings)
112
-
113
- @property
114
- def devtools(self) -> DevTools:
115
- return self._devtools
@@ -3,8 +3,8 @@ from typing import (
3
3
  List,
4
4
  Optional
5
5
  )
6
- from osn_selenium.trio_threads_mixin import TrioThreadMixin
7
6
  from osn_selenium._typehints import DEVICES_TYPEHINT
7
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
8
8
  from osn_selenium.webdrivers._bridges import (
9
9
  get_js_executor_bridge
10
10
  )
@@ -1,10 +1,10 @@
1
- from osn_selenium.trio_threads_mixin import TrioThreadMixin
2
1
  from typing import (
3
2
  Any,
4
3
  List,
5
4
  Optional,
6
5
  Union
7
6
  )
7
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
8
8
  from osn_selenium.instances.trio_threads.fedcm import FedCM
9
9
  from osn_selenium.instances.trio_threads.dialog import Dialog
10
10
  from osn_selenium.webdrivers.unified.core.auth import UnifiedCoreAuthMixin
@@ -1,9 +1,9 @@
1
1
  import trio
2
2
  from osn_selenium.models import WindowRect
3
- from osn_selenium.trio_threads_mixin import TrioThreadMixin
4
3
  from osn_selenium.flags.base import BrowserFlagsManager
5
4
  from osn_selenium.flags.models.base import BrowserFlags
6
5
  from selenium.webdriver.common.bidi.session import Session
6
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
7
7
  from typing import (
8
8
  Any,
9
9
  Dict,
@@ -12,10 +12,12 @@ from typing import (
12
12
  Type
13
13
  )
14
14
  from selenium.webdriver.remote.errorhandler import ErrorHandler
15
- from osn_selenium.executors.trio_threads.cdp import CDPExecutor
16
15
  from osn_selenium.executors.trio_threads.javascript import JSExecutor
17
16
  from selenium.webdriver.remote.locator_converter import LocatorConverter
18
17
  from selenium.webdriver.remote.remote_connection import RemoteConnection
18
+ from osn_selenium.webdrivers._bridges import (
19
+ get_js_executor_bridge
20
+ )
19
21
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
20
22
  from osn_selenium._typehints import (
21
23
  ARCHITECTURES_TYPEHINT,
@@ -27,10 +29,6 @@ from osn_selenium.abstract.webdriver.core.base import (
27
29
  from selenium.webdriver.remote.webdriver import (
28
30
  WebDriver as legacyWebDriver
29
31
  )
30
- from osn_selenium.webdrivers._bridges import (
31
- get_cdp_executor_bridge,
32
- get_js_executor_bridge
33
- )
34
32
 
35
33
 
36
34
  __all__ = ["CoreBaseMixin"]
@@ -104,12 +102,6 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
104
102
  else trio.CapacityLimiter(100),
105
103
  )
106
104
 
107
- self._cdp_executor = CDPExecutor(
108
- execute_function=get_cdp_executor_bridge(self),
109
- lock=self._lock,
110
- limiter=self._capacity_limiter,
111
- )
112
-
113
105
  self._js_executor = JSExecutor(
114
106
  execute_function=get_js_executor_bridge(self),
115
107
  lock=self._lock,
@@ -132,10 +124,6 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
132
124
  def caps(self, value: Dict[str, Any]) -> None:
133
125
  self._caps_set_impl(value=value)
134
126
 
135
- @property
136
- def cdp(self) -> CDPExecutor:
137
- return self._cdp_executor
138
-
139
127
  @property
140
128
  def command_executor(self) -> RemoteConnection:
141
129
  return self._command_executor_get_impl()
@@ -1,5 +1,6 @@
1
- from typing import Any, Optional
1
+ from typing import Optional
2
2
  from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
+ from selenium.webdriver.common.print_page_options import PrintOptions
3
4
  from osn_selenium.webdrivers.unified.core.capture import (
4
5
  UnifiedCoreCaptureMixin
5
6
  )
@@ -31,7 +32,7 @@ class CoreCaptureMixin(UnifiedCoreCaptureMixin, TrioThreadMixin, AbstractCoreCap
31
32
  async def page_source(self) -> str:
32
33
  return await self.sync_to_trio(sync_function=self._page_source_impl)()
33
34
 
34
- async def print_page(self, print_options: Optional[Any] = None) -> str:
35
+ async def print_page(self, print_options: Optional[PrintOptions] = None) -> str:
35
36
  return await self.sync_to_trio(sync_function=self._print_page_impl)(print_options=print_options)
36
37
 
37
38
  async def save_screenshot(self, filename: str) -> bool:
@@ -5,6 +5,7 @@ from typing import (
5
5
  List
6
6
  )
7
7
  from osn_selenium.trio_threads_mixin import TrioThreadMixin
8
+ from selenium.webdriver.remote.file_detector import FileDetector
8
9
  from osn_selenium.webdrivers.unified.core.file import UnifiedCoreFileMixin
9
10
  from osn_selenium.abstract.webdriver.core.file import (
10
11
  AbstractCoreFileMixin
@@ -29,11 +30,11 @@ class CoreFileMixin(UnifiedCoreFileMixin, TrioThreadMixin, AbstractCoreFileMixin
29
30
  await self.sync_to_trio(sync_function=self._download_file_impl)(file_name=file_name, target_directory=target_directory)
30
31
 
31
32
  @property
32
- async def file_detector(self) -> Any:
33
+ async def file_detector(self) -> FileDetector:
33
34
  return await self.sync_to_trio(sync_function=self._file_detector_get_impl)()
34
35
 
35
36
  @file_detector.setter
36
- async def file_detector(self, value: Any) -> None:
37
+ async def file_detector(self, value: FileDetector) -> None:
37
38
  await self.sync_to_trio(sync_function=self._file_detector_set_impl)(value=value)
38
39
 
39
40
  @asynccontextmanager