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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. osn_selenium/_decorators.py +57 -0
  2. osn_selenium/_trio_threads_helpers.py +157 -0
  3. osn_selenium/_typehints.py +1 -1
  4. osn_selenium/abstract/webdriver/blink/base.py +14 -0
  5. osn_selenium/abstract/webdriver/blink/lifecycle.py +8 -8
  6. osn_selenium/abstract/webdriver/core/base.py +0 -14
  7. osn_selenium/abstract/webdriver/core/capture.py +4 -3
  8. osn_selenium/abstract/webdriver/core/lifecycle.py +8 -8
  9. osn_selenium/abstract/webdriver/core/script.py +5 -4
  10. osn_selenium/abstract/webdriver/core/window.py +11 -11
  11. osn_selenium/dev_tools/_decorators.py +1 -42
  12. osn_selenium/dev_tools/_functions.py +2 -4
  13. osn_selenium/dev_tools/domains/__init__.py +1 -1
  14. osn_selenium/dev_tools/domains/fetch.py +5 -7
  15. osn_selenium/dev_tools/domains_default/fetch.py +1 -1
  16. osn_selenium/dev_tools/logger/main.py +9 -9
  17. osn_selenium/dev_tools/logger/target.py +7 -7
  18. osn_selenium/dev_tools/manager/base.py +10 -19
  19. osn_selenium/dev_tools/manager/lifecycle.py +83 -74
  20. osn_selenium/dev_tools/manager/logging.py +1 -1
  21. osn_selenium/dev_tools/manager/targets.py +13 -5
  22. osn_selenium/dev_tools/settings.py +4 -4
  23. osn_selenium/dev_tools/target/base.py +18 -11
  24. osn_selenium/dev_tools/target/discovery.py +1 -1
  25. osn_selenium/dev_tools/target/events.py +2 -2
  26. osn_selenium/dev_tools/target/fingerprint.py +1 -1
  27. osn_selenium/dev_tools/target/lifecycle.py +103 -43
  28. osn_selenium/dev_tools/target/logging.py +1 -1
  29. osn_selenium/exceptions/__init__.py +0 -1
  30. osn_selenium/exceptions/base.py +28 -1
  31. osn_selenium/exceptions/bidi_bridge.py +59 -0
  32. osn_selenium/exceptions/configuration.py +1 -8
  33. osn_selenium/exceptions/dependencies.py +2 -2
  34. osn_selenium/exceptions/devtools.py +9 -39
  35. osn_selenium/exceptions/experimental.py +26 -0
  36. osn_selenium/exceptions/flags.py +0 -2
  37. osn_selenium/exceptions/instance.py +1 -9
  38. osn_selenium/exceptions/javascript.py +0 -2
  39. osn_selenium/exceptions/logic.py +0 -2
  40. osn_selenium/exceptions/path.py +1 -9
  41. osn_selenium/exceptions/platform.py +0 -2
  42. osn_selenium/exceptions/protocol.py +0 -3
  43. osn_selenium/exceptions/webdriver.py +1 -7
  44. osn_selenium/exceptions/window.py +1 -8
  45. osn_selenium/executors/sync/cdp.py +0 -5
  46. osn_selenium/executors/trio_bidi/cdp.py +101 -0
  47. osn_selenium/executors/trio_bidi/javascript.py +101 -0
  48. osn_selenium/executors/trio_threads/cdp.py +0 -5
  49. osn_selenium/flags/base.py +6 -4
  50. osn_selenium/flags/blink.py +2 -2
  51. osn_selenium/flags/chrome.py +6 -6
  52. osn_selenium/flags/edge.py +6 -6
  53. osn_selenium/instances/convert.py +44 -3
  54. osn_selenium/instances/protocols.py +47 -1
  55. osn_selenium/instances/sync/browsing_context.py +2 -2
  56. osn_selenium/instances/sync/script.py +7 -2
  57. osn_selenium/instances/sync/web_element.py +1 -1
  58. osn_selenium/instances/trio_bidi/__init__.py +1 -0
  59. osn_selenium/instances/trio_bidi/shadow_root.py +180 -0
  60. osn_selenium/instances/trio_bidi/switch_to.py +143 -0
  61. osn_selenium/instances/trio_bidi/web_driver_wait.py +124 -0
  62. osn_selenium/instances/trio_bidi/web_element.py +239 -0
  63. osn_selenium/instances/trio_threads/browsing_context.py +2 -2
  64. osn_selenium/instances/trio_threads/fedcm.py +1 -1
  65. osn_selenium/instances/trio_threads/network.py +1 -1
  66. osn_selenium/instances/trio_threads/script.py +7 -2
  67. osn_selenium/instances/trio_threads/web_extension.py +1 -1
  68. osn_selenium/instances/unified/browsing_context.py +2 -2
  69. osn_selenium/instances/unified/script.py +2 -2
  70. osn_selenium/instances/unified/web_element.py +3 -5
  71. osn_selenium/javascript/fingerprint/__init__.py +2 -1
  72. osn_selenium/trio_bidi/__init__.py +1 -0
  73. osn_selenium/trio_bidi/_context_vars.py +12 -0
  74. osn_selenium/trio_bidi/_error_mappings.py +123 -0
  75. osn_selenium/trio_bidi/_error_redirects.py +194 -0
  76. osn_selenium/trio_bidi/_file_functions.py +28 -0
  77. osn_selenium/trio_bidi/_internal_mappings.py +10 -0
  78. osn_selenium/trio_bidi/_models.py +199 -0
  79. osn_selenium/trio_bidi/_typehints.py +20 -0
  80. osn_selenium/trio_bidi/connection_pool.py +587 -0
  81. osn_selenium/trio_bidi/mapping/__init__.py +1 -0
  82. osn_selenium/trio_bidi/mapping/_constants.py +14 -0
  83. osn_selenium/trio_bidi/mapping/_js_snippets.py +285 -0
  84. osn_selenium/trio_bidi/mapping/_utils.py +4 -0
  85. osn_selenium/trio_bidi/mapping/request_functions/__init__.py +87 -0
  86. osn_selenium/trio_bidi/mapping/request_functions/_alert.py +102 -0
  87. osn_selenium/trio_bidi/mapping/request_functions/_args_helpers.py +225 -0
  88. osn_selenium/trio_bidi/mapping/request_functions/_capture.py +71 -0
  89. osn_selenium/trio_bidi/mapping/request_functions/_cdp.py +40 -0
  90. osn_selenium/trio_bidi/mapping/request_functions/_element.py +55 -0
  91. osn_selenium/trio_bidi/mapping/request_functions/_file.py +32 -0
  92. osn_selenium/trio_bidi/mapping/request_functions/_navigation.py +147 -0
  93. osn_selenium/trio_bidi/mapping/request_functions/_script.py +85 -0
  94. osn_selenium/trio_bidi/mapping/request_functions/_shadow_root.py +65 -0
  95. osn_selenium/trio_bidi/mapping/request_functions/_switch_to.py +59 -0
  96. osn_selenium/trio_bidi/mapping/request_functions/_web_element.py +448 -0
  97. osn_selenium/trio_bidi/mapping/request_functions/_window.py +125 -0
  98. osn_selenium/trio_bidi/mapping/response_functions/__init__.py +86 -0
  99. osn_selenium/trio_bidi/mapping/response_functions/_alert.py +81 -0
  100. osn_selenium/trio_bidi/mapping/response_functions/_args_helpers.py +183 -0
  101. osn_selenium/trio_bidi/mapping/response_functions/_args_validators.py +153 -0
  102. osn_selenium/trio_bidi/mapping/response_functions/_capture.py +71 -0
  103. osn_selenium/trio_bidi/mapping/response_functions/_cdp.py +26 -0
  104. osn_selenium/trio_bidi/mapping/response_functions/_element.py +58 -0
  105. osn_selenium/trio_bidi/mapping/response_functions/_file.py +30 -0
  106. osn_selenium/trio_bidi/mapping/response_functions/_navigation.py +120 -0
  107. osn_selenium/trio_bidi/mapping/response_functions/_script.py +57 -0
  108. osn_selenium/trio_bidi/mapping/response_functions/_shadow_root.py +58 -0
  109. osn_selenium/trio_bidi/mapping/response_functions/_switch_to.py +57 -0
  110. osn_selenium/trio_bidi/mapping/response_functions/_web_element.py +368 -0
  111. osn_selenium/trio_bidi/mapping/response_functions/_window.py +119 -0
  112. osn_selenium/trio_bidi/mixin.py +186 -0
  113. osn_selenium/trio_bidi/remote_connection.py +164 -0
  114. osn_selenium/trio_threads_mixin.py +22 -68
  115. osn_selenium/webdrivers/_args_helpers.py +118 -5
  116. osn_selenium/webdrivers/_typehints.py +9 -3
  117. osn_selenium/webdrivers/protocols.py +81 -1
  118. osn_selenium/webdrivers/sync/blink/base.py +10 -0
  119. osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
  120. osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
  121. osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
  122. osn_selenium/webdrivers/sync/core/base.py +3 -11
  123. osn_selenium/webdrivers/sync/core/capture.py +3 -2
  124. osn_selenium/webdrivers/sync/core/file.py +3 -2
  125. osn_selenium/webdrivers/sync/core/lifecycle.py +44 -10
  126. osn_selenium/webdrivers/sync/core/script.py +3 -2
  127. osn_selenium/webdrivers/sync/core/window.py +3 -3
  128. osn_selenium/webdrivers/sync/edge/lifecycle.py +23 -5
  129. osn_selenium/webdrivers/sync/edge/settings.py +6 -1
  130. osn_selenium/webdrivers/sync/yandex/lifecycle.py +23 -5
  131. osn_selenium/webdrivers/sync/yandex/settings.py +6 -1
  132. osn_selenium/webdrivers/trio_bidi/__init__.py +1 -0
  133. osn_selenium/webdrivers/trio_bidi/blink/__init__.py +132 -0
  134. osn_selenium/webdrivers/trio_bidi/blink/base.py +167 -0
  135. osn_selenium/webdrivers/trio_bidi/blink/lifecycle.py +89 -0
  136. osn_selenium/webdrivers/trio_bidi/blink/settings.py +63 -0
  137. osn_selenium/webdrivers/trio_bidi/chrome/__init__.py +114 -0
  138. osn_selenium/webdrivers/trio_bidi/chrome/base.py +127 -0
  139. osn_selenium/webdrivers/trio_bidi/chrome/lifecycle.py +85 -0
  140. osn_selenium/webdrivers/trio_bidi/chrome/settings.py +63 -0
  141. osn_selenium/webdrivers/trio_bidi/core/__init__.py +95 -0
  142. osn_selenium/webdrivers/trio_bidi/core/actions.py +70 -0
  143. osn_selenium/webdrivers/trio_bidi/core/base.py +200 -0
  144. osn_selenium/webdrivers/trio_bidi/core/capture.py +39 -0
  145. osn_selenium/webdrivers/trio_bidi/core/devtools.py +49 -0
  146. osn_selenium/webdrivers/trio_bidi/core/element.py +64 -0
  147. osn_selenium/webdrivers/trio_bidi/core/lifecycle.py +135 -0
  148. osn_selenium/webdrivers/trio_bidi/core/navigation.py +37 -0
  149. osn_selenium/webdrivers/trio_bidi/core/script.py +56 -0
  150. osn_selenium/webdrivers/trio_bidi/core/settings.py +36 -0
  151. osn_selenium/webdrivers/trio_bidi/core/window.py +134 -0
  152. osn_selenium/webdrivers/trio_bidi/edge/__init__.py +114 -0
  153. osn_selenium/webdrivers/trio_bidi/edge/base.py +123 -0
  154. osn_selenium/webdrivers/trio_bidi/edge/lifecycle.py +85 -0
  155. osn_selenium/webdrivers/trio_bidi/edge/settings.py +63 -0
  156. osn_selenium/webdrivers/trio_bidi/yandex/__init__.py +114 -0
  157. osn_selenium/webdrivers/trio_bidi/yandex/base.py +120 -0
  158. osn_selenium/webdrivers/trio_bidi/yandex/lifecycle.py +85 -0
  159. osn_selenium/webdrivers/trio_bidi/yandex/settings.py +63 -0
  160. osn_selenium/webdrivers/trio_threads/blink/__init__.py +7 -1
  161. osn_selenium/webdrivers/trio_threads/blink/base.py +14 -0
  162. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
  163. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +23 -5
  164. osn_selenium/webdrivers/trio_threads/chrome/settings.py +1 -1
  165. osn_selenium/webdrivers/trio_threads/core/__init__.py +0 -10
  166. osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
  167. osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
  168. osn_selenium/webdrivers/trio_threads/core/base.py +4 -16
  169. osn_selenium/webdrivers/trio_threads/core/capture.py +3 -2
  170. osn_selenium/webdrivers/trio_threads/core/file.py +3 -2
  171. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +44 -10
  172. osn_selenium/webdrivers/trio_threads/core/script.py +3 -2
  173. osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
  174. osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
  175. osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
  176. osn_selenium/webdrivers/trio_threads/core/window.py +4 -4
  177. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +23 -5
  178. osn_selenium/webdrivers/trio_threads/edge/settings.py +1 -1
  179. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +23 -5
  180. osn_selenium/webdrivers/trio_threads/yandex/settings.py +1 -1
  181. osn_selenium/webdrivers/unified/blink/base.py +5 -1
  182. osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
  183. osn_selenium/webdrivers/unified/chrome/base.py +5 -1
  184. osn_selenium/webdrivers/unified/core/auth.py +4 -2
  185. osn_selenium/webdrivers/unified/core/base.py +16 -10
  186. osn_selenium/webdrivers/unified/core/capture.py +3 -2
  187. osn_selenium/webdrivers/unified/core/components.py +12 -7
  188. osn_selenium/webdrivers/unified/core/devtools.py +2 -1
  189. osn_selenium/webdrivers/unified/core/file.py +3 -2
  190. osn_selenium/webdrivers/unified/core/lifecycle.py +5 -3
  191. osn_selenium/webdrivers/unified/core/script.py +5 -3
  192. osn_selenium/webdrivers/unified/core/storage.py +2 -1
  193. osn_selenium/webdrivers/unified/core/window.py +9 -8
  194. osn_selenium/webdrivers/unified/edge/base.py +5 -1
  195. osn_selenium/webdrivers/unified/yandex/base.py +5 -1
  196. {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/METADATA +3 -2
  197. osn_selenium-1.2.0.dist-info/RECORD +480 -0
  198. osn_selenium/abstract/executors/cdp/__init__.py +0 -435
  199. osn_selenium/abstract/executors/cdp/accessibility.py +0 -62
  200. osn_selenium/abstract/executors/cdp/animation.py +0 -47
  201. osn_selenium/abstract/executors/cdp/audits.py +0 -39
  202. osn_selenium/abstract/executors/cdp/autofill.py +0 -34
  203. osn_selenium/abstract/executors/cdp/background_service.py +0 -22
  204. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -95
  205. osn_selenium/abstract/executors/cdp/browser.py +0 -122
  206. osn_selenium/abstract/executors/cdp/cache_storage.py +0 -49
  207. osn_selenium/abstract/executors/cdp/cast.py +0 -31
  208. osn_selenium/abstract/executors/cdp/console.py +0 -18
  209. osn_selenium/abstract/executors/cdp/css.py +0 -197
  210. osn_selenium/abstract/executors/cdp/debugger.py +0 -198
  211. osn_selenium/abstract/executors/cdp/device_access.py +0 -22
  212. osn_selenium/abstract/executors/cdp/device_orientation.py +0 -14
  213. osn_selenium/abstract/executors/cdp/dom.py +0 -305
  214. osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -57
  215. osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -42
  216. osn_selenium/abstract/executors/cdp/dom_storage.py +0 -31
  217. osn_selenium/abstract/executors/cdp/emulation.py +0 -259
  218. osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -18
  219. osn_selenium/abstract/executors/cdp/extensions.py +0 -31
  220. osn_selenium/abstract/executors/cdp/fed_cm.py +0 -35
  221. osn_selenium/abstract/executors/cdp/fetch.py +0 -76
  222. osn_selenium/abstract/executors/cdp/file_system.py +0 -11
  223. osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -30
  224. osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -73
  225. osn_selenium/abstract/executors/cdp/indexed_db.py +0 -99
  226. osn_selenium/abstract/executors/cdp/input.py +0 -158
  227. osn_selenium/abstract/executors/cdp/inspector.py +0 -14
  228. osn_selenium/abstract/executors/cdp/io.py +0 -24
  229. osn_selenium/abstract/executors/cdp/layer_tree.py +0 -61
  230. osn_selenium/abstract/executors/cdp/log.py +0 -27
  231. osn_selenium/abstract/executors/cdp/media.py +0 -14
  232. osn_selenium/abstract/executors/cdp/memory.py +0 -61
  233. osn_selenium/abstract/executors/cdp/network.py +0 -252
  234. osn_selenium/abstract/executors/cdp/overlay.py +0 -166
  235. osn_selenium/abstract/executors/cdp/page.py +0 -347
  236. osn_selenium/abstract/executors/cdp/performance.py +0 -28
  237. osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -11
  238. osn_selenium/abstract/executors/cdp/preload.py +0 -14
  239. osn_selenium/abstract/executors/cdp/profiler.py +0 -54
  240. osn_selenium/abstract/executors/cdp/pwa.py +0 -46
  241. osn_selenium/abstract/executors/cdp/runtime.py +0 -176
  242. osn_selenium/abstract/executors/cdp/schema.py +0 -11
  243. osn_selenium/abstract/executors/cdp/security.py +0 -26
  244. osn_selenium/abstract/executors/cdp/service_worker.py +0 -54
  245. osn_selenium/abstract/executors/cdp/storage.py +0 -175
  246. osn_selenium/abstract/executors/cdp/system_info.py +0 -24
  247. osn_selenium/abstract/executors/cdp/target.py +0 -125
  248. osn_selenium/abstract/executors/cdp/tethering.py +0 -14
  249. osn_selenium/abstract/executors/cdp/tracing.py +0 -48
  250. osn_selenium/abstract/executors/cdp/web_audio.py +0 -19
  251. osn_selenium/abstract/executors/cdp/web_authn.py +0 -76
  252. osn_selenium/base_mixin.py +0 -122
  253. osn_selenium/executors/sync/cdp/__init__.py +0 -550
  254. osn_selenium/executors/sync/cdp/accessibility.py +0 -74
  255. osn_selenium/executors/sync/cdp/animation.py +0 -50
  256. osn_selenium/executors/sync/cdp/audits.py +0 -48
  257. osn_selenium/executors/sync/cdp/autofill.py +0 -39
  258. osn_selenium/executors/sync/cdp/background_service.py +0 -30
  259. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -101
  260. osn_selenium/executors/sync/cdp/browser.py +0 -131
  261. osn_selenium/executors/sync/cdp/cache_storage.py +0 -66
  262. osn_selenium/executors/sync/cdp/cast.py +0 -38
  263. osn_selenium/executors/sync/cdp/console.py +0 -24
  264. osn_selenium/executors/sync/cdp/css.py +0 -187
  265. osn_selenium/executors/sync/cdp/debugger.py +0 -206
  266. osn_selenium/executors/sync/cdp/device_access.py +0 -27
  267. osn_selenium/executors/sync/cdp/device_orientation.py +0 -24
  268. osn_selenium/executors/sync/cdp/dom.py +0 -310
  269. osn_selenium/executors/sync/cdp/dom_debugger.py +0 -56
  270. osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -58
  271. osn_selenium/executors/sync/cdp/dom_storage.py +0 -38
  272. osn_selenium/executors/sync/cdp/emulation.py +0 -270
  273. osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -27
  274. osn_selenium/executors/sync/cdp/extensions.py +0 -39
  275. osn_selenium/executors/sync/cdp/fed_cm.py +0 -45
  276. osn_selenium/executors/sync/cdp/fetch.py +0 -96
  277. osn_selenium/executors/sync/cdp/file_system.py +0 -18
  278. osn_selenium/executors/sync/cdp/headless_experimental.py +0 -44
  279. osn_selenium/executors/sync/cdp/heap_profiler.py +0 -89
  280. osn_selenium/executors/sync/cdp/indexed_db.py +0 -142
  281. osn_selenium/executors/sync/cdp/input.py +0 -233
  282. osn_selenium/executors/sync/cdp/inspector.py +0 -21
  283. osn_selenium/executors/sync/cdp/io.py +0 -33
  284. osn_selenium/executors/sync/cdp/layer_tree.py +0 -71
  285. osn_selenium/executors/sync/cdp/log.py +0 -35
  286. osn_selenium/executors/sync/cdp/media.py +0 -21
  287. osn_selenium/executors/sync/cdp/memory.py +0 -62
  288. osn_selenium/executors/sync/cdp/network.py +0 -287
  289. osn_selenium/executors/sync/cdp/overlay.py +0 -174
  290. osn_selenium/executors/sync/cdp/page.py +0 -365
  291. osn_selenium/executors/sync/cdp/performance.py +0 -33
  292. osn_selenium/executors/sync/cdp/performance_timeline.py +0 -26
  293. osn_selenium/executors/sync/cdp/preload.py +0 -21
  294. osn_selenium/executors/sync/cdp/profiler.py +0 -58
  295. osn_selenium/executors/sync/cdp/pwa.py +0 -55
  296. osn_selenium/executors/sync/cdp/runtime.py +0 -221
  297. osn_selenium/executors/sync/cdp/schema.py +0 -23
  298. osn_selenium/executors/sync/cdp/security.py +0 -30
  299. osn_selenium/executors/sync/cdp/service_worker.py +0 -56
  300. osn_selenium/executors/sync/cdp/storage.py +0 -151
  301. osn_selenium/executors/sync/cdp/system_info.py +0 -30
  302. osn_selenium/executors/sync/cdp/target.py +0 -147
  303. osn_selenium/executors/sync/cdp/tethering.py +0 -21
  304. osn_selenium/executors/sync/cdp/tracing.py +0 -62
  305. osn_selenium/executors/sync/cdp/web_audio.py +0 -24
  306. osn_selenium/executors/sync/cdp/web_authn.py +0 -82
  307. osn_selenium/executors/trio_threads/cdp/__init__.py +0 -771
  308. osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -87
  309. osn_selenium/executors/trio_threads/cdp/animation.py +0 -63
  310. osn_selenium/executors/trio_threads/cdp/audits.py +0 -57
  311. osn_selenium/executors/trio_threads/cdp/autofill.py +0 -52
  312. osn_selenium/executors/trio_threads/cdp/background_service.py +0 -40
  313. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -111
  314. osn_selenium/executors/trio_threads/cdp/browser.py +0 -140
  315. osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -79
  316. osn_selenium/executors/trio_threads/cdp/cast.py +0 -47
  317. osn_selenium/executors/trio_threads/cdp/console.py +0 -33
  318. osn_selenium/executors/trio_threads/cdp/css.py +0 -196
  319. osn_selenium/executors/trio_threads/cdp/debugger.py +0 -219
  320. osn_selenium/executors/trio_threads/cdp/device_access.py +0 -40
  321. osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -34
  322. osn_selenium/executors/trio_threads/cdp/dom.py +0 -319
  323. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -69
  324. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -71
  325. osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -51
  326. osn_selenium/executors/trio_threads/cdp/emulation.py +0 -283
  327. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -37
  328. osn_selenium/executors/trio_threads/cdp/extensions.py +0 -52
  329. osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -54
  330. osn_selenium/executors/trio_threads/cdp/fetch.py +0 -105
  331. osn_selenium/executors/trio_threads/cdp/file_system.py +0 -31
  332. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -54
  333. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -102
  334. osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -155
  335. osn_selenium/executors/trio_threads/cdp/input.py +0 -242
  336. osn_selenium/executors/trio_threads/cdp/inspector.py +0 -34
  337. osn_selenium/executors/trio_threads/cdp/io.py +0 -42
  338. osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -84
  339. osn_selenium/executors/trio_threads/cdp/log.py +0 -44
  340. osn_selenium/executors/trio_threads/cdp/media.py +0 -30
  341. osn_selenium/executors/trio_threads/cdp/memory.py +0 -71
  342. osn_selenium/executors/trio_threads/cdp/network.py +0 -296
  343. osn_selenium/executors/trio_threads/cdp/overlay.py +0 -183
  344. osn_selenium/executors/trio_threads/cdp/page.py +0 -374
  345. osn_selenium/executors/trio_threads/cdp/performance.py +0 -46
  346. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -36
  347. osn_selenium/executors/trio_threads/cdp/preload.py +0 -30
  348. osn_selenium/executors/trio_threads/cdp/profiler.py +0 -71
  349. osn_selenium/executors/trio_threads/cdp/pwa.py +0 -64
  350. osn_selenium/executors/trio_threads/cdp/runtime.py +0 -230
  351. osn_selenium/executors/trio_threads/cdp/schema.py +0 -32
  352. osn_selenium/executors/trio_threads/cdp/security.py +0 -43
  353. osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -69
  354. osn_selenium/executors/trio_threads/cdp/storage.py +0 -162
  355. osn_selenium/executors/trio_threads/cdp/system_info.py +0 -43
  356. osn_selenium/executors/trio_threads/cdp/target.py +0 -156
  357. osn_selenium/executors/trio_threads/cdp/tethering.py +0 -34
  358. osn_selenium/executors/trio_threads/cdp/tracing.py +0 -71
  359. osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -37
  360. osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -95
  361. osn_selenium/executors/unified/cdp/accessibility.py +0 -81
  362. osn_selenium/executors/unified/cdp/animation.py +0 -50
  363. osn_selenium/executors/unified/cdp/audits.py +0 -45
  364. osn_selenium/executors/unified/cdp/autofill.py +0 -41
  365. osn_selenium/executors/unified/cdp/background_service.py +0 -24
  366. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -132
  367. osn_selenium/executors/unified/cdp/browser.py +0 -143
  368. osn_selenium/executors/unified/cdp/cache_storage.py +0 -69
  369. osn_selenium/executors/unified/cdp/cast.py +0 -32
  370. osn_selenium/executors/unified/cdp/console.py +0 -18
  371. osn_selenium/executors/unified/cdp/css.py +0 -237
  372. osn_selenium/executors/unified/cdp/debugger.py +0 -243
  373. osn_selenium/executors/unified/cdp/device_access.py +0 -21
  374. osn_selenium/executors/unified/cdp/device_orientation.py +0 -18
  375. osn_selenium/executors/unified/cdp/dom.py +0 -380
  376. osn_selenium/executors/unified/cdp/dom_debugger.py +0 -65
  377. osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -58
  378. osn_selenium/executors/unified/cdp/dom_storage.py +0 -38
  379. osn_selenium/executors/unified/cdp/emulation.py +0 -312
  380. osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -24
  381. osn_selenium/executors/unified/cdp/extensions.py +0 -45
  382. osn_selenium/executors/unified/cdp/fed_cm.py +0 -51
  383. osn_selenium/executors/unified/cdp/fetch.py +0 -111
  384. osn_selenium/executors/unified/cdp/file_system.py +0 -15
  385. osn_selenium/executors/unified/cdp/headless_experimental.py +0 -38
  386. osn_selenium/executors/unified/cdp/heap_profiler.py +0 -101
  387. osn_selenium/executors/unified/cdp/indexed_db.py +0 -157
  388. osn_selenium/executors/unified/cdp/input.py +0 -254
  389. osn_selenium/executors/unified/cdp/inspector.py +0 -15
  390. osn_selenium/executors/unified/cdp/io.py +0 -29
  391. osn_selenium/executors/unified/cdp/layer_tree.py +0 -71
  392. osn_selenium/executors/unified/cdp/log.py +0 -29
  393. osn_selenium/executors/unified/cdp/media.py +0 -15
  394. osn_selenium/executors/unified/cdp/memory.py +0 -59
  395. osn_selenium/executors/unified/cdp/network.py +0 -323
  396. osn_selenium/executors/unified/cdp/overlay.py +0 -209
  397. osn_selenium/executors/unified/cdp/page.py +0 -410
  398. osn_selenium/executors/unified/cdp/performance.py +0 -27
  399. osn_selenium/executors/unified/cdp/performance_timeline.py +0 -17
  400. osn_selenium/executors/unified/cdp/preload.py +0 -15
  401. osn_selenium/executors/unified/cdp/profiler.py +0 -55
  402. osn_selenium/executors/unified/cdp/pwa.py +0 -55
  403. osn_selenium/executors/unified/cdp/runtime.py +0 -245
  404. osn_selenium/executors/unified/cdp/schema.py +0 -17
  405. osn_selenium/executors/unified/cdp/security.py +0 -27
  406. osn_selenium/executors/unified/cdp/service_worker.py +0 -62
  407. osn_selenium/executors/unified/cdp/storage.py +0 -178
  408. osn_selenium/executors/unified/cdp/system_info.py +0 -24
  409. osn_selenium/executors/unified/cdp/target.py +0 -165
  410. osn_selenium/executors/unified/cdp/tethering.py +0 -15
  411. osn_selenium/executors/unified/cdp/tracing.py +0 -62
  412. osn_selenium/executors/unified/cdp/web_audio.py +0 -18
  413. osn_selenium/executors/unified/cdp/web_authn.py +0 -103
  414. osn_selenium-1.1.0.dist-info/RECORD +0 -615
  415. /osn_selenium/{dev_tools/_exception_helpers.py → _exception_helpers.py} +0 -0
  416. /osn_selenium/executors/{unified/cdp → trio_bidi}/__init__.py +0 -0
  417. {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/WHEEL +0 -0
  418. {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/top_level.txt +0 -0
@@ -2,7 +2,7 @@ from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
3
  from osn_selenium._typehints import PATH_TYPEHINT
4
4
  from osn_selenium.flags.models.edge import EdgeFlags
5
- from osn_selenium.webdrivers.sync.blink import BlinkLifecycleMixin
5
+ from osn_selenium.webdrivers.sync.blink.lifecycle import BlinkLifecycleMixin
6
6
  from osn_selenium.webdrivers.unified.edge.lifecycle import (
7
7
  UnifiedEdgeLifecycleMixin
8
8
  )
@@ -26,7 +26,7 @@ class EdgeLifecycleMixin(
26
26
  underlying browser instance, ensuring clean session management.
27
27
  """
28
28
 
29
- def restart_webdriver(
29
+ def start_webdriver(
30
30
  self,
31
31
  flags: Optional[EdgeFlags] = None,
32
32
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -35,7 +35,7 @@ class EdgeLifecycleMixin(
35
35
  start_page_url: Optional[str] = None,
36
36
  window_rect: Optional[WindowRect] = None,
37
37
  ) -> None:
38
- 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 EdgeLifecycleMixin(
44
44
  window_rect=window_rect,
45
45
  )
46
46
 
47
- def start_webdriver(
47
+ def __enter__(
48
48
  self,
49
49
  flags: Optional[EdgeFlags] = None,
50
50
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -53,7 +53,25 @@ class EdgeLifecycleMixin(
53
53
  start_page_url: Optional[str] = None,
54
54
  window_rect: Optional[WindowRect] = None,
55
55
  ) -> None:
56
- 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[EdgeFlags] = None,
68
+ browser_exe: Optional[PATH_TYPEHINT] = None,
69
+ browser_name_in_system: Optional[str] = None,
70
+ use_browser_exe: Optional[bool] = None,
71
+ start_page_url: Optional[str] = None,
72
+ window_rect: Optional[WindowRect] = None,
73
+ ) -> None:
74
+ 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.edge import EdgeFlags
5
+ from osn_selenium.webdrivers.sync.blink.settings import BlinkSettingsMixin
5
6
  from osn_selenium.webdrivers.unified.edge.settings import (
6
7
  UnifiedEdgeSettingsMixin
7
8
  )
@@ -13,7 +14,11 @@ from osn_selenium.abstract.webdriver.edge.settings import (
13
14
  __all__ = ["EdgeSettingsMixin"]
14
15
 
15
16
 
16
- class EdgeSettingsMixin(UnifiedEdgeSettingsMixin, AbstractEdgeSettingsMixin):
17
+ class EdgeSettingsMixin(
18
+ UnifiedEdgeSettingsMixin,
19
+ BlinkSettingsMixin,
20
+ AbstractEdgeSettingsMixin
21
+ ):
17
22
  """
18
23
  Mixin for configuring and updating settings of the Edge WebDriver.
19
24
 
@@ -2,7 +2,7 @@ from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
3
  from osn_selenium._typehints import PATH_TYPEHINT
4
4
  from osn_selenium.flags.models.yandex import YandexFlags
5
- from osn_selenium.webdrivers.sync.chrome import ChromeLifecycleMixin
5
+ from osn_selenium.webdrivers.sync.chrome.lifecycle import ChromeLifecycleMixin
6
6
  from osn_selenium.webdrivers.unified.yandex.lifecycle import (
7
7
  UnifiedYandexLifecycleMixin
8
8
  )
@@ -26,7 +26,7 @@ class YandexLifecycleMixin(
26
26
  underlying browser instance, ensuring clean session management.
27
27
  """
28
28
 
29
- def restart_webdriver(
29
+ def start_webdriver(
30
30
  self,
31
31
  flags: Optional[YandexFlags] = None,
32
32
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -35,7 +35,7 @@ class YandexLifecycleMixin(
35
35
  start_page_url: Optional[str] = None,
36
36
  window_rect: Optional[WindowRect] = None,
37
37
  ) -> None:
38
- 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 YandexLifecycleMixin(
44
44
  window_rect=window_rect,
45
45
  )
46
46
 
47
- def start_webdriver(
47
+ def __enter__(
48
48
  self,
49
49
  flags: Optional[YandexFlags] = None,
50
50
  browser_exe: Optional[PATH_TYPEHINT] = None,
@@ -53,7 +53,25 @@ class YandexLifecycleMixin(
53
53
  start_page_url: Optional[str] = None,
54
54
  window_rect: Optional[WindowRect] = None,
55
55
  ) -> None:
56
- 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[YandexFlags] = None,
68
+ browser_exe: Optional[PATH_TYPEHINT] = None,
69
+ browser_name_in_system: Optional[str] = None,
70
+ use_browser_exe: Optional[bool] = None,
71
+ start_page_url: Optional[str] = None,
72
+ window_rect: Optional[WindowRect] = None,
73
+ ) -> None:
74
+ 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.yandex import YandexFlags
5
+ from osn_selenium.webdrivers.sync.chrome.settings import ChromeSettingsMixin
5
6
  from osn_selenium.webdrivers.unified.yandex.settings import (
6
7
  UnifiedYandexSettingsMixin
7
8
  )
@@ -13,7 +14,11 @@ from osn_selenium.abstract.webdriver.yandex.settings import (
13
14
  __all__ = ["YandexSettingsMixin"]
14
15
 
15
16
 
16
- class YandexSettingsMixin(UnifiedYandexSettingsMixin, AbstractYandexSettingsMixin):
17
+ class YandexSettingsMixin(
18
+ UnifiedYandexSettingsMixin,
19
+ ChromeSettingsMixin,
20
+ AbstractYandexSettingsMixin
21
+ ):
17
22
  """
18
23
  Mixin for configuring and updating settings of the Yandex WebDriver.
19
24
 
@@ -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
+ )