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
@@ -0,0 +1,132 @@
1
+ import trio
2
+ from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
8
+ from osn_selenium._typehints import PATH_TYPEHINT
9
+ from osn_selenium.dev_tools.manager import DevTools
10
+ from osn_selenium.flags.blink import BlinkFlagsManager
11
+ from osn_selenium.flags.models.blink import BlinkFlags
12
+ from osn_selenium.dev_tools.settings import DevToolsSettings
13
+ from osn_selenium.webdrivers.trio_bidi.core import CoreWebDriver
14
+ from osn_selenium.webdrivers.trio_bidi.blink.base import BlinkBaseMixin
15
+ from osn_selenium.abstract.webdriver.blink import (
16
+ AbstractBlinkWebDriver
17
+ )
18
+ from osn_selenium.webdrivers.trio_bidi.blink.settings import BlinkSettingsMixin
19
+ from osn_selenium.webdrivers.trio_bidi.blink.lifecycle import BlinkLifecycleMixin
20
+
21
+
22
+ __all__ = ["BlinkWebDriver"]
23
+
24
+
25
+ class BlinkWebDriver(
26
+ BlinkBaseMixin,
27
+ BlinkLifecycleMixin,
28
+ BlinkSettingsMixin,
29
+ CoreWebDriver,
30
+ AbstractBlinkWebDriver,
31
+ ):
32
+ """
33
+ Concrete Blink WebDriver implementation combining all functional mixins.
34
+
35
+ This class aggregates lifecycle management, element interaction, navigation,
36
+ and browser-specific features into a single usable driver instance.
37
+ """
38
+
39
+ def __init__(
40
+ self,
41
+ browser_exe: Optional[PATH_TYPEHINT],
42
+ browser_name_in_system: str,
43
+ webdriver_path: str,
44
+ use_browser_exe: bool = True,
45
+ flags_manager_type: Type[BlinkFlagsManager] = BlinkFlagsManager,
46
+ flags: Optional[BlinkFlags] = None,
47
+ start_page_url: str = "",
48
+ implicitly_wait: int = 5,
49
+ page_load_timeout: int = 5,
50
+ script_timeout: int = 5,
51
+ window_rect: Optional[WindowRect] = None,
52
+ devtools_settings: Optional[DevToolsSettings] = None,
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,
56
+ ):
57
+ """
58
+ Initializes the BlinkWebDriver instance.
59
+
60
+ This constructor sets up the necessary components for controlling a Blink-based browser,
61
+ including paths, flag managers, timeouts, and integration with DevTools and Trio.
62
+ It also initializes properties related to console encoding and IP pattern matching
63
+ for managing browser processes.
64
+
65
+ Args:
66
+ browser_exe (Optional[PATH_TYPEHINT]): The path to the browser executable
67
+ (e.g., `chrome.exe` or `msedge.exe`). If None, the browser executable will not be
68
+ managed directly by this class (e.g., for remote WebDriver connections where the
69
+ browser is already running).
70
+ browser_name_in_system (str): The common name of the browser executable in the system
71
+ (e.g., "Chrome", "Edge"). Used to auto-detect `browser_exe` if `use_browser_exe` is True.
72
+ webdriver_path (str): The file path to the WebDriver executable (e.g., `chromedriver.exe`).
73
+ use_browser_exe (bool): If True, the browser executable path will be
74
+ automatically determined based on `browser_name_in_system` if `browser_exe`
75
+ is not explicitly provided. If False, `browser_exe` must be None.
76
+ Defaults to True.
77
+ flags_manager_type (Type[BlinkFlagsManager]): The type of flags manager to use.
78
+ Defaults to `BlinkFlagsManager`, which is suitable for Chrome/Edge.
79
+ flags (Optional[BlinkFlags]): Initial browser flags or options
80
+ specific to Blink-based browsers. Can be a `BlinkFlags` object or a generic mapping.
81
+ Defaults to None.
82
+ start_page_url (str): The URL that the browser will attempt to navigate to
83
+ immediately after starting. Defaults to an empty string.
84
+ implicitly_wait (int): The default implicit wait time in seconds for element searches.
85
+ Defaults to 5.
86
+ page_load_timeout (int): The default page load timeout in seconds. Defaults to 5.
87
+ script_timeout (int): The default asynchronous script timeout in seconds. Defaults to 5.
88
+ window_rect (Optional[WindowRect]): The initial window size and position. If None,
89
+ the browser's default window size will be used. Defaults to None.
90
+ devtools_settings (Optional[DevToolsSettings]): Configuration for Chrome DevTools Protocol.
91
+ capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
92
+ throttle concurrent thread-based operations. Defaults to None.
93
+ """
94
+
95
+ CoreWebDriver.__init__(
96
+ self,
97
+ webdriver_path=webdriver_path,
98
+ flags_manager_type=flags_manager_type,
99
+ flags=flags,
100
+ implicitly_wait=implicitly_wait,
101
+ page_load_timeout=page_load_timeout,
102
+ script_timeout=script_timeout,
103
+ window_rect=window_rect,
104
+ capacity_limiter=capacity_limiter,
105
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
106
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
107
+ )
108
+
109
+ BlinkBaseMixin.__init__(
110
+ self,
111
+ browser_exe=browser_exe,
112
+ browser_name_in_system=browser_name_in_system,
113
+ use_browser_exe=use_browser_exe,
114
+ webdriver_path=webdriver_path,
115
+ architecture="trio_bidi",
116
+ flags_manager_type=flags_manager_type,
117
+ flags=flags,
118
+ start_page_url=start_page_url,
119
+ implicitly_wait=implicitly_wait,
120
+ page_load_timeout=page_load_timeout,
121
+ script_timeout=script_timeout,
122
+ window_rect=window_rect,
123
+ capacity_limiter=capacity_limiter,
124
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
125
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
126
+ )
127
+
128
+ self._devtools = DevTools(parent_webdriver=self, devtools_settings=devtools_settings)
129
+
130
+ @property
131
+ def devtools(self) -> DevTools:
132
+ return self._devtools
@@ -0,0 +1,167 @@
1
+ import math
2
+ import trio
3
+ import pathlib
4
+ from osn_selenium.models import WindowRect
5
+ from osn_selenium.flags.blink import BlinkFlagsManager
6
+ from osn_selenium.flags.models.blink import BlinkFlags
7
+ from typing import (
8
+ Mapping,
9
+ Optional,
10
+ Type,
11
+ Union
12
+ )
13
+ from osn_selenium.executors.trio_bidi.cdp import CDPExecutor
14
+ from osn_selenium.webdrivers.trio_bidi.core.base import CoreBaseMixin
15
+ from osn_selenium.webdrivers._bridges import (
16
+ get_cdp_executor_bridge
17
+ )
18
+ from osn_selenium._typehints import (
19
+ ARCHITECTURES_TYPEHINT,
20
+ PATH_TYPEHINT
21
+ )
22
+ from osn_selenium.webdrivers.unified.blink.base import (
23
+ UnifiedBlinkBaseMixin
24
+ )
25
+ from osn_selenium.abstract.webdriver.blink.base import (
26
+ AbstractBlinkBaseMixin
27
+ )
28
+ from selenium.webdriver.chromium.webdriver import (
29
+ ChromiumDriver as legacyWebDriver
30
+ )
31
+
32
+
33
+ __all__ = ["BlinkBaseMixin"]
34
+
35
+
36
+ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixin):
37
+ """
38
+ Base mixin for Blink WebDrivers handling core initialization and state management.
39
+
40
+ This class serves as the foundation for browser-specific implementations, managing
41
+ the WebDriver executable path, configuration flags, timeouts, and the active
42
+ driver instance.
43
+ """
44
+
45
+ def __init__(
46
+ self,
47
+ browser_exe: Optional[PATH_TYPEHINT],
48
+ browser_name_in_system: str,
49
+ webdriver_path: str,
50
+ architecture: ARCHITECTURES_TYPEHINT,
51
+ use_browser_exe: bool = True,
52
+ flags_manager_type: Type[BlinkFlagsManager] = BlinkFlagsManager,
53
+ flags: Optional[BlinkFlags] = None,
54
+ start_page_url: str = "",
55
+ implicitly_wait: int = 5,
56
+ page_load_timeout: int = 5,
57
+ script_timeout: int = 5,
58
+ window_rect: Optional[WindowRect] = None,
59
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
60
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
61
+ ignore_cdp_version_package_missing: bool = True,
62
+ trio_token: Optional[trio.lowlevel.TrioToken] = None,
63
+ bidi_buffer_size: Union[int, float] = math.inf,
64
+ ):
65
+ """
66
+ Initializes the BlinkWebDriver instance.
67
+
68
+ This constructor sets up the necessary components for controlling a Blink-based browser,
69
+ including paths, flag managers, timeouts, and integration with DevTools and Trio.
70
+ It also initializes properties related to console encoding and IP pattern matching
71
+ for managing browser processes.
72
+
73
+ Args:
74
+ browser_exe (Optional[PATH_TYPEHINT]): The path to the browser executable
75
+ (e.g., `chrome.exe` or `msedge.exe`). If None, the browser executable will not be
76
+ managed directly by this class (e.g., for remote WebDriver connections where the
77
+ browser is already running).
78
+ browser_name_in_system (str): The common name of the browser executable in the system
79
+ (e.g., "Chrome", "Edge"). Used to auto-detect `browser_exe` if `use_browser_exe` is True.
80
+ webdriver_path (str): The file path to the WebDriver executable (e.g., `chromedriver.exe`).
81
+ use_browser_exe (bool): If True, the browser executable path will be
82
+ automatically determined based on `browser_name_in_system` if `browser_exe`
83
+ is not explicitly provided. If False, `browser_exe` must be None.
84
+ Defaults to True.
85
+ flags_manager_type (Type[BlinkFlagsManager]): The type of flags manager to use.
86
+ Defaults to `BlinkFlagsManager`, which is suitable for Chrome/Edge.
87
+ flags (Optional[BlinkFlags]): Initial browser flags or options
88
+ specific to Blink-based browsers. Can be a `BlinkFlags` object or a generic mapping.
89
+ Defaults to None.
90
+ start_page_url (str): The URL that the browser will attempt to navigate to
91
+ immediately after starting. Defaults to an empty string.
92
+ implicitly_wait (int): The default implicit wait time in seconds for element searches.
93
+ Defaults to 5.
94
+ page_load_timeout (int): The default page load timeout in seconds. Defaults to 5.
95
+ script_timeout (int): The default asynchronous script timeout in seconds. Defaults to 5.
96
+ window_rect (Optional[WindowRect]): The initial window size and position. If None,
97
+ the browser's default window size will be used. Defaults to None.
98
+ capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
99
+ throttle concurrent thread-based operations. Defaults to None.
100
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
101
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
102
+ trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
103
+ bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
104
+ """
105
+
106
+ CoreBaseMixin.__init__(
107
+ self,
108
+ webdriver_path=webdriver_path,
109
+ flags_manager_type=flags_manager_type,
110
+ flags=flags,
111
+ implicitly_wait=implicitly_wait,
112
+ page_load_timeout=page_load_timeout,
113
+ script_timeout=script_timeout,
114
+ window_rect=window_rect,
115
+ capacity_limiter=capacity_limiter,
116
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
117
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
118
+ trio_token=trio_token,
119
+ bidi_buffer_size=bidi_buffer_size,
120
+ )
121
+
122
+ UnifiedBlinkBaseMixin.__init__(
123
+ self,
124
+ browser_exe=browser_exe,
125
+ browser_name_in_system=browser_name_in_system,
126
+ webdriver_path=webdriver_path,
127
+ architecture=architecture,
128
+ use_browser_exe=use_browser_exe,
129
+ flags_manager_type=flags_manager_type,
130
+ flags=flags,
131
+ start_page_url=start_page_url,
132
+ implicitly_wait=implicitly_wait,
133
+ page_load_timeout=page_load_timeout,
134
+ script_timeout=script_timeout,
135
+ window_rect=window_rect,
136
+ )
137
+
138
+ self._cdp_executor = CDPExecutor(
139
+ execute_function=get_cdp_executor_bridge(self),
140
+ lock=self._lock,
141
+ limiter=self._capacity_limiter,
142
+ token=self._trio_token,
143
+ buffer_size=self._trio_bidi_buffer_size
144
+ )
145
+
146
+ @property
147
+ def browser_exe(self) -> Optional[pathlib.Path]:
148
+ return self._browser_exe_impl
149
+
150
+ @property
151
+ def cdp(self) -> CDPExecutor:
152
+ return self._cdp_executor
153
+
154
+ @property
155
+ def debugging_ip(self) -> Optional[str]:
156
+ return self._debugging_ip_impl
157
+
158
+ @property
159
+ def debugging_port(self) -> Optional[int]:
160
+ return self._debugging_port_impl
161
+
162
+ @property
163
+ def driver(self) -> Optional[legacyWebDriver]:
164
+ return self._driver_impl
165
+
166
+ def set_start_page_url(self, start_page_url: str) -> None:
167
+ self._webdriver_flags_manager.start_page_url = start_page_url
@@ -0,0 +1,89 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium._typehints import PATH_TYPEHINT
4
+ from osn_selenium.flags.models.blink import BlinkFlags
5
+ from osn_selenium.webdrivers.trio_bidi.core.lifecycle import CoreLifecycleMixin
6
+ from osn_selenium.webdrivers.unified.blink.lifecycle import (
7
+ UnifiedBlinkLifecycleMixin
8
+ )
9
+ from osn_selenium.abstract.webdriver.blink.lifecycle import (
10
+ AbstractBlinkLifecycleMixin
11
+ )
12
+
13
+
14
+ __all__ = ["BlinkLifecycleMixin"]
15
+
16
+
17
+ class BlinkLifecycleMixin(
18
+ UnifiedBlinkLifecycleMixin,
19
+ CoreLifecycleMixin,
20
+ AbstractBlinkLifecycleMixin
21
+ ):
22
+ """
23
+ Mixin for managing the lifecycle of the Blink WebDriver.
24
+
25
+ Handles the creation, startup, shutdown, and restarting processes of the
26
+ underlying browser instance, ensuring clean session management.
27
+ """
28
+
29
+ async def start_webdriver(
30
+ self,
31
+ flags: Optional[BlinkFlags] = None,
32
+ browser_exe: Optional[PATH_TYPEHINT] = None,
33
+ browser_name_in_system: Optional[str] = None,
34
+ use_browser_exe: Optional[bool] = None,
35
+ start_page_url: Optional[str] = None,
36
+ window_rect: Optional[WindowRect] = None,
37
+ ) -> None:
38
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
39
+ flags=flags,
40
+ browser_exe=browser_exe,
41
+ browser_name_in_system=browser_name_in_system,
42
+ use_browser_exe=use_browser_exe,
43
+ start_page_url=start_page_url,
44
+ window_rect=window_rect,
45
+ )
46
+ await self._start_bidi_bridge()
47
+
48
+ async def __aenter__(
49
+ self,
50
+ flags: Optional[BlinkFlags] = None,
51
+ browser_exe: Optional[PATH_TYPEHINT] = None,
52
+ browser_name_in_system: Optional[str] = None,
53
+ use_browser_exe: Optional[bool] = None,
54
+ start_page_url: Optional[str] = None,
55
+ window_rect: Optional[WindowRect] = None,
56
+ ) -> None:
57
+ await self.start_webdriver(
58
+ flags=flags,
59
+ browser_exe=browser_exe,
60
+ browser_name_in_system=browser_name_in_system,
61
+ use_browser_exe=use_browser_exe,
62
+ start_page_url=start_page_url,
63
+ window_rect=window_rect,
64
+ )
65
+
66
+ async def restart_webdriver(
67
+ self,
68
+ flags: Optional[BlinkFlags] = None,
69
+ browser_exe: Optional[PATH_TYPEHINT] = None,
70
+ browser_name_in_system: Optional[str] = None,
71
+ use_browser_exe: Optional[bool] = None,
72
+ start_page_url: Optional[str] = None,
73
+ window_rect: Optional[WindowRect] = None,
74
+ ) -> None:
75
+ await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
76
+ flags=flags,
77
+ browser_exe=browser_exe,
78
+ browser_name_in_system=browser_name_in_system,
79
+ use_browser_exe=use_browser_exe,
80
+ start_page_url=start_page_url,
81
+ window_rect=window_rect
82
+ )
83
+
84
+ await self._stop_bidi_bridge()
85
+ await self._start_bidi_bridge()
86
+
87
+ async def stop_webdriver(self) -> None:
88
+ await self.sync_to_trio(sync_function=self._stop_webdriver_impl)()
89
+ await self._stop_bidi_bridge()
@@ -0,0 +1,63 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium._typehints import PATH_TYPEHINT
4
+ from osn_selenium.flags.models.blink import BlinkFlags
5
+ from osn_selenium.webdrivers.trio_bidi.core.settings import CoreSettingsMixin
6
+ from osn_selenium.webdrivers.unified.blink.settings import (
7
+ UnifiedBlinkSettingsMixin
8
+ )
9
+ from osn_selenium.abstract.webdriver.blink.settings import (
10
+ AbstractBlinkSettingsMixin
11
+ )
12
+
13
+
14
+ __all__ = ["BlinkSettingsMixin"]
15
+
16
+
17
+ class BlinkSettingsMixin(
18
+ UnifiedBlinkSettingsMixin,
19
+ CoreSettingsMixin,
20
+ AbstractBlinkSettingsMixin
21
+ ):
22
+ """
23
+ Mixin for configuring and updating settings of the Blink WebDriver.
24
+
25
+ Provides methods to modify browser flags, window rectangles, and other
26
+ configuration parameters either before startup or during a reset.
27
+ """
28
+
29
+ async def reset_settings(
30
+ self,
31
+ flags: Optional[BlinkFlags] = None,
32
+ browser_exe: Optional[PATH_TYPEHINT] = None,
33
+ browser_name_in_system: Optional[str] = None,
34
+ use_browser_exe: Optional[bool] = None,
35
+ start_page_url: str = "",
36
+ window_rect: Optional[WindowRect] = None,
37
+ ) -> None:
38
+ await self.sync_to_trio(sync_function=self._reset_settings_impl)(
39
+ flags=flags,
40
+ browser_exe=browser_exe,
41
+ browser_name_in_system=browser_name_in_system,
42
+ use_browser_exe=use_browser_exe,
43
+ start_page_url=start_page_url,
44
+ window_rect=window_rect
45
+ )
46
+
47
+ async def update_settings(
48
+ self,
49
+ flags: Optional[BlinkFlags] = None,
50
+ browser_exe: Optional[PATH_TYPEHINT] = None,
51
+ browser_name_in_system: Optional[str] = None,
52
+ use_browser_exe: Optional[bool] = None,
53
+ start_page_url: Optional[str] = None,
54
+ window_rect: Optional[WindowRect] = None,
55
+ ) -> None:
56
+ await self.sync_to_trio(sync_function=self._update_settings_impl)(
57
+ flags=flags,
58
+ browser_exe=browser_exe,
59
+ browser_name_in_system=browser_name_in_system,
60
+ use_browser_exe=use_browser_exe,
61
+ start_page_url=start_page_url,
62
+ window_rect=window_rect
63
+ )
@@ -0,0 +1,114 @@
1
+ import trio
2
+ from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
8
+ from osn_selenium._typehints import PATH_TYPEHINT
9
+ from osn_selenium.flags.chrome import ChromeFlagsManager
10
+ from osn_selenium.flags.models.chrome import ChromeFlags
11
+ from osn_selenium.dev_tools.settings import DevToolsSettings
12
+ from osn_selenium.webdrivers.trio_bidi.blink import BlinkWebDriver
13
+ from osn_selenium.webdrivers.trio_bidi.chrome.base import ChromeBaseMixin
14
+ from osn_selenium.abstract.webdriver.chrome import (
15
+ AbstractChromeWebDriver
16
+ )
17
+ from osn_selenium.webdrivers.trio_bidi.chrome.settings import ChromeSettingsMixin
18
+ from osn_selenium.webdrivers.trio_bidi.chrome.lifecycle import ChromeLifecycleMixin
19
+
20
+
21
+ __all__ = ["ChromeWebDriver"]
22
+
23
+
24
+ class ChromeWebDriver(
25
+ ChromeBaseMixin,
26
+ ChromeLifecycleMixin,
27
+ ChromeSettingsMixin,
28
+ BlinkWebDriver,
29
+ AbstractChromeWebDriver,
30
+ ):
31
+ """
32
+ Concrete Chrome WebDriver implementation combining all functional mixins.
33
+
34
+ This class aggregates lifecycle management, element interaction, navigation,
35
+ and browser-specific features into a single usable driver instance.
36
+ """
37
+
38
+ def __init__(
39
+ self,
40
+ webdriver_path: str,
41
+ flags_manager_type: Type[ChromeFlagsManager] = ChromeFlagsManager,
42
+ use_browser_exe: bool = True,
43
+ browser_name_in_system: str = "Google Chrome",
44
+ browser_exe: Optional[PATH_TYPEHINT] = None,
45
+ flags: Optional[ChromeFlags] = None,
46
+ start_page_url: str = "about:blank",
47
+ implicitly_wait: int = 5,
48
+ page_load_timeout: int = 5,
49
+ script_timeout: int = 5,
50
+ window_rect: Optional[WindowRect] = None,
51
+ devtools_settings: Optional[DevToolsSettings] = None,
52
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
53
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
54
+ ignore_cdp_version_package_missing: bool = True,
55
+ ):
56
+ """
57
+ Initializes the Trio-based 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
+
79
+ BlinkWebDriver.__init__(
80
+ self,
81
+ browser_exe=browser_exe,
82
+ browser_name_in_system=browser_name_in_system,
83
+ webdriver_path=webdriver_path,
84
+ use_browser_exe=use_browser_exe,
85
+ flags_manager_type=flags_manager_type,
86
+ flags=flags,
87
+ implicitly_wait=implicitly_wait,
88
+ page_load_timeout=page_load_timeout,
89
+ script_timeout=script_timeout,
90
+ window_rect=window_rect,
91
+ devtools_settings=devtools_settings,
92
+ capacity_limiter=capacity_limiter,
93
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
94
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
95
+ )
96
+
97
+ ChromeBaseMixin.__init__(
98
+ self,
99
+ browser_exe=browser_exe,
100
+ browser_name_in_system=browser_name_in_system,
101
+ use_browser_exe=use_browser_exe,
102
+ webdriver_path=webdriver_path,
103
+ architecture="trio_bidi",
104
+ flags_manager_type=flags_manager_type,
105
+ flags=flags,
106
+ start_page_url=start_page_url,
107
+ implicitly_wait=implicitly_wait,
108
+ page_load_timeout=page_load_timeout,
109
+ script_timeout=script_timeout,
110
+ window_rect=window_rect,
111
+ capacity_limiter=capacity_limiter,
112
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
113
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
114
+ )
@@ -0,0 +1,127 @@
1
+ import math
2
+ import trio
3
+ from osn_selenium.models import WindowRect
4
+ from osn_selenium.flags.chrome import ChromeFlagsManager
5
+ from osn_selenium.flags.models.chrome import ChromeFlags
6
+ from typing import (
7
+ Mapping,
8
+ Optional,
9
+ Type,
10
+ Union
11
+ )
12
+ from selenium.webdriver import (
13
+ Chrome as legacyChrome
14
+ )
15
+ from osn_selenium.webdrivers.trio_bidi.blink.base import BlinkBaseMixin
16
+ from osn_selenium._typehints import (
17
+ ARCHITECTURES_TYPEHINT,
18
+ PATH_TYPEHINT
19
+ )
20
+ from osn_selenium.webdrivers.unified.chrome.base import (
21
+ UnifiedChromeBaseMixin
22
+ )
23
+ from osn_selenium.abstract.webdriver.chrome.base import (
24
+ AbstractChromeBaseMixin
25
+ )
26
+
27
+
28
+ __all__ = ["ChromeBaseMixin"]
29
+
30
+
31
+ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBaseMixin):
32
+ """
33
+ Base mixin for Chrome WebDrivers handling core initialization and state management.
34
+
35
+ This class serves as the foundation for browser-specific implementations, managing
36
+ the WebDriver executable path, configuration flags, timeouts, and the active
37
+ driver instance.
38
+ """
39
+
40
+ def __init__(
41
+ self,
42
+ webdriver_path: str,
43
+ architecture: ARCHITECTURES_TYPEHINT,
44
+ flags_manager_type: Type[ChromeFlagsManager] = ChromeFlagsManager,
45
+ use_browser_exe: bool = True,
46
+ browser_name_in_system: str = "Google Chrome",
47
+ browser_exe: Optional[PATH_TYPEHINT] = None,
48
+ flags: Optional[ChromeFlags] = None,
49
+ start_page_url: str = "about:blank",
50
+ implicitly_wait: int = 5,
51
+ page_load_timeout: int = 5,
52
+ script_timeout: int = 5,
53
+ window_rect: Optional[WindowRect] = None,
54
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
55
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
56
+ ignore_cdp_version_package_missing: bool = True,
57
+ trio_token: Optional[trio.lowlevel.TrioToken] = None,
58
+ bidi_buffer_size: Union[int, float] = math.inf,
59
+ ):
60
+ """
61
+ Initializes the Trio-based Chrome WebDriver mixin with specified configuration.
62
+
63
+ Args:
64
+ webdriver_path (str): Path to the ChromeDriver executable.
65
+ architecture (ARCHITECTURE_TYPEHINT): System architecture.
66
+ flags_manager_type (Type[ChromeFlagsManager]): The class type used for managing Chrome flags.
67
+ Defaults to ChromeFlagsManager.
68
+ use_browser_exe (bool): Whether to use a specific browser executable path or auto-detect.
69
+ Defaults to True.
70
+ browser_name_in_system (str): The name of the browser in the system registry or path.
71
+ Defaults to "Google Chrome".
72
+ browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Chrome browser executable.
73
+ flags (Optional[ChromeFlags]): Initial set of flags.
74
+ start_page_url (str): The initial URL. Defaults to "about:blank".
75
+ implicitly_wait (int): Default implicit wait time.
76
+ page_load_timeout (int): Default page load timeout.
77
+ script_timeout (int): Default script timeout.
78
+ window_rect (Optional[WindowRect]): Initial window dimensions.
79
+ capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
80
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
81
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
82
+ trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
83
+ bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
84
+ """
85
+
86
+ BlinkBaseMixin.__init__(
87
+ self,
88
+ browser_exe=browser_exe,
89
+ browser_name_in_system=browser_name_in_system,
90
+ use_browser_exe=use_browser_exe,
91
+ webdriver_path=webdriver_path,
92
+ architecture=architecture,
93
+ flags_manager_type=flags_manager_type,
94
+ flags=flags,
95
+ start_page_url=start_page_url,
96
+ implicitly_wait=implicitly_wait,
97
+ page_load_timeout=page_load_timeout,
98
+ script_timeout=script_timeout,
99
+ window_rect=window_rect,
100
+ capacity_limiter=capacity_limiter,
101
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
102
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
103
+ trio_token=trio_token,
104
+ bidi_buffer_size=bidi_buffer_size,
105
+ )
106
+
107
+ UnifiedChromeBaseMixin.__init__(
108
+ self,
109
+ webdriver_path=webdriver_path,
110
+ architecture=architecture,
111
+ flags_manager_type=flags_manager_type,
112
+ use_browser_exe=use_browser_exe,
113
+ browser_name_in_system=browser_name_in_system,
114
+ browser_exe=browser_exe,
115
+ flags=flags,
116
+ start_page_url=start_page_url,
117
+ implicitly_wait=implicitly_wait,
118
+ page_load_timeout=page_load_timeout,
119
+ script_timeout=script_timeout,
120
+ window_rect=window_rect,
121
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
122
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
123
+ )
124
+
125
+ @property
126
+ def driver(self) -> Optional[legacyChrome]:
127
+ return self._driver_impl