osn-selenium 1.0.0__py3-none-any.whl → 1.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. osn_selenium/_base_models.py +41 -0
  2. osn_selenium/_cdp_import.py +253 -0
  3. osn_selenium/_decorators.py +57 -0
  4. osn_selenium/_trio_threads_helpers.py +157 -0
  5. osn_selenium/_typehints.py +1 -1
  6. osn_selenium/abstract/executors/cdp.py +63 -0
  7. osn_selenium/abstract/webdriver/blink/base.py +14 -0
  8. osn_selenium/abstract/webdriver/blink/lifecycle.py +8 -8
  9. osn_selenium/abstract/webdriver/core/base.py +0 -14
  10. osn_selenium/abstract/webdriver/core/capture.py +4 -3
  11. osn_selenium/abstract/webdriver/core/lifecycle.py +8 -8
  12. osn_selenium/abstract/webdriver/core/script.py +5 -4
  13. osn_selenium/abstract/webdriver/core/window.py +11 -11
  14. osn_selenium/browsers_handler/models.py +1 -1
  15. osn_selenium/dev_tools/_decorators.py +19 -51
  16. osn_selenium/dev_tools/_functions.py +2 -4
  17. osn_selenium/dev_tools/_typehints.py +5 -2
  18. osn_selenium/dev_tools/_wrappers.py +0 -3
  19. osn_selenium/dev_tools/domains/__init__.py +2 -2
  20. osn_selenium/dev_tools/domains/abstract.py +1 -1
  21. osn_selenium/dev_tools/domains/fetch.py +6 -8
  22. osn_selenium/dev_tools/domains_default/fetch.py +2 -2
  23. osn_selenium/dev_tools/filters.py +1 -1
  24. osn_selenium/dev_tools/logger/main.py +9 -21
  25. osn_selenium/dev_tools/logger/models.py +1 -1
  26. osn_selenium/dev_tools/logger/target.py +49 -29
  27. osn_selenium/dev_tools/manager/base.py +10 -42
  28. osn_selenium/dev_tools/manager/lifecycle.py +84 -75
  29. osn_selenium/dev_tools/manager/logging.py +1 -1
  30. osn_selenium/dev_tools/manager/targets.py +13 -5
  31. osn_selenium/dev_tools/models.py +1 -1
  32. osn_selenium/dev_tools/settings.py +9 -5
  33. osn_selenium/dev_tools/target/base.py +30 -34
  34. osn_selenium/dev_tools/target/discovery.py +1 -1
  35. osn_selenium/dev_tools/target/events.py +2 -2
  36. osn_selenium/dev_tools/target/fingerprint.py +1 -1
  37. osn_selenium/dev_tools/target/lifecycle.py +103 -38
  38. osn_selenium/dev_tools/target/logging.py +11 -3
  39. osn_selenium/exceptions/__init__.py +0 -1
  40. osn_selenium/exceptions/base.py +28 -1
  41. osn_selenium/exceptions/bidi_bridge.py +59 -0
  42. osn_selenium/exceptions/configuration.py +1 -8
  43. osn_selenium/exceptions/dependencies.py +60 -0
  44. osn_selenium/exceptions/devtools.py +9 -39
  45. osn_selenium/exceptions/experimental.py +26 -0
  46. osn_selenium/exceptions/flags.py +0 -2
  47. osn_selenium/exceptions/instance.py +1 -9
  48. osn_selenium/exceptions/javascript.py +0 -2
  49. osn_selenium/exceptions/logic.py +0 -2
  50. osn_selenium/exceptions/path.py +1 -9
  51. osn_selenium/exceptions/platform.py +0 -2
  52. osn_selenium/exceptions/protocol.py +0 -3
  53. osn_selenium/exceptions/webdriver.py +1 -7
  54. osn_selenium/exceptions/window.py +1 -8
  55. osn_selenium/executors/sync/cdp.py +95 -0
  56. osn_selenium/executors/trio_bidi/cdp.py +101 -0
  57. osn_selenium/executors/trio_bidi/javascript.py +101 -0
  58. osn_selenium/executors/trio_threads/cdp.py +99 -0
  59. osn_selenium/executors/trio_threads/javascript.py +1 -1
  60. osn_selenium/executors/unified/javascript.py +0 -4
  61. osn_selenium/flags/base.py +7 -13
  62. osn_selenium/flags/blink.py +2 -8
  63. osn_selenium/flags/chrome.py +6 -6
  64. osn_selenium/flags/edge.py +6 -6
  65. osn_selenium/flags/models/base.py +4 -4
  66. osn_selenium/flags/models/blink.py +1 -1
  67. osn_selenium/flags/models/values.py +1 -1
  68. osn_selenium/instances/convert.py +44 -3
  69. osn_selenium/instances/protocols.py +47 -1
  70. osn_selenium/instances/sync/action_chains/__init__.py +6 -0
  71. osn_selenium/instances/sync/browsing_context.py +2 -2
  72. osn_selenium/instances/sync/script.py +7 -2
  73. osn_selenium/instances/sync/shadow_root.py +30 -8
  74. osn_selenium/instances/sync/web_element.py +1 -1
  75. osn_selenium/instances/trio_bidi/__init__.py +1 -0
  76. osn_selenium/instances/trio_bidi/shadow_root.py +180 -0
  77. osn_selenium/instances/trio_bidi/switch_to.py +143 -0
  78. osn_selenium/instances/trio_bidi/web_driver_wait.py +124 -0
  79. osn_selenium/instances/trio_bidi/web_element.py +239 -0
  80. osn_selenium/instances/trio_threads/action_chains/__init__.py +6 -0
  81. osn_selenium/instances/trio_threads/action_chains/base.py +1 -1
  82. osn_selenium/instances/trio_threads/alert.py +1 -1
  83. osn_selenium/instances/trio_threads/browser.py +1 -1
  84. osn_selenium/instances/trio_threads/browsing_context.py +3 -3
  85. osn_selenium/instances/trio_threads/dialog.py +1 -1
  86. osn_selenium/instances/trio_threads/fedcm.py +1 -1
  87. osn_selenium/instances/trio_threads/mobile.py +1 -1
  88. osn_selenium/instances/trio_threads/network.py +1 -1
  89. osn_selenium/instances/trio_threads/permissions.py +1 -1
  90. osn_selenium/instances/trio_threads/script.py +8 -3
  91. osn_selenium/instances/trio_threads/shadow_root.py +46 -15
  92. osn_selenium/instances/trio_threads/storage.py +1 -1
  93. osn_selenium/instances/trio_threads/switch_to.py +1 -1
  94. osn_selenium/instances/trio_threads/web_driver_wait.py +1 -1
  95. osn_selenium/instances/trio_threads/web_element.py +1 -1
  96. osn_selenium/instances/trio_threads/web_extension.py +1 -1
  97. osn_selenium/instances/unified/browsing_context.py +2 -2
  98. osn_selenium/instances/unified/script.py +2 -2
  99. osn_selenium/instances/unified/web_element.py +3 -5
  100. osn_selenium/javascript/fingerprint/__init__.py +3 -2
  101. osn_selenium/javascript/fingerprint/registry/models.py +1 -1
  102. osn_selenium/javascript/fingerprint/spoof/core_rules.py +1 -1
  103. osn_selenium/javascript/fingerprint/spoof/noise.py +1 -1
  104. osn_selenium/javascript/models.py +1 -1
  105. osn_selenium/models.py +2 -47
  106. osn_selenium/trio_bidi/__init__.py +1 -0
  107. osn_selenium/trio_bidi/_context_vars.py +12 -0
  108. osn_selenium/trio_bidi/_error_mappings.py +123 -0
  109. osn_selenium/trio_bidi/_error_redirects.py +194 -0
  110. osn_selenium/trio_bidi/_file_functions.py +28 -0
  111. osn_selenium/trio_bidi/_internal_mappings.py +10 -0
  112. osn_selenium/trio_bidi/_models.py +199 -0
  113. osn_selenium/trio_bidi/_typehints.py +20 -0
  114. osn_selenium/trio_bidi/connection_pool.py +587 -0
  115. osn_selenium/trio_bidi/mapping/__init__.py +1 -0
  116. osn_selenium/trio_bidi/mapping/_constants.py +14 -0
  117. osn_selenium/trio_bidi/mapping/_js_snippets.py +285 -0
  118. osn_selenium/trio_bidi/mapping/_utils.py +4 -0
  119. osn_selenium/trio_bidi/mapping/request_functions/__init__.py +87 -0
  120. osn_selenium/trio_bidi/mapping/request_functions/_alert.py +102 -0
  121. osn_selenium/trio_bidi/mapping/request_functions/_args_helpers.py +225 -0
  122. osn_selenium/trio_bidi/mapping/request_functions/_capture.py +71 -0
  123. osn_selenium/trio_bidi/mapping/request_functions/_cdp.py +40 -0
  124. osn_selenium/trio_bidi/mapping/request_functions/_element.py +55 -0
  125. osn_selenium/trio_bidi/mapping/request_functions/_file.py +32 -0
  126. osn_selenium/trio_bidi/mapping/request_functions/_navigation.py +147 -0
  127. osn_selenium/trio_bidi/mapping/request_functions/_script.py +85 -0
  128. osn_selenium/trio_bidi/mapping/request_functions/_shadow_root.py +65 -0
  129. osn_selenium/trio_bidi/mapping/request_functions/_switch_to.py +59 -0
  130. osn_selenium/trio_bidi/mapping/request_functions/_web_element.py +448 -0
  131. osn_selenium/trio_bidi/mapping/request_functions/_window.py +125 -0
  132. osn_selenium/trio_bidi/mapping/response_functions/__init__.py +86 -0
  133. osn_selenium/trio_bidi/mapping/response_functions/_alert.py +81 -0
  134. osn_selenium/trio_bidi/mapping/response_functions/_args_helpers.py +183 -0
  135. osn_selenium/trio_bidi/mapping/response_functions/_args_validators.py +153 -0
  136. osn_selenium/trio_bidi/mapping/response_functions/_capture.py +71 -0
  137. osn_selenium/trio_bidi/mapping/response_functions/_cdp.py +26 -0
  138. osn_selenium/trio_bidi/mapping/response_functions/_element.py +58 -0
  139. osn_selenium/trio_bidi/mapping/response_functions/_file.py +30 -0
  140. osn_selenium/trio_bidi/mapping/response_functions/_navigation.py +120 -0
  141. osn_selenium/trio_bidi/mapping/response_functions/_script.py +57 -0
  142. osn_selenium/trio_bidi/mapping/response_functions/_shadow_root.py +58 -0
  143. osn_selenium/trio_bidi/mapping/response_functions/_switch_to.py +57 -0
  144. osn_selenium/trio_bidi/mapping/response_functions/_web_element.py +368 -0
  145. osn_selenium/trio_bidi/mapping/response_functions/_window.py +119 -0
  146. osn_selenium/trio_bidi/mixin.py +186 -0
  147. osn_selenium/trio_bidi/remote_connection.py +164 -0
  148. osn_selenium/{base_mixin.py → trio_threads_mixin.py} +31 -40
  149. osn_selenium/webdrivers/_args_helpers.py +120 -7
  150. osn_selenium/webdrivers/_bridges.py +2 -2
  151. osn_selenium/webdrivers/_executable_tables/models.py +1 -1
  152. osn_selenium/webdrivers/_typehints.py +9 -3
  153. osn_selenium/webdrivers/protocols.py +81 -1
  154. osn_selenium/webdrivers/sync/blink/__init__.py +11 -1
  155. osn_selenium/webdrivers/sync/blink/base.py +23 -1
  156. osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
  157. osn_selenium/webdrivers/sync/chrome/__init__.py +36 -1
  158. osn_selenium/webdrivers/sync/chrome/base.py +13 -1
  159. osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
  160. osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
  161. osn_selenium/webdrivers/sync/core/__init__.py +10 -1
  162. osn_selenium/webdrivers/sync/core/base.py +18 -18
  163. osn_selenium/webdrivers/sync/core/capture.py +3 -2
  164. osn_selenium/webdrivers/sync/core/file.py +3 -2
  165. osn_selenium/webdrivers/sync/core/lifecycle.py +44 -10
  166. osn_selenium/webdrivers/sync/core/script.py +3 -2
  167. osn_selenium/webdrivers/sync/core/window.py +3 -3
  168. osn_selenium/webdrivers/sync/edge/__init__.py +36 -1
  169. osn_selenium/webdrivers/sync/edge/base.py +13 -1
  170. osn_selenium/webdrivers/sync/edge/lifecycle.py +23 -5
  171. osn_selenium/webdrivers/sync/edge/settings.py +6 -1
  172. osn_selenium/webdrivers/sync/yandex/__init__.py +36 -1
  173. osn_selenium/webdrivers/sync/yandex/base.py +13 -1
  174. osn_selenium/webdrivers/sync/yandex/lifecycle.py +23 -5
  175. osn_selenium/webdrivers/sync/yandex/settings.py +6 -1
  176. osn_selenium/webdrivers/trio_bidi/__init__.py +1 -0
  177. osn_selenium/webdrivers/trio_bidi/blink/__init__.py +132 -0
  178. osn_selenium/webdrivers/trio_bidi/blink/base.py +167 -0
  179. osn_selenium/webdrivers/trio_bidi/blink/lifecycle.py +89 -0
  180. osn_selenium/webdrivers/trio_bidi/blink/settings.py +63 -0
  181. osn_selenium/webdrivers/trio_bidi/chrome/__init__.py +114 -0
  182. osn_selenium/webdrivers/trio_bidi/chrome/base.py +127 -0
  183. osn_selenium/webdrivers/trio_bidi/chrome/lifecycle.py +85 -0
  184. osn_selenium/webdrivers/trio_bidi/chrome/settings.py +63 -0
  185. osn_selenium/webdrivers/trio_bidi/core/__init__.py +95 -0
  186. osn_selenium/webdrivers/trio_bidi/core/actions.py +70 -0
  187. osn_selenium/webdrivers/trio_bidi/core/base.py +200 -0
  188. osn_selenium/webdrivers/trio_bidi/core/capture.py +39 -0
  189. osn_selenium/webdrivers/trio_bidi/core/devtools.py +49 -0
  190. osn_selenium/webdrivers/trio_bidi/core/element.py +64 -0
  191. osn_selenium/webdrivers/trio_bidi/core/lifecycle.py +135 -0
  192. osn_selenium/webdrivers/trio_bidi/core/navigation.py +37 -0
  193. osn_selenium/webdrivers/trio_bidi/core/script.py +56 -0
  194. osn_selenium/webdrivers/trio_bidi/core/settings.py +36 -0
  195. osn_selenium/webdrivers/trio_bidi/core/window.py +134 -0
  196. osn_selenium/webdrivers/trio_bidi/edge/__init__.py +114 -0
  197. osn_selenium/webdrivers/trio_bidi/edge/base.py +123 -0
  198. osn_selenium/webdrivers/trio_bidi/edge/lifecycle.py +85 -0
  199. osn_selenium/webdrivers/trio_bidi/edge/settings.py +63 -0
  200. osn_selenium/webdrivers/trio_bidi/yandex/__init__.py +114 -0
  201. osn_selenium/webdrivers/trio_bidi/yandex/base.py +120 -0
  202. osn_selenium/webdrivers/trio_bidi/yandex/lifecycle.py +85 -0
  203. osn_selenium/webdrivers/trio_bidi/yandex/settings.py +63 -0
  204. osn_selenium/webdrivers/trio_threads/blink/__init__.py +18 -2
  205. osn_selenium/webdrivers/trio_threads/blink/base.py +25 -1
  206. osn_selenium/webdrivers/trio_threads/blink/casting.py +1 -1
  207. osn_selenium/webdrivers/trio_threads/blink/features.py +1 -1
  208. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
  209. osn_selenium/webdrivers/trio_threads/blink/logging.py +1 -1
  210. osn_selenium/webdrivers/trio_threads/blink/network.py +1 -1
  211. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +34 -1
  212. osn_selenium/webdrivers/trio_threads/chrome/base.py +14 -2
  213. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +23 -5
  214. osn_selenium/webdrivers/trio_threads/chrome/settings.py +1 -1
  215. osn_selenium/webdrivers/trio_threads/core/__init__.py +10 -14
  216. osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
  217. osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
  218. osn_selenium/webdrivers/trio_threads/core/base.py +18 -22
  219. osn_selenium/webdrivers/trio_threads/core/capture.py +4 -3
  220. osn_selenium/webdrivers/trio_threads/core/comonents.py +1 -1
  221. osn_selenium/webdrivers/trio_threads/core/devtools.py +1 -1
  222. osn_selenium/webdrivers/trio_threads/core/element.py +1 -1
  223. osn_selenium/webdrivers/trio_threads/core/file.py +5 -4
  224. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +45 -11
  225. osn_selenium/webdrivers/trio_threads/core/navigation.py +1 -1
  226. osn_selenium/webdrivers/trio_threads/core/script.py +4 -3
  227. osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
  228. osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
  229. osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
  230. osn_selenium/webdrivers/trio_threads/core/window.py +6 -6
  231. osn_selenium/webdrivers/trio_threads/edge/__init__.py +34 -1
  232. osn_selenium/webdrivers/trio_threads/edge/base.py +14 -2
  233. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +23 -5
  234. osn_selenium/webdrivers/trio_threads/edge/settings.py +1 -1
  235. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +34 -1
  236. osn_selenium/webdrivers/trio_threads/yandex/base.py +14 -2
  237. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +23 -5
  238. osn_selenium/webdrivers/trio_threads/yandex/settings.py +1 -1
  239. osn_selenium/webdrivers/unified/blink/base.py +9 -1
  240. osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
  241. osn_selenium/webdrivers/unified/chrome/base.py +9 -1
  242. osn_selenium/webdrivers/unified/core/auth.py +4 -2
  243. osn_selenium/webdrivers/unified/core/base.py +19 -6
  244. osn_selenium/webdrivers/unified/core/capture.py +3 -2
  245. osn_selenium/webdrivers/unified/core/components.py +12 -7
  246. osn_selenium/webdrivers/unified/core/devtools.py +2 -1
  247. osn_selenium/webdrivers/unified/core/file.py +3 -2
  248. osn_selenium/webdrivers/unified/core/lifecycle.py +5 -3
  249. osn_selenium/webdrivers/unified/core/script.py +5 -3
  250. osn_selenium/webdrivers/unified/core/storage.py +2 -1
  251. osn_selenium/webdrivers/unified/core/window.py +9 -8
  252. osn_selenium/webdrivers/unified/edge/base.py +9 -1
  253. osn_selenium/webdrivers/unified/yandex/base.py +9 -1
  254. {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/METADATA +24 -10
  255. osn_selenium-1.2.0.dist-info/RECORD +480 -0
  256. {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/WHEEL +1 -1
  257. osn_selenium/abstract/executors/cdp/__init__.py +0 -435
  258. osn_selenium/abstract/executors/cdp/accessibility.py +0 -62
  259. osn_selenium/abstract/executors/cdp/animation.py +0 -47
  260. osn_selenium/abstract/executors/cdp/audits.py +0 -39
  261. osn_selenium/abstract/executors/cdp/autofill.py +0 -34
  262. osn_selenium/abstract/executors/cdp/background_service.py +0 -22
  263. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -95
  264. osn_selenium/abstract/executors/cdp/browser.py +0 -122
  265. osn_selenium/abstract/executors/cdp/cache_storage.py +0 -49
  266. osn_selenium/abstract/executors/cdp/cast.py +0 -31
  267. osn_selenium/abstract/executors/cdp/console.py +0 -18
  268. osn_selenium/abstract/executors/cdp/css.py +0 -197
  269. osn_selenium/abstract/executors/cdp/debugger.py +0 -198
  270. osn_selenium/abstract/executors/cdp/device_access.py +0 -22
  271. osn_selenium/abstract/executors/cdp/device_orientation.py +0 -14
  272. osn_selenium/abstract/executors/cdp/dom.py +0 -305
  273. osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -57
  274. osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -42
  275. osn_selenium/abstract/executors/cdp/dom_storage.py +0 -31
  276. osn_selenium/abstract/executors/cdp/emulation.py +0 -259
  277. osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -18
  278. osn_selenium/abstract/executors/cdp/extensions.py +0 -31
  279. osn_selenium/abstract/executors/cdp/fed_cm.py +0 -35
  280. osn_selenium/abstract/executors/cdp/fetch.py +0 -76
  281. osn_selenium/abstract/executors/cdp/file_system.py +0 -11
  282. osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -30
  283. osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -73
  284. osn_selenium/abstract/executors/cdp/indexed_db.py +0 -99
  285. osn_selenium/abstract/executors/cdp/input.py +0 -158
  286. osn_selenium/abstract/executors/cdp/inspector.py +0 -14
  287. osn_selenium/abstract/executors/cdp/io.py +0 -24
  288. osn_selenium/abstract/executors/cdp/layer_tree.py +0 -61
  289. osn_selenium/abstract/executors/cdp/log.py +0 -27
  290. osn_selenium/abstract/executors/cdp/media.py +0 -14
  291. osn_selenium/abstract/executors/cdp/memory.py +0 -61
  292. osn_selenium/abstract/executors/cdp/network.py +0 -252
  293. osn_selenium/abstract/executors/cdp/overlay.py +0 -166
  294. osn_selenium/abstract/executors/cdp/page.py +0 -347
  295. osn_selenium/abstract/executors/cdp/performance.py +0 -28
  296. osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -11
  297. osn_selenium/abstract/executors/cdp/preload.py +0 -14
  298. osn_selenium/abstract/executors/cdp/profiler.py +0 -54
  299. osn_selenium/abstract/executors/cdp/pwa.py +0 -46
  300. osn_selenium/abstract/executors/cdp/runtime.py +0 -176
  301. osn_selenium/abstract/executors/cdp/schema.py +0 -11
  302. osn_selenium/abstract/executors/cdp/security.py +0 -26
  303. osn_selenium/abstract/executors/cdp/service_worker.py +0 -54
  304. osn_selenium/abstract/executors/cdp/storage.py +0 -175
  305. osn_selenium/abstract/executors/cdp/system_info.py +0 -24
  306. osn_selenium/abstract/executors/cdp/target.py +0 -125
  307. osn_selenium/abstract/executors/cdp/tethering.py +0 -14
  308. osn_selenium/abstract/executors/cdp/tracing.py +0 -48
  309. osn_selenium/abstract/executors/cdp/web_audio.py +0 -19
  310. osn_selenium/abstract/executors/cdp/web_authn.py +0 -76
  311. osn_selenium/executors/sync/cdp/__init__.py +0 -550
  312. osn_selenium/executors/sync/cdp/accessibility.py +0 -74
  313. osn_selenium/executors/sync/cdp/animation.py +0 -50
  314. osn_selenium/executors/sync/cdp/audits.py +0 -48
  315. osn_selenium/executors/sync/cdp/autofill.py +0 -39
  316. osn_selenium/executors/sync/cdp/background_service.py +0 -30
  317. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -101
  318. osn_selenium/executors/sync/cdp/browser.py +0 -131
  319. osn_selenium/executors/sync/cdp/cache_storage.py +0 -66
  320. osn_selenium/executors/sync/cdp/cast.py +0 -38
  321. osn_selenium/executors/sync/cdp/console.py +0 -24
  322. osn_selenium/executors/sync/cdp/css.py +0 -187
  323. osn_selenium/executors/sync/cdp/debugger.py +0 -206
  324. osn_selenium/executors/sync/cdp/device_access.py +0 -27
  325. osn_selenium/executors/sync/cdp/device_orientation.py +0 -24
  326. osn_selenium/executors/sync/cdp/dom.py +0 -310
  327. osn_selenium/executors/sync/cdp/dom_debugger.py +0 -56
  328. osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -58
  329. osn_selenium/executors/sync/cdp/dom_storage.py +0 -38
  330. osn_selenium/executors/sync/cdp/emulation.py +0 -270
  331. osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -27
  332. osn_selenium/executors/sync/cdp/extensions.py +0 -39
  333. osn_selenium/executors/sync/cdp/fed_cm.py +0 -45
  334. osn_selenium/executors/sync/cdp/fetch.py +0 -96
  335. osn_selenium/executors/sync/cdp/file_system.py +0 -18
  336. osn_selenium/executors/sync/cdp/headless_experimental.py +0 -44
  337. osn_selenium/executors/sync/cdp/heap_profiler.py +0 -89
  338. osn_selenium/executors/sync/cdp/indexed_db.py +0 -142
  339. osn_selenium/executors/sync/cdp/input.py +0 -233
  340. osn_selenium/executors/sync/cdp/inspector.py +0 -21
  341. osn_selenium/executors/sync/cdp/io.py +0 -33
  342. osn_selenium/executors/sync/cdp/layer_tree.py +0 -71
  343. osn_selenium/executors/sync/cdp/log.py +0 -35
  344. osn_selenium/executors/sync/cdp/media.py +0 -21
  345. osn_selenium/executors/sync/cdp/memory.py +0 -62
  346. osn_selenium/executors/sync/cdp/network.py +0 -287
  347. osn_selenium/executors/sync/cdp/overlay.py +0 -174
  348. osn_selenium/executors/sync/cdp/page.py +0 -365
  349. osn_selenium/executors/sync/cdp/performance.py +0 -33
  350. osn_selenium/executors/sync/cdp/performance_timeline.py +0 -26
  351. osn_selenium/executors/sync/cdp/preload.py +0 -21
  352. osn_selenium/executors/sync/cdp/profiler.py +0 -58
  353. osn_selenium/executors/sync/cdp/pwa.py +0 -55
  354. osn_selenium/executors/sync/cdp/runtime.py +0 -221
  355. osn_selenium/executors/sync/cdp/schema.py +0 -23
  356. osn_selenium/executors/sync/cdp/security.py +0 -30
  357. osn_selenium/executors/sync/cdp/service_worker.py +0 -56
  358. osn_selenium/executors/sync/cdp/storage.py +0 -151
  359. osn_selenium/executors/sync/cdp/system_info.py +0 -30
  360. osn_selenium/executors/sync/cdp/target.py +0 -147
  361. osn_selenium/executors/sync/cdp/tethering.py +0 -21
  362. osn_selenium/executors/sync/cdp/tracing.py +0 -62
  363. osn_selenium/executors/sync/cdp/web_audio.py +0 -24
  364. osn_selenium/executors/sync/cdp/web_authn.py +0 -82
  365. osn_selenium/executors/trio_threads/cdp/__init__.py +0 -771
  366. osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -87
  367. osn_selenium/executors/trio_threads/cdp/animation.py +0 -63
  368. osn_selenium/executors/trio_threads/cdp/audits.py +0 -57
  369. osn_selenium/executors/trio_threads/cdp/autofill.py +0 -52
  370. osn_selenium/executors/trio_threads/cdp/background_service.py +0 -40
  371. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -111
  372. osn_selenium/executors/trio_threads/cdp/browser.py +0 -140
  373. osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -79
  374. osn_selenium/executors/trio_threads/cdp/cast.py +0 -47
  375. osn_selenium/executors/trio_threads/cdp/console.py +0 -33
  376. osn_selenium/executors/trio_threads/cdp/css.py +0 -196
  377. osn_selenium/executors/trio_threads/cdp/debugger.py +0 -219
  378. osn_selenium/executors/trio_threads/cdp/device_access.py +0 -40
  379. osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -34
  380. osn_selenium/executors/trio_threads/cdp/dom.py +0 -319
  381. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -69
  382. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -71
  383. osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -51
  384. osn_selenium/executors/trio_threads/cdp/emulation.py +0 -283
  385. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -37
  386. osn_selenium/executors/trio_threads/cdp/extensions.py +0 -52
  387. osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -54
  388. osn_selenium/executors/trio_threads/cdp/fetch.py +0 -105
  389. osn_selenium/executors/trio_threads/cdp/file_system.py +0 -31
  390. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -54
  391. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -102
  392. osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -155
  393. osn_selenium/executors/trio_threads/cdp/input.py +0 -242
  394. osn_selenium/executors/trio_threads/cdp/inspector.py +0 -34
  395. osn_selenium/executors/trio_threads/cdp/io.py +0 -42
  396. osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -84
  397. osn_selenium/executors/trio_threads/cdp/log.py +0 -44
  398. osn_selenium/executors/trio_threads/cdp/media.py +0 -30
  399. osn_selenium/executors/trio_threads/cdp/memory.py +0 -71
  400. osn_selenium/executors/trio_threads/cdp/network.py +0 -296
  401. osn_selenium/executors/trio_threads/cdp/overlay.py +0 -183
  402. osn_selenium/executors/trio_threads/cdp/page.py +0 -374
  403. osn_selenium/executors/trio_threads/cdp/performance.py +0 -46
  404. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -36
  405. osn_selenium/executors/trio_threads/cdp/preload.py +0 -30
  406. osn_selenium/executors/trio_threads/cdp/profiler.py +0 -71
  407. osn_selenium/executors/trio_threads/cdp/pwa.py +0 -64
  408. osn_selenium/executors/trio_threads/cdp/runtime.py +0 -230
  409. osn_selenium/executors/trio_threads/cdp/schema.py +0 -32
  410. osn_selenium/executors/trio_threads/cdp/security.py +0 -43
  411. osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -69
  412. osn_selenium/executors/trio_threads/cdp/storage.py +0 -162
  413. osn_selenium/executors/trio_threads/cdp/system_info.py +0 -43
  414. osn_selenium/executors/trio_threads/cdp/target.py +0 -156
  415. osn_selenium/executors/trio_threads/cdp/tethering.py +0 -34
  416. osn_selenium/executors/trio_threads/cdp/tracing.py +0 -71
  417. osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -37
  418. osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -95
  419. osn_selenium/executors/unified/cdp/accessibility.py +0 -81
  420. osn_selenium/executors/unified/cdp/animation.py +0 -50
  421. osn_selenium/executors/unified/cdp/audits.py +0 -45
  422. osn_selenium/executors/unified/cdp/autofill.py +0 -41
  423. osn_selenium/executors/unified/cdp/background_service.py +0 -24
  424. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -132
  425. osn_selenium/executors/unified/cdp/browser.py +0 -143
  426. osn_selenium/executors/unified/cdp/cache_storage.py +0 -69
  427. osn_selenium/executors/unified/cdp/cast.py +0 -32
  428. osn_selenium/executors/unified/cdp/console.py +0 -18
  429. osn_selenium/executors/unified/cdp/css.py +0 -237
  430. osn_selenium/executors/unified/cdp/debugger.py +0 -243
  431. osn_selenium/executors/unified/cdp/device_access.py +0 -21
  432. osn_selenium/executors/unified/cdp/device_orientation.py +0 -18
  433. osn_selenium/executors/unified/cdp/dom.py +0 -380
  434. osn_selenium/executors/unified/cdp/dom_debugger.py +0 -65
  435. osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -58
  436. osn_selenium/executors/unified/cdp/dom_storage.py +0 -38
  437. osn_selenium/executors/unified/cdp/emulation.py +0 -312
  438. osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -24
  439. osn_selenium/executors/unified/cdp/extensions.py +0 -45
  440. osn_selenium/executors/unified/cdp/fed_cm.py +0 -51
  441. osn_selenium/executors/unified/cdp/fetch.py +0 -111
  442. osn_selenium/executors/unified/cdp/file_system.py +0 -15
  443. osn_selenium/executors/unified/cdp/headless_experimental.py +0 -38
  444. osn_selenium/executors/unified/cdp/heap_profiler.py +0 -101
  445. osn_selenium/executors/unified/cdp/indexed_db.py +0 -157
  446. osn_selenium/executors/unified/cdp/input.py +0 -254
  447. osn_selenium/executors/unified/cdp/inspector.py +0 -15
  448. osn_selenium/executors/unified/cdp/io.py +0 -29
  449. osn_selenium/executors/unified/cdp/layer_tree.py +0 -71
  450. osn_selenium/executors/unified/cdp/log.py +0 -29
  451. osn_selenium/executors/unified/cdp/media.py +0 -15
  452. osn_selenium/executors/unified/cdp/memory.py +0 -59
  453. osn_selenium/executors/unified/cdp/network.py +0 -323
  454. osn_selenium/executors/unified/cdp/overlay.py +0 -209
  455. osn_selenium/executors/unified/cdp/page.py +0 -410
  456. osn_selenium/executors/unified/cdp/performance.py +0 -27
  457. osn_selenium/executors/unified/cdp/performance_timeline.py +0 -17
  458. osn_selenium/executors/unified/cdp/preload.py +0 -15
  459. osn_selenium/executors/unified/cdp/profiler.py +0 -55
  460. osn_selenium/executors/unified/cdp/pwa.py +0 -55
  461. osn_selenium/executors/unified/cdp/runtime.py +0 -245
  462. osn_selenium/executors/unified/cdp/schema.py +0 -17
  463. osn_selenium/executors/unified/cdp/security.py +0 -27
  464. osn_selenium/executors/unified/cdp/service_worker.py +0 -62
  465. osn_selenium/executors/unified/cdp/storage.py +0 -178
  466. osn_selenium/executors/unified/cdp/system_info.py +0 -24
  467. osn_selenium/executors/unified/cdp/target.py +0 -165
  468. osn_selenium/executors/unified/cdp/tethering.py +0 -15
  469. osn_selenium/executors/unified/cdp/tracing.py +0 -62
  470. osn_selenium/executors/unified/cdp/web_audio.py +0 -18
  471. osn_selenium/executors/unified/cdp/web_authn.py +0 -103
  472. osn_selenium-1.0.0.dist-info/RECORD +0 -608
  473. /osn_selenium/{dev_tools/_exception_helpers.py → _exception_helpers.py} +0 -0
  474. /osn_selenium/executors/{unified/cdp → trio_bidi}/__init__.py +0 -0
  475. {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,13 @@
1
+ import math
1
2
  import trio
2
- from typing import Any, Callable, Dict
3
3
  from osn_selenium.instances.protocols import AnyInstanceWrapper
4
+ from typing import (
5
+ Any,
6
+ Callable,
7
+ Dict,
8
+ Optional,
9
+ Union
10
+ )
4
11
  from osn_selenium.exceptions.protocol import (
5
12
  ProtocolComplianceError
6
13
  )
@@ -13,15 +20,20 @@ from osn_selenium.instances.sync.web_element import (
13
20
  from selenium.webdriver.remote.webelement import (
14
21
  WebElement as SeleniumWebElement
15
22
  )
16
- from osn_selenium.webdrivers.protocols import (
17
- SyncWebDriver,
18
- TrioThreadWebDriver
23
+ from osn_selenium.instances.trio_bidi.web_element import (
24
+ WebElement as TrioBiDiWebElement
19
25
  )
20
26
  from osn_selenium.instances.trio_threads.web_element import (
21
27
  WebElement as TrioThreadWebElement
22
28
  )
29
+ from osn_selenium.webdrivers.protocols import (
30
+ SyncWebDriver,
31
+ TrioBiDiWebDriver,
32
+ TrioThreadWebDriver
33
+ )
23
34
  from osn_selenium.instances.convert import (
24
35
  get_sync_instance_wrapper,
36
+ get_trio_bidi_instance_wrapper,
25
37
  get_trio_thread_instance_wrapper
26
38
  )
27
39
 
@@ -31,6 +43,7 @@ __all__ = [
31
43
  "get_wrap_args_function",
32
44
  "unwrap_args",
33
45
  "wrap_sync_args",
46
+ "wrap_trio_bidi_args",
34
47
  "wrap_trio_thread_args"
35
48
  ]
36
49
 
@@ -64,6 +77,91 @@ def unwrap_args(args: Any) -> Any:
64
77
  return args
65
78
 
66
79
 
80
+ def wrap_trio_bidi_args(
81
+ args: Any,
82
+ lock: trio.Lock,
83
+ limiter: trio.CapacityLimiter,
84
+ trio_token: Optional[trio.lowlevel.TrioToken] = None,
85
+ bidi_buffer_size: Union[int, float] = math.inf,
86
+ ) -> Any:
87
+ """
88
+ Recursively wraps Selenium WebElements into TrioBiDiWebElement instances.
89
+
90
+ Args:
91
+ args (Any): Data structure containing potential Selenium WebElements.
92
+ lock (trio.Lock): Trio lock for synchronization.
93
+ limiter (trio.CapacityLimiter): Trio capacity limiter.
94
+ trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
95
+ bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
96
+
97
+ Returns:
98
+ Any: Data structure with wrapped elements.
99
+ """
100
+
101
+ if isinstance(args, list):
102
+ return [
103
+ wrap_trio_bidi_args(
104
+ arg,
105
+ lock=lock,
106
+ limiter=limiter,
107
+ trio_token=trio_token,
108
+ bidi_buffer_size=bidi_buffer_size,
109
+ ) for arg in args
110
+ ]
111
+
112
+ if isinstance(args, set):
113
+ return {
114
+ wrap_trio_bidi_args(
115
+ arg,
116
+ lock=lock,
117
+ limiter=limiter,
118
+ trio_token=trio_token,
119
+ bidi_buffer_size=bidi_buffer_size,
120
+ ) for arg in args
121
+ }
122
+
123
+ if isinstance(args, tuple):
124
+ return (
125
+ wrap_trio_bidi_args(
126
+ arg,
127
+ lock=lock,
128
+ limiter=limiter,
129
+ trio_token=trio_token,
130
+ bidi_buffer_size=bidi_buffer_size,
131
+ ) for arg in args
132
+ )
133
+
134
+ if isinstance(args, dict):
135
+ return {
136
+ wrap_trio_bidi_args(
137
+ key,
138
+ lock=lock,
139
+ limiter=limiter,
140
+ trio_token=trio_token,
141
+ bidi_buffer_size=bidi_buffer_size,
142
+ ): wrap_trio_bidi_args(
143
+ value,
144
+ lock=lock,
145
+ limiter=limiter,
146
+ trio_token=trio_token,
147
+ bidi_buffer_size=bidi_buffer_size,
148
+ )
149
+ for key, value in args.items()
150
+ }
151
+
152
+ if isinstance(args, SeleniumWebElement):
153
+ return get_trio_bidi_instance_wrapper(
154
+ wrapper_class=TrioBiDiWebElement,
155
+ legacy_object=args,
156
+ lock=lock,
157
+ limiter=limiter,
158
+ trio_token=trio_token,
159
+ bidi_buffer_size=bidi_buffer_size,
160
+ )
161
+
162
+ return args
163
+
164
+
67
165
  def wrap_trio_thread_args(args: Any, lock: trio.Lock, limiter: trio.CapacityLimiter) -> Any:
68
166
  """
69
167
  Recursively wraps Selenium WebElements into TrioThreadWebElement instances.
@@ -146,19 +244,34 @@ def get_wrap_args_function(driver: ANY_WEBDRIVER_PROTOCOL_TYPEHINT) -> Callable[
146
244
  ExpectedTypeError: If the driver instance type is not supported.
147
245
  """
148
246
 
149
- if isinstance(driver, SyncWebDriver) and driver._architecture_impl == "sync":
247
+ if isinstance(driver, SyncWebDriver) and driver.architecture == "sync":
150
248
  def wrapper(args: Any) -> Any:
151
249
  return wrap_sync_args(args)
152
250
 
153
251
  return wrapper
154
252
 
155
- if isinstance(driver, TrioThreadWebDriver) and driver._architecture_impl == "trio_threads":
253
+ if isinstance(driver, TrioThreadWebDriver) and driver.architecture == "trio_threads":
156
254
  def wrapper(args: Any) -> Any:
157
255
  return wrap_trio_thread_args(args, lock=driver.lock, limiter=driver.capacity_limiter)
158
256
 
159
257
  return wrapper
160
258
 
161
- raise ProtocolComplianceError(instance=driver, expected_protocols=(SyncWebDriver, TrioThreadWebDriver))
259
+ if isinstance(driver, TrioBiDiWebDriver) and driver.architecture == "trio_bidi":
260
+ def wrapper(args: Any) -> Any:
261
+ return wrap_trio_bidi_args(
262
+ args,
263
+ lock=driver.lock,
264
+ limiter=driver.capacity_limiter,
265
+ trio_token=driver.trio_token,
266
+ bidi_buffer_size=driver.trio_bidi_buffer_size,
267
+ )
268
+
269
+ return wrapper
270
+
271
+ raise ProtocolComplianceError(
272
+ instance=driver,
273
+ expected_protocols=(SyncWebDriver, TrioThreadWebDriver, TrioBiDiWebDriver)
274
+ )
162
275
 
163
276
 
164
277
  def build_cdp_kwargs(**kwargs: Any) -> Dict[str, Any]:
@@ -25,7 +25,7 @@ def get_js_executor_bridge(driver: ANY_WEBDRIVER_PROTOCOL_TYPEHINT) -> Callable[
25
25
  def wrapper(script: str, *args: Any) -> Any:
26
26
  args = unwrap_args(args)
27
27
 
28
- result = driver._driver_impl.execute_script(script, *args)
28
+ result = driver.driver.execute_script(script, *args)
29
29
 
30
30
  return wrapper_function(result)
31
31
 
@@ -48,7 +48,7 @@ def get_cdp_executor_bridge(driver: ANY_WEBDRIVER_PROTOCOL_TYPEHINT) -> Callable
48
48
  def wrapper(cmd: str, cmd_args: Dict[str, Any]) -> Any:
49
49
  cmd_args = unwrap_args(cmd_args)
50
50
 
51
- result = driver._driver_impl.execute_cdp_cmd(cmd, cmd_args)
51
+ result = driver.driver.execute_cdp_cmd(cmd, cmd_args)
52
52
 
53
53
  return wrapper_function(result)
54
54
 
@@ -1,4 +1,4 @@
1
- from osn_selenium.models import DictModel
1
+ from osn_selenium._base_models import DictModel
2
2
 
3
3
 
4
4
  __all__ = ["ExecutablesTableRow"]
@@ -1,10 +1,16 @@
1
- from typing import Union
1
+ from typing import TYPE_CHECKING, Union
2
2
  from osn_selenium.webdrivers.protocols import (
3
3
  SyncWebDriver,
4
+ TrioBiDiWebDriver,
4
5
  TrioThreadWebDriver
5
6
  )
6
7
 
7
8
 
8
- __all__ = ["ANY_WEBDRIVER_PROTOCOL_TYPEHINT"]
9
+ __all__ = ["ANY_TRIO_WEBDRIVER_TYPEHINT", "ANY_WEBDRIVER_PROTOCOL_TYPEHINT"]
9
10
 
10
- ANY_WEBDRIVER_PROTOCOL_TYPEHINT = Union[SyncWebDriver, TrioThreadWebDriver]
11
+ if TYPE_CHECKING:
12
+ from osn_selenium.webdrivers.trio_threads.core import CoreWebDriver as TrioThreadsWebDriver
13
+ from osn_selenium.webdrivers.trio_bidi.core import CoreWebDriver as TrioBidiWebDriver
14
+
15
+ ANY_WEBDRIVER_PROTOCOL_TYPEHINT = Union[SyncWebDriver, TrioThreadWebDriver, TrioBiDiWebDriver]
16
+ ANY_TRIO_WEBDRIVER_TYPEHINT = Union["TrioThreadsWebDriver", "TrioBidiWebDriver"]
@@ -2,6 +2,7 @@ import trio
2
2
  from typing import (
3
3
  Optional,
4
4
  Protocol,
5
+ Union,
5
6
  runtime_checkable
6
7
  )
7
8
  from selenium.webdriver.remote.webdriver import (
@@ -9,7 +10,7 @@ from selenium.webdriver.remote.webdriver import (
9
10
  )
10
11
 
11
12
 
12
- __all__ = ["SyncWebDriver", "TrioThreadWebDriver"]
13
+ __all__ = ["SyncWebDriver", "TrioBiDiWebDriver", "TrioThreadWebDriver"]
13
14
 
14
15
 
15
16
  @runtime_checkable
@@ -20,18 +21,89 @@ class TrioThreadWebDriver(Protocol):
20
21
 
21
22
  @property
22
23
  def architecture(self) -> str:
24
+ """
25
+ Returns the driver architecture.
26
+ """
27
+
23
28
  ...
24
29
 
25
30
  @property
26
31
  def capacity_limiter(self) -> trio.CapacityLimiter:
32
+ """
33
+ Returns the Trio capacity limiter.
34
+ """
35
+
27
36
  ...
28
37
 
29
38
  @property
30
39
  def driver(self) -> Optional[legacyWebDriver]:
40
+ """
41
+ Returns the underlying legacy driver.
42
+ """
43
+
31
44
  ...
32
45
 
33
46
  @property
34
47
  def lock(self) -> trio.Lock:
48
+ """
49
+ Returns the Trio lock.
50
+ """
51
+
52
+ ...
53
+
54
+
55
+ @runtime_checkable
56
+ class TrioBiDiWebDriver(Protocol):
57
+ """
58
+ Protocol for a WebDriver that supports BiDi and Trio thread pool operations.
59
+ """
60
+
61
+ @property
62
+ def architecture(self) -> str:
63
+ """
64
+ Returns the driver architecture.
65
+ """
66
+
67
+ ...
68
+
69
+ @property
70
+ def capacity_limiter(self) -> trio.CapacityLimiter:
71
+ """
72
+ Returns the Trio capacity limiter.
73
+ """
74
+
75
+ ...
76
+
77
+ @property
78
+ def driver(self) -> Optional[legacyWebDriver]:
79
+ """
80
+ Returns the underlying legacy driver.
81
+ """
82
+
83
+ ...
84
+
85
+ @property
86
+ def lock(self) -> trio.Lock:
87
+ """
88
+ Returns the Trio lock.
89
+ """
90
+
91
+ ...
92
+
93
+ @property
94
+ def trio_bidi_buffer_size(self) -> Union[int, float]:
95
+ """
96
+ Returns the BiDi task buffer size.
97
+ """
98
+
99
+ ...
100
+
101
+ @property
102
+ def trio_token(self) -> trio.lowlevel.TrioToken:
103
+ """
104
+ Returns the Trio event loop token.
105
+ """
106
+
35
107
  ...
36
108
 
37
109
 
@@ -43,8 +115,16 @@ class SyncWebDriver(Protocol):
43
115
 
44
116
  @property
45
117
  def architecture(self) -> str:
118
+ """
119
+ Returns the driver architecture.
120
+ """
121
+
46
122
  ...
47
123
 
48
124
  @property
49
125
  def driver(self) -> Optional[legacyWebDriver]:
126
+ """
127
+ Returns the underlying legacy driver.
128
+ """
129
+
50
130
  ...
@@ -1,5 +1,9 @@
1
- from typing import Optional, Type
2
1
  from osn_selenium.models import WindowRect
2
+ from typing import (
3
+ Mapping,
4
+ Optional,
5
+ Type
6
+ )
3
7
  from osn_selenium._typehints import PATH_TYPEHINT
4
8
  from osn_selenium.flags.blink import BlinkFlagsManager
5
9
  from osn_selenium.flags.models.blink import BlinkFlags
@@ -50,6 +54,8 @@ class BlinkWebDriver(
50
54
  page_load_timeout: int = 5,
51
55
  script_timeout: int = 5,
52
56
  window_rect: Optional[WindowRect] = None,
57
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
58
+ ignore_cdp_version_package_missing: bool = True,
53
59
  ):
54
60
  """
55
61
  Initializes the BlinkWebDriver instance.
@@ -95,6 +101,8 @@ class BlinkWebDriver(
95
101
  page_load_timeout=page_load_timeout,
96
102
  script_timeout=script_timeout,
97
103
  window_rect=window_rect,
104
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
105
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
98
106
  )
99
107
 
100
108
  BlinkBaseMixin.__init__(
@@ -111,4 +119,6 @@ class BlinkWebDriver(
111
119
  page_load_timeout=page_load_timeout,
112
120
  script_timeout=script_timeout,
113
121
  window_rect=window_rect,
122
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
123
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
114
124
  )
@@ -1,9 +1,17 @@
1
1
  import pathlib
2
- from typing import Optional, Type
3
2
  from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
4
8
  from osn_selenium.flags.blink import BlinkFlagsManager
5
9
  from osn_selenium.flags.models.blink import BlinkFlags
10
+ from osn_selenium.executors.sync.cdp import CDPExecutor
6
11
  from osn_selenium.webdrivers.sync.core.base import CoreBaseMixin
12
+ from osn_selenium.webdrivers._bridges import (
13
+ get_cdp_executor_bridge
14
+ )
7
15
  from osn_selenium._typehints import (
8
16
  ARCHITECTURES_TYPEHINT,
9
17
  PATH_TYPEHINT
@@ -45,6 +53,8 @@ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixi
45
53
  page_load_timeout: int = 5,
46
54
  script_timeout: int = 5,
47
55
  window_rect: Optional[WindowRect] = None,
56
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
57
+ ignore_cdp_version_package_missing: bool = True,
48
58
  ):
49
59
  """
50
60
  Initializes the BlinkWebDriver instance.
@@ -79,6 +89,8 @@ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixi
79
89
  script_timeout (int): The default asynchronous script timeout in seconds. Defaults to 5.
80
90
  window_rect (Optional[WindowRect]): The initial window size and position. If None,
81
91
  the browser's default window size will be used. Defaults to None.
92
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
93
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
82
94
  """
83
95
 
84
96
  CoreBaseMixin.__init__(
@@ -90,6 +102,8 @@ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixi
90
102
  page_load_timeout=page_load_timeout,
91
103
  script_timeout=script_timeout,
92
104
  window_rect=window_rect,
105
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
106
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
93
107
  )
94
108
 
95
109
  UnifiedBlinkBaseMixin.__init__(
@@ -106,12 +120,20 @@ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixi
106
120
  page_load_timeout=page_load_timeout,
107
121
  script_timeout=script_timeout,
108
122
  window_rect=window_rect,
123
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
124
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
109
125
  )
126
+
127
+ self._cdp_executor = CDPExecutor(execute_function=get_cdp_executor_bridge(self))
110
128
 
111
129
  @property
112
130
  def browser_exe(self) -> Optional[pathlib.Path]:
113
131
  return self._browser_exe_impl
114
132
 
133
+ @property
134
+ def cdp(self) -> CDPExecutor:
135
+ return self._cdp_executor
136
+
115
137
  @property
116
138
  def debugging_ip(self) -> Optional[str]:
117
139
  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
- def close_webdriver(self) -> None:
30
- self._close_webdriver_impl()
31
-
32
- def restart_webdriver(
29
+ 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
- self._restart_webdriver_impl(
38
+ 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
- def start_webdriver(
47
+ def __enter__(
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
- self._start_webdriver_impl(
56
+ 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
+ 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
+ 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
+ def stop_webdriver(self) -> None:
84
+ self._stop_webdriver_impl()
@@ -1,5 +1,9 @@
1
- from typing import Optional, Type
2
1
  from osn_selenium.models import WindowRect
2
+ from typing import (
3
+ Mapping,
4
+ Optional,
5
+ Type
6
+ )
3
7
  from osn_selenium._typehints import PATH_TYPEHINT
4
8
  from osn_selenium.flags.chrome import ChromeFlagsManager
5
9
  from osn_selenium.flags.models.chrome import ChromeFlags
@@ -35,7 +39,34 @@ class ChromeWebDriver(
35
39
  page_load_timeout: int = 5,
36
40
  script_timeout: int = 5,
37
41
  window_rect: Optional[WindowRect] = None,
42
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
43
+ ignore_cdp_version_package_missing: bool = True,
38
44
  ):
45
+ """
46
+ Initializes the synchronous Chrome WebDriver with specified configuration.
47
+
48
+ Args:
49
+ webdriver_path (str): Path to the ChromeDriver executable.
50
+ flags_manager_type (Type[ChromeFlagsManager]): The class type used for managing Chrome flags.
51
+ Defaults to ChromeFlagsManager.
52
+ use_browser_exe (bool): Whether to use a specific browser executable path or auto-detect.
53
+ Defaults to True.
54
+ browser_name_in_system (str): The name of the browser in the system registry or path.
55
+ Defaults to "Google Chrome".
56
+ browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Chrome browser executable.
57
+ If None, it may be auto-detected based on other parameters.
58
+ flags (Optional[ChromeFlags]): Initial set of flags to configure the Chrome instance.
59
+ start_page_url (str): The URL to navigate to immediately upon startup.
60
+ Defaults to "about:blank".
61
+ implicitly_wait (int): Default implicit wait time in seconds. Defaults to 5.
62
+ page_load_timeout (int): Default page load timeout in seconds. Defaults to 5.
63
+ script_timeout (int): Default script execution timeout in seconds. Defaults to 5.
64
+ window_rect (Optional[WindowRect]): Initial window dimensions and position.
65
+ If None, browser defaults are used.
66
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
67
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
68
+ """
69
+
39
70
  BlinkWebDriver.__init__(
40
71
  self,
41
72
  browser_exe=browser_exe,
@@ -48,6 +79,8 @@ class ChromeWebDriver(
48
79
  page_load_timeout=page_load_timeout,
49
80
  script_timeout=script_timeout,
50
81
  window_rect=window_rect,
82
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
83
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
51
84
  )
52
85
 
53
86
  ChromeBaseMixin.__init__(
@@ -64,4 +97,6 @@ class ChromeWebDriver(
64
97
  page_load_timeout=page_load_timeout,
65
98
  script_timeout=script_timeout,
66
99
  window_rect=window_rect,
100
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
101
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
67
102
  )
@@ -1,5 +1,9 @@
1
- from typing import Optional, Type
2
1
  from osn_selenium.models import WindowRect
2
+ from typing import (
3
+ Mapping,
4
+ Optional,
5
+ Type
6
+ )
3
7
  from osn_selenium.flags.chrome import ChromeFlagsManager
4
8
  from osn_selenium.flags.models.chrome import ChromeFlags
5
9
  from selenium.webdriver import (
@@ -44,6 +48,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
44
48
  page_load_timeout: int = 5,
45
49
  script_timeout: int = 5,
46
50
  window_rect: Optional[WindowRect] = None,
51
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
52
+ ignore_cdp_version_package_missing: bool = True,
47
53
  ):
48
54
  """
49
55
  Initializes the synchronous Chrome WebDriver mixin with specified configuration.
@@ -67,6 +73,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
67
73
  script_timeout (int): Default script execution timeout in seconds. Defaults to 5.
68
74
  window_rect (Optional[WindowRect]): Initial window dimensions and position.
69
75
  If None, browser defaults are used.
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__(
@@ -83,6 +91,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
83
91
  page_load_timeout=page_load_timeout,
84
92
  script_timeout=script_timeout,
85
93
  window_rect=window_rect,
94
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
95
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
86
96
  )
87
97
 
88
98
  UnifiedChromeBaseMixin.__init__(
@@ -99,6 +109,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
99
109
  page_load_timeout=page_load_timeout,
100
110
  script_timeout=script_timeout,
101
111
  window_rect=window_rect,
112
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
113
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
102
114
  )
103
115
 
104
116
  @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.sync.blink import BlinkLifecycleMixin
5
+ from osn_selenium.webdrivers.sync.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
- def restart_webdriver(
29
+ 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
- self._restart_webdriver_impl(
38
+ 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
- def start_webdriver(
47
+ def __enter__(
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
- self._start_webdriver_impl(
56
+ 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
+ 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
+ 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,6 +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.sync.blink.settings import BlinkSettingsMixin
5
6
  from osn_selenium.webdrivers.unified.chrome.settings import (
6
7
  UnifiedChromeSettingsMixin
7
8
  )
@@ -13,7 +14,11 @@ from osn_selenium.abstract.webdriver.chrome.settings import (
13
14
  __all__ = ["ChromeSettingsMixin"]
14
15
 
15
16
 
16
- class ChromeSettingsMixin(UnifiedChromeSettingsMixin, AbstractChromeSettingsMixin):
17
+ class ChromeSettingsMixin(
18
+ UnifiedChromeSettingsMixin,
19
+ BlinkSettingsMixin,
20
+ AbstractChromeSettingsMixin
21
+ ):
17
22
  """
18
23
  Mixin for configuring and updating settings of the Chrome WebDriver.
19
24