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
@@ -1,12 +1,14 @@
1
+ from types import TracebackType
1
2
  from osn_selenium.models import WindowRect
3
+ from osn_selenium.flags.models.base import BrowserFlags
2
4
  from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
5
  from typing import (
4
6
  Any,
5
7
  Dict,
6
8
  Optional,
9
+ Type,
7
10
  Union
8
11
  )
9
- from osn_selenium.flags.models.base import BrowserFlags
10
12
  from selenium.webdriver.remote.remote_connection import RemoteConnection
11
13
  from osn_selenium.webdrivers.unified.core.lifecycle import (
12
14
  UnifiedCoreLifecycleMixin
@@ -27,8 +29,47 @@ class CoreLifecycleMixin(UnifiedCoreLifecycleMixin, TrioThreadMixin, AbstractCor
27
29
  underlying browser instance, ensuring clean session management.
28
30
  """
29
31
 
30
- async def close_webdriver(self) -> None:
31
- await self.sync_to_trio(sync_function=self._close_webdriver_impl)()
32
+ async def start_webdriver(
33
+ self,
34
+ flags: Optional[BrowserFlags] = None,
35
+ window_rect: Optional[WindowRect] = None,
36
+ ) -> None:
37
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(flags=flags, window_rect=window_rect)
38
+
39
+ async def __aenter__(
40
+ self,
41
+ flags: Optional[BrowserFlags] = None,
42
+ window_rect: Optional[WindowRect] = None,
43
+ ) -> None:
44
+ await self.start_webdriver(flags=flags, window_rect=window_rect)
45
+
46
+ async def stop_webdriver(self) -> None:
47
+ await self.sync_to_trio(sync_function=self._stop_webdriver_impl)()
48
+
49
+ async def __aexit__(
50
+ self,
51
+ exc_type: Optional[Type[BaseException]],
52
+ exc_val: Optional[BaseException],
53
+ exc_tb: Optional[TracebackType],
54
+ ) -> bool:
55
+ """
56
+ Asynchronously exits the WebDriver context.
57
+
58
+ Args:
59
+ exc_type (Optional[Type[BaseException]]): The exception type, if any.
60
+ exc_val (Optional[BaseException]): The exception value, if any.
61
+ exc_tb (Optional[TracebackType]): The exception traceback, if any.
62
+
63
+ Returns:
64
+ bool: True if an exception was suppressed, False otherwise.
65
+ """
66
+
67
+ await self.stop_webdriver()
68
+
69
+ if exc_type is not None and exc_val is not None and exc_tb is not None:
70
+ return True
71
+
72
+ return False
32
73
 
33
74
  async def quit(self) -> None:
34
75
  await self.sync_to_trio(sync_function=self._quit_impl)()
@@ -49,12 +90,5 @@ class CoreLifecycleMixin(UnifiedCoreLifecycleMixin, TrioThreadMixin, AbstractCor
49
90
  async def start_session(self, capabilities: Dict[str, Any]) -> None:
50
91
  await self.sync_to_trio(sync_function=self._start_session_impl)(capabilities=capabilities)
51
92
 
52
- async def start_webdriver(
53
- self,
54
- flags: Optional[BrowserFlags] = None,
55
- window_rect: Optional[WindowRect] = None,
56
- ) -> None:
57
- await self.sync_to_trio(sync_function=self._start_webdriver_impl)(flags=flags, window_rect=window_rect)
58
-
59
93
  async def stop_client(self) -> None:
60
94
  await self.sync_to_trio(sync_function=self._stop_client_impl)()
@@ -1,4 +1,5 @@
1
1
  from typing import Any, List, Optional
2
+ from selenium.webdriver.remote.script_key import ScriptKey
2
3
  from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
4
  from osn_selenium.instances.trio_threads.script import Script
4
5
  from osn_selenium.instances.convert import (
@@ -42,7 +43,7 @@ class CoreScriptMixin(UnifiedCoreScriptMixin, TrioThreadMixin, AbstractCoreScrip
42
43
  async def get_pinned_scripts(self) -> List[str]:
43
44
  return await self.sync_to_trio(sync_function=self._get_pinned_scripts_impl)()
44
45
 
45
- async def pin_script(self, script: str, script_key: Optional[Any] = None) -> Any:
46
+ async def pin_script(self, script: str, script_key: Optional[Any] = None) -> ScriptKey:
46
47
  return await self.sync_to_trio(sync_function=self._pin_script_impl)(script=script, script_key=script_key)
47
48
 
48
49
  async def script(self) -> Script:
@@ -55,5 +56,5 @@ class CoreScriptMixin(UnifiedCoreScriptMixin, TrioThreadMixin, AbstractCoreScrip
55
56
  limiter=self._capacity_limiter,
56
57
  )
57
58
 
58
- async def unpin(self, script_key: Any) -> None:
59
+ async def unpin(self, script_key: ScriptKey) -> None:
59
60
  await self.sync_to_trio(sync_function=self._unpin_impl)(script_key=script_key)
@@ -1,7 +1,7 @@
1
1
  from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
- from osn_selenium.trio_threads_mixin import TrioThreadMixin
4
3
  from osn_selenium.flags.models.base import BrowserFlags
4
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
5
5
  from osn_selenium.webdrivers.unified.core.settings import (
6
6
  UnifiedCoreSettingsMixin
7
7
  )
@@ -1,10 +1,10 @@
1
- from osn_selenium.trio_threads_mixin import TrioThreadMixin
2
1
  from typing import (
3
2
  Any,
4
3
  Dict,
5
4
  List,
6
5
  Optional
7
6
  )
7
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
8
8
  from osn_selenium.instances.trio_threads.storage import Storage
9
9
  from osn_selenium.instances.convert import (
10
10
  get_trio_thread_instance_wrapper
@@ -1,6 +1,6 @@
1
1
  from typing import Optional
2
- from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
2
  from selenium.webdriver.common.timeouts import Timeouts
3
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
4
4
  from osn_selenium.webdrivers.unified.core.timeouts import (
5
5
  UnifiedCoreTimeoutsMixin
6
6
  )
@@ -1,10 +1,10 @@
1
- from osn_selenium.trio_threads_mixin import TrioThreadMixin
2
1
  from typing import (
3
2
  List,
4
3
  Literal,
5
4
  Optional,
6
5
  Union
7
6
  )
7
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
8
8
  from osn_selenium.models import (
9
9
  Position,
10
10
  Rectangle,
@@ -48,6 +48,9 @@ class CoreWindowMixin(UnifiedCoreWindowMixin, TrioThreadMixin, AbstractCoreWindo
48
48
  async def fullscreen_window(self) -> None:
49
49
  await self.sync_to_trio(sync_function=self._fullscreen_window_impl)()
50
50
 
51
+ async def get_orientation(self) -> Literal["LANDSCAPE", "PORTRAIT"]:
52
+ return await self.sync_to_trio(sync_function=self._orientation_get_impl)()
53
+
51
54
  async def get_window_handle(self, window: Optional[Union[str, int]] = None) -> str:
52
55
  return await self.sync_to_trio(sync_function=self._get_window_handle_impl)(window=window)
53
56
 
@@ -69,9 +72,6 @@ class CoreWindowMixin(UnifiedCoreWindowMixin, TrioThreadMixin, AbstractCoreWindo
69
72
  async def minimize_window(self) -> None:
70
73
  await self.sync_to_trio(sync_function=self._minimize_window_impl)()
71
74
 
72
- async def orientation(self) -> Literal["LANDSCAPE", "PORTRAIT"]:
73
- return await self.sync_to_trio(sync_function=self._orientation_get_impl)()
74
-
75
75
  async def set_orientation(self, value: Literal["LANDSCAPE", "PORTRAIT"]) -> None:
76
76
  await self.sync_to_trio(sync_function=self._orientation_set_impl)(value=value)
77
77
 
@@ -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.trio_threads.blink import BlinkLifecycleMixin
5
+ from osn_selenium.webdrivers.trio_threads.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
- async def restart_webdriver(
29
+ async 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
- await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
38
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
39
39
  flags=flags,
40
40
  browser_exe=browser_exe,
41
41
  browser_name_in_system=browser_name_in_system,
@@ -44,7 +44,7 @@ class EdgeLifecycleMixin(
44
44
  window_rect=window_rect,
45
45
  )
46
46
 
47
- async def start_webdriver(
47
+ async def __aenter__(
48
48
  self,
49
49
  flags: Optional[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
- await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
56
+ await self.start_webdriver(
57
+ flags=flags,
58
+ browser_exe=browser_exe,
59
+ browser_name_in_system=browser_name_in_system,
60
+ use_browser_exe=use_browser_exe,
61
+ start_page_url=start_page_url,
62
+ window_rect=window_rect,
63
+ )
64
+
65
+ async def restart_webdriver(
66
+ self,
67
+ flags: Optional[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
+ await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
57
75
  flags=flags,
58
76
  browser_exe=browser_exe,
59
77
  browser_name_in_system=browser_name_in_system,
@@ -2,7 +2,7 @@ from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
3
  from osn_selenium._typehints import PATH_TYPEHINT
4
4
  from osn_selenium.flags.models.edge import EdgeFlags
5
- from osn_selenium.webdrivers.trio_threads.blink import BlinkSettingsMixin
5
+ from osn_selenium.webdrivers.trio_threads.blink.settings import BlinkSettingsMixin
6
6
  from osn_selenium.webdrivers.unified.edge.settings import (
7
7
  UnifiedEdgeSettingsMixin
8
8
  )
@@ -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.trio_threads.chrome import ChromeLifecycleMixin
5
+ from osn_selenium.webdrivers.trio_threads.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
- async def restart_webdriver(
29
+ async 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
- await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
38
+ await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
39
39
  flags=flags,
40
40
  browser_exe=browser_exe,
41
41
  browser_name_in_system=browser_name_in_system,
@@ -44,7 +44,7 @@ class YandexLifecycleMixin(
44
44
  window_rect=window_rect,
45
45
  )
46
46
 
47
- async def start_webdriver(
47
+ async def __aenter__(
48
48
  self,
49
49
  flags: Optional[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
- await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
56
+ await self.start_webdriver(
57
+ flags=flags,
58
+ browser_exe=browser_exe,
59
+ browser_name_in_system=browser_name_in_system,
60
+ use_browser_exe=use_browser_exe,
61
+ start_page_url=start_page_url,
62
+ window_rect=window_rect,
63
+ )
64
+
65
+ async def restart_webdriver(
66
+ self,
67
+ flags: Optional[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
+ await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
57
75
  flags=flags,
58
76
  browser_exe=browser_exe,
59
77
  browser_name_in_system=browser_name_in_system,
@@ -2,7 +2,7 @@ from typing import Optional
2
2
  from osn_selenium.models import WindowRect
3
3
  from osn_selenium._typehints import PATH_TYPEHINT
4
4
  from osn_selenium.flags.models.yandex import YandexFlags
5
- from osn_selenium.webdrivers.trio_threads.chrome import ChromeSettingsMixin
5
+ from osn_selenium.webdrivers.trio_threads.chrome.settings import ChromeSettingsMixin
6
6
  from osn_selenium.webdrivers.unified.yandex.settings import (
7
7
  UnifiedYandexSettingsMixin
8
8
  )
@@ -1,6 +1,10 @@
1
1
  import pathlib
2
- from typing import Mapping, Optional, Type
3
2
  from osn_selenium.models import WindowRect
3
+ from typing import (
4
+ Mapping,
5
+ Optional,
6
+ Type
7
+ )
4
8
  from osn_selenium.flags.blink import BlinkFlagsManager
5
9
  from osn_selenium.flags.models.values import ArgumentValue
6
10
  from osn_selenium.browsers_handler import get_path_to_browser
@@ -73,7 +73,7 @@ class UnifiedBlinkLifecycleMixin(UnifiedBlinkSettingsMixin, UnifiedCoreLifecycle
73
73
  self._create_driver_impl()
74
74
  self._is_active = True
75
75
 
76
- def _close_webdriver_impl(self) -> None:
76
+ def _stop_webdriver_impl(self) -> None:
77
77
  if self._browser_exe_impl is not None:
78
78
  debugging_port = self._debugging_port_impl
79
79
  pids_with_ports = get_localhost_pids_with_ports()
@@ -83,8 +83,10 @@ class UnifiedBlinkLifecycleMixin(UnifiedBlinkSettingsMixin, UnifiedCoreLifecycle
83
83
  kill_process_by_pid(pid=pid, force=True)
84
84
 
85
85
  is_active = self._check_browser_exe_active_impl()
86
+
86
87
  while is_active:
87
88
  is_active = self._check_browser_exe_active_impl()
89
+
88
90
  if is_active:
89
91
  time.sleep(0.05)
90
92
 
@@ -103,7 +105,7 @@ class UnifiedBlinkLifecycleMixin(UnifiedBlinkSettingsMixin, UnifiedCoreLifecycle
103
105
  start_page_url: Optional[str] = None,
104
106
  window_rect: Optional[WindowRect] = None,
105
107
  ) -> None:
106
- self._close_webdriver_impl()
108
+ self._stop_webdriver_impl()
107
109
  self._start_webdriver_impl(
108
110
  flags=flags,
109
111
  browser_exe=browser_exe,
@@ -1,5 +1,9 @@
1
- from typing import Mapping, Optional, Type
2
1
  from osn_selenium.models import WindowRect
2
+ from typing import (
3
+ Mapping,
4
+ Optional,
5
+ Type
6
+ )
3
7
  from osn_selenium.flags.chrome import ChromeFlagsManager
4
8
  from osn_selenium.flags.models.chrome import ChromeFlags
5
9
  from selenium.webdriver import (
@@ -1,9 +1,11 @@
1
+ from selenium.webdriver.remote.fedcm import FedCM
1
2
  from typing import (
2
3
  Any,
3
4
  List,
4
5
  Optional,
5
6
  Union
6
7
  )
8
+ from selenium.webdriver.common.fedcm.dialog import Dialog
7
9
  from osn_selenium.webdrivers._decorators import requires_driver
8
10
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
9
11
  from selenium.webdriver.common.virtual_authenticator import (
@@ -30,7 +32,7 @@ class UnifiedCoreAuthMixin(UnifiedCoreBaseMixin):
30
32
  timeout: int = 5,
31
33
  poll_frequency: float = 0.5,
32
34
  ignored_exceptions: Any = None,
33
- ) -> Any:
35
+ ) -> Dialog:
34
36
  return self._driver_impl.fedcm_dialog(
35
37
  timeout=timeout,
36
38
  poll_frequency=poll_frequency,
@@ -38,7 +40,7 @@ class UnifiedCoreAuthMixin(UnifiedCoreBaseMixin):
38
40
  )
39
41
 
40
42
  @requires_driver
41
- def _fedcm_impl(self) -> Any:
43
+ def _fedcm_impl(self) -> FedCM:
42
44
  return self._driver_impl.fedcm
43
45
 
44
46
  @requires_driver
@@ -1,17 +1,15 @@
1
- from osn_selenium._cdp_import import install_cdp_hook
2
1
  from osn_selenium.models import WindowRect
2
+ from osn_selenium._cdp_import import install_cdp_hook
3
+ from osn_selenium.flags.base import BrowserFlagsManager
4
+ from osn_selenium.flags.models.base import BrowserFlags
5
+ from selenium.webdriver.common.bidi.session import Session
3
6
  from typing import (
4
7
  Any,
5
8
  Dict,
6
- Mapping, Optional,
9
+ Mapping,
10
+ Optional,
7
11
  Type
8
12
  )
9
- from osn_selenium.flags.base import BrowserFlagsManager
10
- from osn_selenium.flags.models.base import BrowserFlags
11
- from selenium.webdriver.common.bidi.session import Session
12
- from osn_selenium._typehints import (
13
- ARCHITECTURES_TYPEHINT, PATH_TYPEHINT
14
- )
15
13
  from selenium.webdriver.remote.errorhandler import ErrorHandler
16
14
  from osn_selenium.webdrivers._decorators import requires_driver
17
15
  from selenium.webdriver.remote.locator_converter import LocatorConverter
@@ -19,6 +17,10 @@ from selenium.webdriver.remote.remote_connection import RemoteConnection
19
17
  from osn_selenium.exceptions.webdriver import (
20
18
  WebDriverNotStartedError
21
19
  )
20
+ from osn_selenium._typehints import (
21
+ ARCHITECTURES_TYPEHINT,
22
+ PATH_TYPEHINT
23
+ )
22
24
  from selenium.webdriver.remote.webdriver import (
23
25
  WebDriver as legacyWebDriver
24
26
  )
@@ -53,9 +55,13 @@ class UnifiedCoreBaseMixin:
53
55
 
54
56
  if flags is not None:
55
57
  self._webdriver_flags_manager.update_flags(flags)
56
-
58
+
57
59
  if not getattr(self, "cdp_hook_installed", False):
58
- install_cdp_hook(cdp_paths=cdp_versioned_packages_paths, ignore_package_missing=ignore_cdp_version_package_missing)
60
+ install_cdp_hook(
61
+ cdp_paths=cdp_versioned_packages_paths,
62
+ ignore_package_missing=ignore_cdp_version_package_missing
63
+ )
64
+
59
65
  setattr(self, "cdp_hook_installed", True)
60
66
 
61
67
  @property
@@ -1,5 +1,6 @@
1
- from typing import Any, Optional
1
+ from typing import Optional
2
2
  from osn_selenium.webdrivers._decorators import requires_driver
3
+ from selenium.webdriver.common.print_page_options import PrintOptions
3
4
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
4
5
 
5
6
 
@@ -24,7 +25,7 @@ class UnifiedCoreCaptureMixin(UnifiedCoreBaseMixin):
24
25
  return self._driver_impl.page_source
25
26
 
26
27
  @requires_driver
27
- def _print_page_impl(self, print_options: Optional[Any] = None) -> str:
28
+ def _print_page_impl(self, print_options: Optional[PrintOptions] = None) -> str:
28
29
  return self._driver_impl.print_page(print_options=print_options)
29
30
 
30
31
  @requires_driver
@@ -1,6 +1,11 @@
1
- from typing import Any
1
+ from selenium.webdriver.remote.mobile import Mobile
2
+ from selenium.webdriver.common.fedcm.dialog import Dialog
3
+ from selenium.webdriver.common.bidi.browser import Browser
2
4
  from osn_selenium.webdrivers._decorators import requires_driver
5
+ from selenium.webdriver.common.bidi.permissions import Permissions
6
+ from selenium.webdriver.common.bidi.webextension import WebExtension
3
7
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
8
+ from selenium.webdriver.common.bidi.browsing_context import BrowsingContext
4
9
 
5
10
 
6
11
  __all__ = ["UnifiedCoreComponentsMixin"]
@@ -8,25 +13,25 @@ __all__ = ["UnifiedCoreComponentsMixin"]
8
13
 
9
14
  class UnifiedCoreComponentsMixin(UnifiedCoreBaseMixin):
10
15
  @requires_driver
11
- def _browser_impl(self) -> Any:
16
+ def _browser_impl(self) -> Browser:
12
17
  return self._driver_impl.browser
13
18
 
14
19
  @requires_driver
15
- def _browsing_context_impl(self) -> Any:
20
+ def _browsing_context_impl(self) -> BrowsingContext:
16
21
  return self._driver_impl.browsing_context
17
22
 
18
23
  @requires_driver
19
- def _dialog_impl(self) -> Any:
24
+ def _dialog_impl(self) -> Dialog:
20
25
  return self._driver_impl.dialog
21
26
 
22
27
  @requires_driver
23
- def _mobile_impl(self) -> Any:
28
+ def _mobile_impl(self) -> Mobile:
24
29
  return self._driver_impl.mobile
25
30
 
26
31
  @requires_driver
27
- def _permissions_impl(self) -> Any:
32
+ def _permissions_impl(self) -> Permissions:
28
33
  return self._driver_impl.permissions
29
34
 
30
35
  @requires_driver
31
- def _webextension_impl(self) -> Any:
36
+ def _webextension_impl(self) -> WebExtension:
32
37
  return self._driver_impl.webextension
@@ -1,4 +1,5 @@
1
1
  from contextlib import asynccontextmanager
2
+ from selenium.webdriver.common.bidi.network import Network
2
3
  from typing import (
3
4
  Any,
4
5
  AsyncGenerator,
@@ -27,7 +28,7 @@ class UnifiedCoreDevToolsMixin(UnifiedCoreBaseMixin):
27
28
  return self._driver_impl.execute_cdp_cmd(cmd=cmd, cmd_args=build_cdp_kwargs(**cmd_args))
28
29
 
29
30
  @requires_driver
30
- def _network_impl(self) -> Any:
31
+ def _network_impl(self) -> Network:
31
32
  return self._driver_impl.network
32
33
 
33
34
  @requires_driver
@@ -1,6 +1,7 @@
1
1
  from contextlib import contextmanager
2
2
  from typing import Any, Generator, List
3
3
  from osn_selenium.webdrivers._decorators import requires_driver
4
+ from selenium.webdriver.remote.file_detector import FileDetector
4
5
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
5
6
 
6
7
 
@@ -23,11 +24,11 @@ class UnifiedCoreFileMixin(UnifiedCoreBaseMixin):
23
24
  yield file_detector
24
25
 
25
26
  @requires_driver
26
- def _file_detector_get_impl(self) -> Any:
27
+ def _file_detector_get_impl(self) -> FileDetector:
27
28
  return self._driver_impl.file_detector
28
29
 
29
30
  @requires_driver
30
- def _file_detector_set_impl(self, value: Any) -> None:
31
+ def _file_detector_set_impl(self, value: FileDetector) -> None:
31
32
  self._driver_impl.file_detector = value
32
33
 
33
34
  @requires_driver
@@ -1,11 +1,13 @@
1
+ from types import TracebackType
1
2
  from osn_selenium.models import WindowRect
3
+ from osn_selenium.flags.models.base import BrowserFlags
2
4
  from typing import (
3
5
  Any,
4
6
  Dict,
5
7
  Optional,
8
+ Type,
6
9
  Union
7
10
  )
8
- from osn_selenium.flags.models.base import BrowserFlags
9
11
  from osn_selenium.webdrivers._decorators import requires_driver
10
12
  from selenium.webdriver.remote.remote_connection import RemoteConnection
11
13
  from osn_selenium.exceptions.logic import (
@@ -56,7 +58,7 @@ class UnifiedCoreLifecycleMixin(UnifiedCoreSettingsMixin, UnifiedCoreTimeoutsMix
56
58
  def _quit_impl(self) -> None:
57
59
  self._driver_impl.quit()
58
60
 
59
- def _close_webdriver_impl(self) -> None:
61
+ def _stop_webdriver_impl(self) -> None:
60
62
  if self._driver_impl is not None:
61
63
  self._quit_impl()
62
64
 
@@ -68,7 +70,7 @@ class UnifiedCoreLifecycleMixin(UnifiedCoreSettingsMixin, UnifiedCoreTimeoutsMix
68
70
  flags: Optional[BrowserFlags] = None,
69
71
  window_rect: Optional[WindowRect] = None,
70
72
  ) -> None:
71
- self._close_webdriver_impl()
73
+ self._stop_webdriver_impl()
72
74
  self._start_webdriver_impl(flags=flags, window_rect=window_rect)
73
75
 
74
76
  @requires_driver
@@ -1,4 +1,6 @@
1
1
  from typing import Any, List, Optional
2
+ from selenium.webdriver.common.bidi.script import Script
3
+ from selenium.webdriver.remote.script_key import ScriptKey
2
4
  from osn_selenium.webdrivers._decorators import requires_driver
3
5
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
4
6
 
@@ -20,13 +22,13 @@ class UnifiedCoreScriptMixin(UnifiedCoreBaseMixin):
20
22
  return self._driver_impl.get_pinned_scripts()
21
23
 
22
24
  @requires_driver
23
- def _pin_script_impl(self, script: str, script_key: Optional[Any] = None) -> Any:
25
+ def _pin_script_impl(self, script: str, script_key: Optional[Any] = None) -> ScriptKey:
24
26
  return self._driver_impl.pin_script(script=script, script_key=script_key)
25
27
 
26
28
  @requires_driver
27
- def _script_impl(self) -> Any:
29
+ def _script_impl(self) -> Script:
28
30
  return self._driver_impl.script
29
31
 
30
32
  @requires_driver
31
- def _unpin_impl(self, script_key: Any) -> None:
33
+ def _unpin_impl(self, script_key: ScriptKey) -> None:
32
34
  self._driver_impl.unpin(script_key=script_key)
@@ -4,6 +4,7 @@ from typing import (
4
4
  List,
5
5
  Optional
6
6
  )
7
+ from selenium.webdriver.common.bidi.storage import Storage
7
8
  from osn_selenium.webdrivers._decorators import requires_driver
8
9
  from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
9
10
 
@@ -33,5 +34,5 @@ class UnifiedCoreStorageMixin(UnifiedCoreBaseMixin):
33
34
  return self._driver_impl.get_cookies()
34
35
 
35
36
  @requires_driver
36
- def _storage_impl(self) -> Any:
37
+ def _storage_impl(self) -> Storage:
37
38
  return self._driver_impl.storage