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
@@ -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)()
@@ -1,5 +1,5 @@
1
1
  from typing import Any
2
- from osn_selenium.base_mixin import TrioThreadMixin
2
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
3
  from osn_selenium.webdrivers.unified.blink.logging import (
4
4
  UnifiedBlinkLoggingMixin
5
5
  )
@@ -1,5 +1,5 @@
1
1
  from typing import Any, Dict
2
- from osn_selenium.base_mixin import TrioThreadMixin
2
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
3
  from osn_selenium.webdrivers.unified.blink.network import (
4
4
  UnifiedBlinkNetworkMixin
5
5
  )
@@ -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.chrome import ChromeFlagsManager
6
10
  from osn_selenium.flags.models.chrome import ChromeFlags
@@ -46,7 +50,32 @@ class ChromeWebDriver(
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 Chrome WebDriver with specified configuration.
58
+
59
+ Args:
60
+ webdriver_path (str): Path to the ChromeDriver executable.
61
+ flags_manager_type (Type[ChromeFlagsManager]): The class type used for managing Chrome flags.
62
+ Defaults to ChromeFlagsManager.
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 "Google Chrome".
67
+ browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Chrome browser executable.
68
+ flags (Optional[ChromeFlags]): 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 ChromeWebDriver(
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
  ChromeBaseMixin.__init__(
@@ -78,4 +109,6 @@ class ChromeWebDriver(
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.chrome import ChromeFlagsManager
5
9
  from osn_selenium.flags.models.chrome import ChromeFlags
6
10
  from selenium.webdriver import (
@@ -46,9 +50,11 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
46
50
  script_timeout: int = 5,
47
51
  window_rect: Optional[WindowRect] = 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
  ):
50
56
  """
51
- Initializes the Trio-based Chrome WebDriver mixin.
57
+ Initializes the Trio-based Chrome WebDriver mixin with specified configuration.
52
58
 
53
59
  Args:
54
60
  webdriver_path (str): Path to the ChromeDriver executable.
@@ -67,6 +73,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
67
73
  script_timeout (int): Default script timeout.
68
74
  window_rect (Optional[WindowRect]): Initial window dimensions.
69
75
  capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
76
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
77
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
70
78
  """
71
79
 
72
80
  BlinkBaseMixin.__init__(
@@ -84,6 +92,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
84
92
  script_timeout=script_timeout,
85
93
  window_rect=window_rect,
86
94
  capacity_limiter=capacity_limiter,
95
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
96
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
87
97
  )
88
98
 
89
99
  UnifiedChromeBaseMixin.__init__(
@@ -100,6 +110,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
100
110
  page_load_timeout=page_load_timeout,
101
111
  script_timeout=script_timeout,
102
112
  window_rect=window_rect,
113
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
114
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
103
115
  )
104
116
 
105
117
  @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.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
  )
@@ -1,10 +1,13 @@
1
1
  import trio
2
- from typing import Optional, Type
3
2
  from osn_selenium.models import WindowRect
4
- from osn_selenium.dev_tools.manager import DevTools
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
8
+ from osn_selenium._typehints import PATH_TYPEHINT
5
9
  from osn_selenium.flags.base import BrowserFlagsManager
6
10
  from osn_selenium.flags.models.base import BrowserFlags
7
- from osn_selenium.dev_tools.settings import DevToolsSettings
8
11
  from osn_selenium.webdrivers.trio_threads.core.auth import CoreAuthMixin
9
12
  from osn_selenium.webdrivers.trio_threads.core.base import CoreBaseMixin
10
13
  from osn_selenium.webdrivers.trio_threads.core.file import CoreFileMixin
@@ -62,15 +65,13 @@ class CoreWebDriver(
62
65
  page_load_timeout: int = 5,
63
66
  script_timeout: int = 5,
64
67
  window_rect: Optional[WindowRect] = None,
65
- devtools_settings: Optional[DevToolsSettings] = None,
66
68
  capacity_limiter: Optional[trio.CapacityLimiter] = None,
69
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
70
+ ignore_cdp_version_package_missing: bool = True,
67
71
  ) -> None:
68
72
  """
69
73
  Initializes the main WebDriver instance with Trio thread support.
70
74
 
71
- Combines multiple functional mixins and initializes the JavaScript executor
72
- along with base configuration components.
73
-
74
75
  Args:
75
76
  webdriver_path (str): The file path to the WebDriver executable.
76
77
  flags_manager_type (Type[BrowserFlagsManager]): The class type used to manage
@@ -85,7 +86,6 @@ class CoreWebDriver(
85
86
  asynchronous script to finish execution. Defaults to 5.
86
87
  window_rect (Optional[WindowRect]): The initial size and position of the
87
88
  browser window. Defaults to None.
88
- devtools_settings (Optional[DevToolsSettings]): Configuration for Chrome DevTools Protocol.
89
89
  capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
90
90
  throttle concurrent thread-based operations. Defaults to None.
91
91
  """
@@ -100,10 +100,6 @@ class CoreWebDriver(
100
100
  script_timeout=script_timeout,
101
101
  window_rect=window_rect,
102
102
  capacity_limiter=capacity_limiter,
103
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
104
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
103
105
  )
104
-
105
- self._devtools = DevTools(parent_webdriver=self, devtools_settings=devtools_settings)
106
-
107
- @property
108
- def devtools(self) -> DevTools:
109
- return self._devtools
@@ -3,8 +3,8 @@ from typing import (
3
3
  List,
4
4
  Optional
5
5
  )
6
- from osn_selenium.base_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.base_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,34 +1,34 @@
1
1
  import trio
2
2
  from osn_selenium.models import WindowRect
3
- from osn_selenium.base_mixin import TrioThreadMixin
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
6
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
4
7
  from typing import (
5
8
  Any,
6
9
  Dict,
10
+ Mapping,
7
11
  Optional,
8
12
  Type
9
13
  )
10
- from osn_selenium.flags.base import BrowserFlagsManager
11
- from osn_selenium.flags.models.base import BrowserFlags
12
- from selenium.webdriver.common.bidi.session import Session
13
- from osn_selenium._typehints import (
14
- ARCHITECTURES_TYPEHINT
15
- )
16
14
  from selenium.webdriver.remote.errorhandler import ErrorHandler
17
- from osn_selenium.executors.trio_threads.cdp import CDPExecutor
18
15
  from osn_selenium.executors.trio_threads.javascript import JSExecutor
19
16
  from selenium.webdriver.remote.locator_converter import LocatorConverter
20
17
  from selenium.webdriver.remote.remote_connection import RemoteConnection
18
+ from osn_selenium.webdrivers._bridges import (
19
+ get_js_executor_bridge
20
+ )
21
21
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
22
+ from osn_selenium._typehints import (
23
+ ARCHITECTURES_TYPEHINT,
24
+ PATH_TYPEHINT
25
+ )
22
26
  from osn_selenium.abstract.webdriver.core.base import (
23
27
  AbstractCoreBaseMixin
24
28
  )
25
29
  from selenium.webdriver.remote.webdriver import (
26
30
  WebDriver as legacyWebDriver
27
31
  )
28
- from osn_selenium.webdrivers._bridges import (
29
- get_cdp_executor_bridge,
30
- get_js_executor_bridge
31
- )
32
32
 
33
33
 
34
34
  __all__ = ["CoreBaseMixin"]
@@ -51,6 +51,8 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
51
51
  script_timeout: int = 5,
52
52
  window_rect: Optional[WindowRect] = None,
53
53
  capacity_limiter: Optional[trio.CapacityLimiter] = None,
54
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
55
+ ignore_cdp_version_package_missing: bool = True,
54
56
  ) -> None:
55
57
  """
56
58
  Initializes the base mixin for Trio-based WebDrivers.
@@ -74,6 +76,8 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
74
76
  browser window. Defaults to None.
75
77
  capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
76
78
  throttle concurrent thread-based operations. Defaults to None.
79
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
80
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
77
81
  """
78
82
 
79
83
  UnifiedCoreBaseMixin.__init__(
@@ -86,6 +90,8 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
86
90
  page_load_timeout=page_load_timeout,
87
91
  script_timeout=script_timeout,
88
92
  window_rect=window_rect,
93
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
94
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
89
95
  )
90
96
 
91
97
  TrioThreadMixin.__init__(
@@ -96,12 +102,6 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
96
102
  else trio.CapacityLimiter(100),
97
103
  )
98
104
 
99
- self._cdp_executor = CDPExecutor(
100
- execute_function=get_cdp_executor_bridge(self),
101
- lock=self._lock,
102
- limiter=self._capacity_limiter,
103
- )
104
-
105
105
  self._js_executor = JSExecutor(
106
106
  execute_function=get_js_executor_bridge(self),
107
107
  lock=self._lock,
@@ -124,10 +124,6 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
124
124
  def caps(self, value: Dict[str, Any]) -> None:
125
125
  self._caps_set_impl(value=value)
126
126
 
127
- @property
128
- def cdp(self) -> CDPExecutor:
129
- return self._cdp_executor
130
-
131
127
  @property
132
128
  def command_executor(self) -> RemoteConnection:
133
129
  return self._command_executor_get_impl()
@@ -1,5 +1,6 @@
1
- from typing import Any, Optional
2
- from osn_selenium.base_mixin import TrioThreadMixin
1
+ from typing import Optional
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:
@@ -1,4 +1,4 @@
1
- from osn_selenium.base_mixin import TrioThreadMixin
1
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
2
2
  from osn_selenium.instances.trio_threads.dialog import Dialog
3
3
  from osn_selenium.instances.trio_threads.mobile import Mobile
4
4
  from osn_selenium.instances.trio_threads.browser import Browser
@@ -1,5 +1,5 @@
1
1
  from contextlib import asynccontextmanager
2
- from osn_selenium.base_mixin import TrioThreadMixin
2
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
3
  from typing import (
4
4
  Any,
5
5
  AsyncGenerator,
@@ -1,6 +1,6 @@
1
1
  from typing import List, Optional
2
2
  from selenium.webdriver.common.by import By
3
- from osn_selenium.base_mixin import TrioThreadMixin
3
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
4
4
  from osn_selenium.instances.trio_threads.web_element import WebElement
5
5
  from osn_selenium.instances.convert import (
6
6
  get_trio_thread_instance_wrapper
@@ -4,7 +4,8 @@ from typing import (
4
4
  AsyncGenerator,
5
5
  List
6
6
  )
7
- from osn_selenium.base_mixin import TrioThreadMixin
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,16 +30,16 @@ 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
40
41
  async def file_detector_context(self, file_detector_class: Any, *args: Any, **kwargs: Any) -> AsyncGenerator[Any, Any]:
41
- async with self.sync_to_trio_context(context_manager_factory=self.driver.file_detector_context)(file_detector_class, *args, **kwargs) as file_detector:
42
+ async with self.sync_to_trio_context(context_manager_factory=self._file_detector_context_impl)(file_detector_class, *args, **kwargs) as file_detector:
42
43
  yield file_detector
43
44
 
44
45
  async def get_downloadable_files(self) -> List[str]:
@@ -1,12 +1,14 @@
1
+ from types import TracebackType
1
2
  from osn_selenium.models import WindowRect
2
- from osn_selenium.base_mixin import TrioThreadMixin
3
+ from osn_selenium.flags.models.base import BrowserFlags
4
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
5
  from typing import (
4
6
  Any,
5
7
  Dict,
6
8
  Optional,
9
+ Type,
7
10
  Union
8
11
  )
9
- from osn_selenium.flags.models.base import BrowserFlags
10
12
  from selenium.webdriver.remote.remote_connection import RemoteConnection
11
13
  from osn_selenium.webdrivers.unified.core.lifecycle import (
12
14
  UnifiedCoreLifecycleMixin
@@ -27,8 +29,47 @@ class CoreLifecycleMixin(UnifiedCoreLifecycleMixin, TrioThreadMixin, AbstractCor
27
29
  underlying browser instance, ensuring clean session management.
28
30
  """
29
31
 
30
- async def close_webdriver(self) -> None:
31
- await self.sync_to_trio(sync_function=self._close_webdriver_impl)()
32
+ async def start_webdriver(
33
+ self,
34
+ flags: Optional[BrowserFlags] = None,
35
+ window_rect: Optional[WindowRect] = None,
36
+ ) -> None:
37
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(flags=flags, window_rect=window_rect)
38
+
39
+ async def __aenter__(
40
+ self,
41
+ flags: Optional[BrowserFlags] = None,
42
+ window_rect: Optional[WindowRect] = None,
43
+ ) -> None:
44
+ await self.start_webdriver(flags=flags, window_rect=window_rect)
45
+
46
+ async def stop_webdriver(self) -> None:
47
+ await self.sync_to_trio(sync_function=self._stop_webdriver_impl)()
48
+
49
+ async def __aexit__(
50
+ self,
51
+ exc_type: Optional[Type[BaseException]],
52
+ exc_val: Optional[BaseException],
53
+ exc_tb: Optional[TracebackType],
54
+ ) -> bool:
55
+ """
56
+ Asynchronously exits the WebDriver context.
57
+
58
+ Args:
59
+ exc_type (Optional[Type[BaseException]]): The exception type, if any.
60
+ exc_val (Optional[BaseException]): The exception value, if any.
61
+ exc_tb (Optional[TracebackType]): The exception traceback, if any.
62
+
63
+ Returns:
64
+ bool: True if an exception was suppressed, False otherwise.
65
+ """
66
+
67
+ await self.stop_webdriver()
68
+
69
+ if exc_type is not None and exc_val is not None and exc_tb is not None:
70
+ return True
71
+
72
+ return False
32
73
 
33
74
  async def quit(self) -> None:
34
75
  await self.sync_to_trio(sync_function=self._quit_impl)()
@@ -49,12 +90,5 @@ class CoreLifecycleMixin(UnifiedCoreLifecycleMixin, TrioThreadMixin, AbstractCor
49
90
  async def start_session(self, capabilities: Dict[str, Any]) -> None:
50
91
  await self.sync_to_trio(sync_function=self._start_session_impl)(capabilities=capabilities)
51
92
 
52
- async def start_webdriver(
53
- self,
54
- flags: Optional[BrowserFlags] = None,
55
- window_rect: Optional[WindowRect] = None,
56
- ) -> None:
57
- await self.sync_to_trio(sync_function=self._start_webdriver_impl)(flags=flags, window_rect=window_rect)
58
-
59
93
  async def stop_client(self) -> None:
60
94
  await self.sync_to_trio(sync_function=self._stop_client_impl)()
@@ -1,4 +1,4 @@
1
- from osn_selenium.base_mixin import TrioThreadMixin
1
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
2
2
  from osn_selenium.webdrivers.unified.core.navigation import (
3
3
  UnifiedCoreNavigationMixin
4
4
  )
@@ -1,5 +1,6 @@
1
1
  from typing import Any, List, Optional
2
- from osn_selenium.base_mixin import TrioThreadMixin
2
+ from selenium.webdriver.remote.script_key import ScriptKey
3
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
4
  from osn_selenium.instances.trio_threads.script import Script
4
5
  from osn_selenium.instances.convert import (
5
6
  get_trio_thread_instance_wrapper
@@ -42,7 +43,7 @@ class CoreScriptMixin(UnifiedCoreScriptMixin, TrioThreadMixin, AbstractCoreScrip
42
43
  async def get_pinned_scripts(self) -> List[str]:
43
44
  return await self.sync_to_trio(sync_function=self._get_pinned_scripts_impl)()
44
45
 
45
- async def pin_script(self, script: str, script_key: Optional[Any] = None) -> Any:
46
+ async def pin_script(self, script: str, script_key: Optional[Any] = None) -> ScriptKey:
46
47
  return await self.sync_to_trio(sync_function=self._pin_script_impl)(script=script, script_key=script_key)
47
48
 
48
49
  async def script(self) -> Script:
@@ -55,5 +56,5 @@ class CoreScriptMixin(UnifiedCoreScriptMixin, TrioThreadMixin, AbstractCoreScrip
55
56
  limiter=self._capacity_limiter,
56
57
  )
57
58
 
58
- async def unpin(self, script_key: Any) -> None:
59
+ async def unpin(self, script_key: ScriptKey) -> None:
59
60
  await self.sync_to_trio(sync_function=self._unpin_impl)(script_key=script_key)
@@ -1,7 +1,7 @@
1
1
  from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
- from osn_selenium.base_mixin import TrioThreadMixin
4
3
  from osn_selenium.flags.models.base import BrowserFlags
4
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
5
5
  from osn_selenium.webdrivers.unified.core.settings import (
6
6
  UnifiedCoreSettingsMixin
7
7
  )
@@ -1,10 +1,10 @@
1
- from osn_selenium.base_mixin import TrioThreadMixin
2
1
  from typing import (
3
2
  Any,
4
3
  Dict,
5
4
  List,
6
5
  Optional
7
6
  )
7
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
8
8
  from osn_selenium.instances.trio_threads.storage import Storage
9
9
  from osn_selenium.instances.convert import (
10
10
  get_trio_thread_instance_wrapper
@@ -1,6 +1,6 @@
1
1
  from typing import Optional
2
- from osn_selenium.base_mixin import TrioThreadMixin
3
2
  from selenium.webdriver.common.timeouts import Timeouts
3
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
4
4
  from osn_selenium.webdrivers.unified.core.timeouts import (
5
5
  UnifiedCoreTimeoutsMixin
6
6
  )