osn-selenium 0.0.0__py3-none-any.whl → 1.1.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 (635) hide show
  1. osn_selenium/_base_models.py +41 -0
  2. osn_selenium/_cdp_import.py +253 -0
  3. osn_selenium/_functions.py +84 -0
  4. osn_selenium/_typehints.py +19 -0
  5. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  6. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  7. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  8. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  9. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  10. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  11. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  12. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  13. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  14. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  15. osn_selenium/abstract/executors/cdp/console.py +18 -0
  16. osn_selenium/abstract/executors/cdp/css.py +197 -0
  17. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  18. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  19. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  20. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  21. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  22. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  23. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  24. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  25. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  26. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  27. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  28. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  29. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  30. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  31. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  32. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  33. osn_selenium/abstract/executors/cdp/input.py +158 -0
  34. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  35. osn_selenium/abstract/executors/cdp/io.py +24 -0
  36. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  37. osn_selenium/abstract/executors/cdp/log.py +27 -0
  38. osn_selenium/abstract/executors/cdp/media.py +14 -0
  39. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  40. osn_selenium/abstract/executors/cdp/network.py +252 -0
  41. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  42. osn_selenium/abstract/executors/cdp/page.py +347 -0
  43. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  44. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  45. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  46. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  47. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  48. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  49. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  50. osn_selenium/abstract/executors/cdp/security.py +26 -0
  51. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  52. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  53. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  54. osn_selenium/abstract/executors/cdp/target.py +125 -0
  55. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  56. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  57. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  58. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  59. osn_selenium/abstract/executors/cdp.py +63 -0
  60. osn_selenium/abstract/executors/javascript.py +203 -0
  61. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  62. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  63. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  64. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  65. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  66. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  67. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  68. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  69. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  70. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  71. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  72. osn_selenium/abstract/instances/alert.py +67 -0
  73. osn_selenium/abstract/instances/browser.py +76 -0
  74. osn_selenium/abstract/instances/browsing_context.py +310 -0
  75. osn_selenium/abstract/instances/dialog.py +107 -0
  76. osn_selenium/abstract/instances/fedcm.py +133 -0
  77. osn_selenium/abstract/instances/mobile.py +79 -0
  78. osn_selenium/abstract/instances/network.py +100 -0
  79. osn_selenium/abstract/instances/permissions.py +52 -0
  80. osn_selenium/abstract/instances/script.py +109 -0
  81. osn_selenium/abstract/instances/shadow_root.py +81 -0
  82. osn_selenium/abstract/instances/storage.py +98 -0
  83. osn_selenium/abstract/instances/switch_to.py +104 -0
  84. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  85. osn_selenium/abstract/instances/web_element.py +395 -0
  86. osn_selenium/abstract/instances/web_extension.py +70 -0
  87. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  88. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  89. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  90. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  91. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  92. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  93. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  94. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  95. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  96. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  97. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  98. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  99. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  100. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  101. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  102. osn_selenium/abstract/webdriver/core/base.py +298 -0
  103. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  104. osn_selenium/abstract/webdriver/core/components.py +82 -0
  105. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  106. osn_selenium/abstract/webdriver/core/element.py +55 -0
  107. osn_selenium/abstract/webdriver/core/file.py +82 -0
  108. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  109. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  110. osn_selenium/abstract/webdriver/core/script.py +88 -0
  111. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  112. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  113. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  114. osn_selenium/abstract/webdriver/core/window.py +237 -0
  115. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  116. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  117. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  118. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  119. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  120. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  121. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  122. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  123. osn_selenium/base_mixin.py +122 -0
  124. osn_selenium/browsers_handler/__init__.py +47 -17
  125. osn_selenium/browsers_handler/_linux.py +226 -0
  126. osn_selenium/browsers_handler/_windows.py +21 -14
  127. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  128. osn_selenium/dev_tools/_decorators.py +149 -0
  129. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  130. osn_selenium/dev_tools/_functions.py +174 -0
  131. osn_selenium/dev_tools/_system_utils.py +35 -0
  132. osn_selenium/dev_tools/_typehints.py +35 -0
  133. osn_selenium/dev_tools/_validators.py +227 -0
  134. osn_selenium/dev_tools/_wrappers.py +92 -0
  135. osn_selenium/dev_tools/domains/__init__.py +7 -40
  136. osn_selenium/dev_tools/domains/abstract.py +98 -254
  137. osn_selenium/dev_tools/domains/fetch.py +229 -906
  138. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  139. osn_selenium/dev_tools/filters.py +40 -0
  140. osn_selenium/dev_tools/logger/main.py +214 -0
  141. osn_selenium/dev_tools/logger/models.py +232 -0
  142. osn_selenium/dev_tools/logger/target.py +278 -0
  143. osn_selenium/dev_tools/manager/__init__.py +16 -0
  144. osn_selenium/dev_tools/manager/base.py +124 -0
  145. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  146. osn_selenium/dev_tools/manager/logging.py +153 -0
  147. osn_selenium/dev_tools/manager/settings.py +89 -0
  148. osn_selenium/dev_tools/manager/targets.py +175 -0
  149. osn_selenium/dev_tools/models.py +49 -0
  150. osn_selenium/dev_tools/settings.py +139 -0
  151. osn_selenium/dev_tools/target/__init__.py +16 -0
  152. osn_selenium/dev_tools/target/base.py +427 -0
  153. osn_selenium/dev_tools/target/detach.py +54 -0
  154. osn_selenium/dev_tools/target/discovery.py +112 -0
  155. osn_selenium/dev_tools/target/events.py +120 -0
  156. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  157. osn_selenium/dev_tools/target/lifecycle.py +184 -0
  158. osn_selenium/dev_tools/target/logging.py +163 -0
  159. osn_selenium/exceptions/__init__.py +1 -0
  160. osn_selenium/exceptions/base.py +9 -0
  161. osn_selenium/exceptions/configuration.py +84 -0
  162. osn_selenium/exceptions/dependencies.py +60 -0
  163. osn_selenium/exceptions/devtools.py +114 -0
  164. osn_selenium/exceptions/flags.py +45 -0
  165. osn_selenium/exceptions/instance.py +92 -0
  166. osn_selenium/exceptions/javascript.py +31 -0
  167. osn_selenium/exceptions/logic.py +31 -0
  168. osn_selenium/exceptions/path.py +77 -0
  169. osn_selenium/exceptions/platform.py +33 -0
  170. osn_selenium/exceptions/protocol.py +86 -0
  171. osn_selenium/exceptions/webdriver.py +44 -0
  172. osn_selenium/exceptions/window.py +63 -0
  173. osn_selenium/executors/__init__.py +1 -0
  174. osn_selenium/executors/sync/__init__.py +1 -0
  175. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  176. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  177. osn_selenium/executors/sync/cdp/animation.py +50 -0
  178. osn_selenium/executors/sync/cdp/audits.py +48 -0
  179. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  180. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  181. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  182. osn_selenium/executors/sync/cdp/browser.py +131 -0
  183. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  184. osn_selenium/executors/sync/cdp/cast.py +38 -0
  185. osn_selenium/executors/sync/cdp/console.py +24 -0
  186. osn_selenium/executors/sync/cdp/css.py +187 -0
  187. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  188. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  189. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  190. osn_selenium/executors/sync/cdp/dom.py +310 -0
  191. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  192. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  193. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  194. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  195. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  196. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  197. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  198. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  199. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  200. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  201. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  202. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  203. osn_selenium/executors/sync/cdp/input.py +233 -0
  204. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  205. osn_selenium/executors/sync/cdp/io.py +33 -0
  206. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  207. osn_selenium/executors/sync/cdp/log.py +35 -0
  208. osn_selenium/executors/sync/cdp/media.py +21 -0
  209. osn_selenium/executors/sync/cdp/memory.py +62 -0
  210. osn_selenium/executors/sync/cdp/network.py +287 -0
  211. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  212. osn_selenium/executors/sync/cdp/page.py +365 -0
  213. osn_selenium/executors/sync/cdp/performance.py +33 -0
  214. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  215. osn_selenium/executors/sync/cdp/preload.py +21 -0
  216. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  217. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  218. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  219. osn_selenium/executors/sync/cdp/schema.py +23 -0
  220. osn_selenium/executors/sync/cdp/security.py +30 -0
  221. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  222. osn_selenium/executors/sync/cdp/storage.py +151 -0
  223. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  224. osn_selenium/executors/sync/cdp/target.py +147 -0
  225. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  226. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  227. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  228. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  229. osn_selenium/executors/sync/cdp.py +100 -0
  230. osn_selenium/executors/sync/javascript.py +79 -0
  231. osn_selenium/executors/trio_threads/__init__.py +1 -0
  232. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  233. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  234. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  235. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  236. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  237. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  238. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  239. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  240. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  241. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  242. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  243. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  244. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  245. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  246. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  247. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  248. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  249. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  250. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  251. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  252. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  253. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  254. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  255. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  256. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  257. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  258. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  259. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  260. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  261. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  262. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  263. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  264. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  265. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  266. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  267. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  268. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  269. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  270. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  271. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  272. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  273. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  274. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  275. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  276. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  277. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  278. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  279. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  280. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  281. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  282. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  283. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  284. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  285. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  286. osn_selenium/executors/trio_threads/cdp.py +104 -0
  287. osn_selenium/executors/trio_threads/javascript.py +90 -0
  288. osn_selenium/executors/unified/__init__.py +1 -0
  289. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  290. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  291. osn_selenium/executors/unified/cdp/animation.py +50 -0
  292. osn_selenium/executors/unified/cdp/audits.py +45 -0
  293. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  294. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  295. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  296. osn_selenium/executors/unified/cdp/browser.py +143 -0
  297. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  298. osn_selenium/executors/unified/cdp/cast.py +32 -0
  299. osn_selenium/executors/unified/cdp/console.py +18 -0
  300. osn_selenium/executors/unified/cdp/css.py +237 -0
  301. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  302. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  303. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  304. osn_selenium/executors/unified/cdp/dom.py +380 -0
  305. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  306. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  307. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  308. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  309. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  310. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  311. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  312. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  313. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  314. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  315. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  316. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  317. osn_selenium/executors/unified/cdp/input.py +254 -0
  318. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  319. osn_selenium/executors/unified/cdp/io.py +29 -0
  320. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  321. osn_selenium/executors/unified/cdp/log.py +29 -0
  322. osn_selenium/executors/unified/cdp/media.py +15 -0
  323. osn_selenium/executors/unified/cdp/memory.py +59 -0
  324. osn_selenium/executors/unified/cdp/network.py +323 -0
  325. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  326. osn_selenium/executors/unified/cdp/page.py +410 -0
  327. osn_selenium/executors/unified/cdp/performance.py +27 -0
  328. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  329. osn_selenium/executors/unified/cdp/preload.py +15 -0
  330. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  331. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  332. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  333. osn_selenium/executors/unified/cdp/schema.py +17 -0
  334. osn_selenium/executors/unified/cdp/security.py +27 -0
  335. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  336. osn_selenium/executors/unified/cdp/storage.py +178 -0
  337. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  338. osn_selenium/executors/unified/cdp/target.py +165 -0
  339. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  340. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  341. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  342. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  343. osn_selenium/executors/unified/javascript.py +104 -0
  344. osn_selenium/flags/__init__.py +1 -0
  345. osn_selenium/flags/_functions.py +45 -0
  346. osn_selenium/flags/_typehints.py +34 -0
  347. osn_selenium/flags/_validators.py +101 -0
  348. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +159 -245
  349. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +130 -374
  350. osn_selenium/flags/chrome.py +259 -0
  351. osn_selenium/flags/edge.py +259 -0
  352. osn_selenium/flags/models/__init__.py +1 -0
  353. osn_selenium/flags/models/base.py +130 -0
  354. osn_selenium/flags/models/blink.py +263 -0
  355. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  356. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  357. osn_selenium/flags/models/values.py +44 -0
  358. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  359. osn_selenium/flags/yandex.py +259 -0
  360. osn_selenium/instances/__init__.py +1 -0
  361. osn_selenium/instances/_functions.py +242 -0
  362. osn_selenium/instances/_typehints.py +148 -0
  363. osn_selenium/instances/_utils.py +143 -0
  364. osn_selenium/instances/convert.py +287 -0
  365. osn_selenium/instances/protocols.py +105 -0
  366. osn_selenium/instances/sync/__init__.py +1 -0
  367. osn_selenium/instances/sync/action_chains/__init__.py +32 -0
  368. osn_selenium/instances/sync/action_chains/base.py +74 -0
  369. osn_selenium/instances/sync/action_chains/click.py +61 -0
  370. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  371. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  372. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  373. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  374. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  375. osn_selenium/instances/sync/action_chains/move.py +46 -0
  376. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  377. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  378. osn_selenium/instances/sync/alert.py +69 -0
  379. osn_selenium/instances/sync/browser.py +72 -0
  380. osn_selenium/instances/sync/browsing_context.py +193 -0
  381. osn_selenium/instances/sync/dialog.py +81 -0
  382. osn_selenium/instances/sync/fedcm.py +92 -0
  383. osn_selenium/instances/sync/mobile.py +75 -0
  384. osn_selenium/instances/sync/network.py +90 -0
  385. osn_selenium/instances/sync/permissions.py +80 -0
  386. osn_selenium/instances/sync/script.py +77 -0
  387. osn_selenium/instances/sync/shadow_root.py +113 -0
  388. osn_selenium/instances/sync/storage.py +91 -0
  389. osn_selenium/instances/sync/switch_to.py +92 -0
  390. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  391. osn_selenium/instances/sync/web_element.py +179 -0
  392. osn_selenium/instances/sync/web_extension.py +77 -0
  393. osn_selenium/instances/trio_threads/__init__.py +1 -0
  394. osn_selenium/instances/trio_threads/action_chains/__init__.py +32 -0
  395. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  396. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  397. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  399. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  400. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  401. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  402. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  403. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  404. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  405. osn_selenium/instances/trio_threads/alert.py +87 -0
  406. osn_selenium/instances/trio_threads/browser.py +90 -0
  407. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  408. osn_selenium/instances/trio_threads/dialog.py +99 -0
  409. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  410. osn_selenium/instances/trio_threads/mobile.py +93 -0
  411. osn_selenium/instances/trio_threads/network.py +108 -0
  412. osn_selenium/instances/trio_threads/permissions.py +102 -0
  413. osn_selenium/instances/trio_threads/script.py +95 -0
  414. osn_selenium/instances/trio_threads/shadow_root.py +154 -0
  415. osn_selenium/instances/trio_threads/storage.py +109 -0
  416. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  417. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  418. osn_selenium/instances/trio_threads/web_element.py +217 -0
  419. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  420. osn_selenium/instances/unified/__init__.py +1 -0
  421. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  422. osn_selenium/instances/unified/action_chains/base.py +31 -0
  423. osn_selenium/instances/unified/action_chains/click.py +27 -0
  424. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  425. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  426. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  427. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  428. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  429. osn_selenium/instances/unified/action_chains/move.py +24 -0
  430. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  431. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  432. osn_selenium/instances/unified/alert.py +29 -0
  433. osn_selenium/instances/unified/browser.py +33 -0
  434. osn_selenium/instances/unified/browsing_context.py +151 -0
  435. osn_selenium/instances/unified/dialog.py +42 -0
  436. osn_selenium/instances/unified/fedcm.py +48 -0
  437. osn_selenium/instances/unified/mobile.py +36 -0
  438. osn_selenium/instances/unified/network.py +50 -0
  439. osn_selenium/instances/unified/permissions.py +43 -0
  440. osn_selenium/instances/unified/script.py +38 -0
  441. osn_selenium/instances/unified/shadow_root.py +46 -0
  442. osn_selenium/instances/unified/storage.py +48 -0
  443. osn_selenium/instances/unified/switch_to.py +49 -0
  444. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  445. osn_selenium/instances/unified/web_element.py +145 -0
  446. osn_selenium/instances/unified/web_extension.py +38 -0
  447. osn_selenium/javascript/__init__.py +1 -0
  448. osn_selenium/javascript/_functions.py +63 -0
  449. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  450. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  451. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  452. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  453. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  454. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  455. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  456. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  457. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  458. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  459. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  460. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  461. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  462. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  463. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  464. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  465. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  466. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  467. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  468. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  469. osn_selenium/javascript/functions.py +44 -0
  470. osn_selenium/javascript/models.py +35 -0
  471. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  472. osn_selenium/models.py +94 -0
  473. osn_selenium/trio_threads_mixin.py +159 -0
  474. osn_selenium/webdrivers/_args_helpers.py +181 -0
  475. osn_selenium/webdrivers/_bridges.py +57 -0
  476. osn_selenium/webdrivers/_decorators.py +83 -0
  477. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  478. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  479. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  480. osn_selenium/webdrivers/_typehints.py +10 -0
  481. osn_selenium/webdrivers/protocols.py +50 -0
  482. osn_selenium/webdrivers/sync/__init__.py +1 -0
  483. osn_selenium/webdrivers/sync/blink/__init__.py +124 -0
  484. osn_selenium/webdrivers/sync/blink/base.py +140 -0
  485. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  486. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  487. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  488. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  489. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  490. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  491. osn_selenium/webdrivers/sync/chrome/__init__.py +102 -0
  492. osn_selenium/webdrivers/sync/chrome/base.py +118 -0
  493. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  494. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  495. osn_selenium/webdrivers/sync/core/__init__.py +100 -0
  496. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  497. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  498. osn_selenium/webdrivers/sync/core/base.py +175 -0
  499. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  500. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  501. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  502. osn_selenium/webdrivers/sync/core/element.py +42 -0
  503. osn_selenium/webdrivers/sync/core/file.py +40 -0
  504. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  505. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  506. osn_selenium/webdrivers/sync/core/script.py +53 -0
  507. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  508. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  509. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  510. osn_selenium/webdrivers/sync/core/window.py +99 -0
  511. osn_selenium/webdrivers/sync/edge/__init__.py +102 -0
  512. osn_selenium/webdrivers/sync/edge/base.py +114 -0
  513. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  514. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  515. osn_selenium/webdrivers/sync/yandex/__init__.py +102 -0
  516. osn_selenium/webdrivers/sync/yandex/base.py +111 -0
  517. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  518. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  519. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  520. osn_selenium/webdrivers/trio_threads/blink/__init__.py +134 -0
  521. osn_selenium/webdrivers/trio_threads/blink/base.py +143 -0
  522. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  523. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  524. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  525. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  526. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  527. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  528. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +114 -0
  529. osn_selenium/webdrivers/trio_threads/chrome/base.py +119 -0
  530. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  531. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  532. osn_selenium/webdrivers/trio_threads/core/__init__.py +115 -0
  533. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  534. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  535. osn_selenium/webdrivers/trio_threads/core/base.py +199 -0
  536. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  537. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  538. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  539. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  540. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  541. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  542. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  543. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  544. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  545. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  546. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  547. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  548. osn_selenium/webdrivers/trio_threads/edge/__init__.py +114 -0
  549. osn_selenium/webdrivers/trio_threads/edge/base.py +115 -0
  550. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  551. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  552. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +114 -0
  553. osn_selenium/webdrivers/trio_threads/yandex/base.py +112 -0
  554. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  555. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  556. osn_selenium/webdrivers/unified/__init__.py +1 -0
  557. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  558. osn_selenium/webdrivers/unified/blink/base.py +135 -0
  559. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  560. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  561. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  562. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  563. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  564. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  565. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  566. osn_selenium/webdrivers/unified/chrome/base.py +58 -0
  567. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  568. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  569. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  570. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  571. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  572. osn_selenium/webdrivers/unified/core/base.py +139 -0
  573. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  574. osn_selenium/webdrivers/unified/core/components.py +32 -0
  575. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  576. osn_selenium/webdrivers/unified/core/element.py +24 -0
  577. osn_selenium/webdrivers/unified/core/file.py +35 -0
  578. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  579. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  580. osn_selenium/webdrivers/unified/core/script.py +32 -0
  581. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  582. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  583. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  584. osn_selenium/webdrivers/unified/core/window.py +135 -0
  585. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  586. osn_selenium/webdrivers/unified/edge/base.py +56 -0
  587. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  588. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  589. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  590. osn_selenium/webdrivers/unified/yandex/base.py +58 -0
  591. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  592. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  593. osn_selenium-1.1.0.dist-info/METADATA +252 -0
  594. osn_selenium-1.1.0.dist-info/RECORD +615 -0
  595. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/WHEEL +1 -1
  596. osn_selenium/captcha_workers/__init__.py +0 -26
  597. osn_selenium/dev_tools/_types.py +0 -22
  598. osn_selenium/dev_tools/errors.py +0 -89
  599. osn_selenium/dev_tools/logger.py +0 -558
  600. osn_selenium/dev_tools/manager.py +0 -1551
  601. osn_selenium/dev_tools/utils.py +0 -509
  602. osn_selenium/errors.py +0 -16
  603. osn_selenium/types.py +0 -118
  604. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  605. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  606. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  607. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  608. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  609. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  610. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  611. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  612. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  613. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  614. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  615. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  616. osn_selenium/webdrivers/_functions.py +0 -504
  617. osn_selenium/webdrivers/types.py +0 -390
  618. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  619. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  620. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  621. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  622. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  623. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  624. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  628. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  629. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  630. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  631. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  632. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  633. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  634. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  635. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,115 @@
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.base import BrowserFlagsManager
11
+ from osn_selenium.flags.models.base import BrowserFlags
12
+ from osn_selenium.dev_tools.settings import DevToolsSettings
13
+ from osn_selenium.webdrivers.trio_threads.core.auth import CoreAuthMixin
14
+ from osn_selenium.webdrivers.trio_threads.core.base import CoreBaseMixin
15
+ from osn_selenium.webdrivers.trio_threads.core.file import CoreFileMixin
16
+ from osn_selenium.abstract.webdriver.core import (
17
+ AbstractCoreWebDriver
18
+ )
19
+ from osn_selenium.webdrivers.trio_threads.core.script import CoreScriptMixin
20
+ from osn_selenium.webdrivers.trio_threads.core.window import CoreWindowMixin
21
+ from osn_selenium.webdrivers.trio_threads.core.actions import CoreActionsMixin
22
+ from osn_selenium.webdrivers.trio_threads.core.capture import CoreCaptureMixin
23
+ from osn_selenium.webdrivers.trio_threads.core.element import CoreElementMixin
24
+ from osn_selenium.webdrivers.trio_threads.core.storage import CoreStorageMixin
25
+ from osn_selenium.webdrivers.trio_threads.core.devtools import CoreDevToolsMixin
26
+ from osn_selenium.webdrivers.trio_threads.core.settings import CoreSettingsMixin
27
+ from osn_selenium.webdrivers.trio_threads.core.timeouts import CoreTimeoutsMixin
28
+ from osn_selenium.webdrivers.trio_threads.core.lifecycle import CoreLifecycleMixin
29
+ from osn_selenium.webdrivers.trio_threads.core.comonents import CoreComponentsMixin
30
+ from osn_selenium.webdrivers.trio_threads.core.navigation import CoreNavigationMixin
31
+
32
+
33
+ __all__ = ["CoreWebDriver"]
34
+
35
+
36
+ class CoreWebDriver(
37
+ CoreActionsMixin,
38
+ CoreAuthMixin,
39
+ CoreBaseMixin,
40
+ CoreCaptureMixin,
41
+ CoreComponentsMixin,
42
+ CoreDevToolsMixin,
43
+ CoreElementMixin,
44
+ CoreFileMixin,
45
+ CoreLifecycleMixin,
46
+ CoreNavigationMixin,
47
+ CoreScriptMixin,
48
+ CoreSettingsMixin,
49
+ CoreStorageMixin,
50
+ CoreTimeoutsMixin,
51
+ CoreWindowMixin,
52
+ AbstractCoreWebDriver,
53
+ ):
54
+ """
55
+ Concrete Core WebDriver implementation combining all functional mixins.
56
+
57
+ This class aggregates lifecycle management, element interaction, navigation,
58
+ and browser-specific features into a single usable driver instance.
59
+ """
60
+
61
+ def __init__(
62
+ self,
63
+ webdriver_path: str,
64
+ flags_manager_type: Type[BrowserFlagsManager] = BrowserFlagsManager,
65
+ flags: Optional[BrowserFlags] = None,
66
+ implicitly_wait: int = 5,
67
+ page_load_timeout: int = 5,
68
+ script_timeout: int = 5,
69
+ window_rect: Optional[WindowRect] = None,
70
+ devtools_settings: Optional[DevToolsSettings] = None,
71
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
72
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
73
+ ignore_cdp_version_package_missing: bool = True,
74
+ ) -> None:
75
+ """
76
+ Initializes the main WebDriver instance with Trio thread support.
77
+
78
+ Args:
79
+ webdriver_path (str): The file path to the WebDriver executable.
80
+ flags_manager_type (Type[BrowserFlagsManager]): The class type used to manage
81
+ browser-specific configuration flags. Defaults to BrowserFlagsManager.
82
+ flags (Optional[BrowserFlags]): Initial set of browser flags or options
83
+ to apply upon startup. Defaults to None.
84
+ implicitly_wait (int): The amount of time (in seconds) that the driver should
85
+ wait when searching for elements. Defaults to 5.
86
+ page_load_timeout (int): The amount of time (in seconds) to wait for a page
87
+ load to complete. Defaults to 5.
88
+ script_timeout (int): The amount of time (in seconds) to wait for an
89
+ asynchronous script to finish execution. Defaults to 5.
90
+ window_rect (Optional[WindowRect]): The initial size and position of the
91
+ browser window. Defaults to None.
92
+ devtools_settings (Optional[DevToolsSettings]): Configuration for Chrome DevTools Protocol.
93
+ capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
94
+ throttle concurrent thread-based operations. Defaults to None.
95
+ """
96
+
97
+ CoreBaseMixin.__init__(
98
+ self,
99
+ webdriver_path=webdriver_path,
100
+ flags_manager_type=flags_manager_type,
101
+ flags=flags,
102
+ implicitly_wait=implicitly_wait,
103
+ page_load_timeout=page_load_timeout,
104
+ script_timeout=script_timeout,
105
+ window_rect=window_rect,
106
+ capacity_limiter=capacity_limiter,
107
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
108
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
109
+ )
110
+
111
+ self._devtools = DevTools(parent_webdriver=self, devtools_settings=devtools_settings)
112
+
113
+ @property
114
+ def devtools(self) -> DevTools:
115
+ return self._devtools
@@ -0,0 +1,72 @@
1
+ from typing import (
2
+ Iterable,
3
+ List,
4
+ Optional
5
+ )
6
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
7
+ from osn_selenium._typehints import DEVICES_TYPEHINT
8
+ from osn_selenium.webdrivers._bridges import (
9
+ get_js_executor_bridge
10
+ )
11
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
12
+ from osn_selenium.webdrivers.trio_threads.core.script import CoreScriptMixin
13
+ from osn_selenium.instances.trio_threads.web_driver_wait import WebDriverWait
14
+ from osn_selenium.instances.convert import (
15
+ get_trio_thread_instance_wrapper
16
+ )
17
+ from osn_selenium.webdrivers.unified.core.actions import (
18
+ UnifiedCoreActionsMixin
19
+ )
20
+ from osn_selenium.abstract.webdriver.core.actions import (
21
+ AbstractCoreActionsMixin
22
+ )
23
+
24
+
25
+ __all__ = ["CoreActionsMixin"]
26
+
27
+
28
+ class CoreActionsMixin(
29
+ UnifiedCoreActionsMixin,
30
+ CoreScriptMixin,
31
+ TrioThreadMixin,
32
+ AbstractCoreActionsMixin
33
+ ):
34
+ """
35
+ Mixin providing high-level interaction capabilities for Core WebDrivers.
36
+
37
+ Includes factories for standard and human-like ActionChains, as well as
38
+ custom WebDriverWait implementations.
39
+ """
40
+
41
+ def action_chains(
42
+ self,
43
+ duration: int = 250,
44
+ devices: Optional[List[DEVICES_TYPEHINT]] = None,
45
+ ) -> ActionChains:
46
+ legacy = self._action_chains_impl(duration=duration, devices=devices)
47
+
48
+ return ActionChains(
49
+ selenium_action_chains=legacy,
50
+ execute_js_script_function=get_js_executor_bridge(self),
51
+ lock=self._lock,
52
+ limiter=self._capacity_limiter,
53
+ )
54
+
55
+ def web_driver_wait(
56
+ self,
57
+ timeout: float,
58
+ poll_frequency: float = 0.5,
59
+ ignored_exceptions: Optional[Iterable[BaseException]] = None,
60
+ ) -> WebDriverWait:
61
+ legacy = self._web_driver_wait_impl(
62
+ timeout=timeout,
63
+ poll_frequency=poll_frequency,
64
+ ignored_exceptions=ignored_exceptions
65
+ )
66
+
67
+ return get_trio_thread_instance_wrapper(
68
+ wrapper_class=WebDriverWait,
69
+ legacy_object=legacy,
70
+ lock=self._lock,
71
+ limiter=self._capacity_limiter,
72
+ )
@@ -0,0 +1,88 @@
1
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
2
+ from typing import (
3
+ Any,
4
+ List,
5
+ Optional,
6
+ Union
7
+ )
8
+ from osn_selenium.instances.trio_threads.fedcm import FedCM
9
+ from osn_selenium.instances.trio_threads.dialog import Dialog
10
+ from osn_selenium.webdrivers.unified.core.auth import UnifiedCoreAuthMixin
11
+ from osn_selenium.abstract.webdriver.core.auth import (
12
+ AbstractCoreAuthMixin
13
+ )
14
+ from osn_selenium.instances.convert import (
15
+ get_trio_thread_instance_wrapper
16
+ )
17
+ from selenium.webdriver.common.virtual_authenticator import (
18
+ Credential,
19
+ VirtualAuthenticatorOptions
20
+ )
21
+
22
+
23
+ __all__ = ["CoreAuthMixin"]
24
+
25
+
26
+ class CoreAuthMixin(UnifiedCoreAuthMixin, TrioThreadMixin, AbstractCoreAuthMixin):
27
+ """
28
+ Mixin handling authentication and credential management for Core WebDrivers.
29
+
30
+ Provides interfaces for adding/removing credentials, managing virtual
31
+ authenticators, and handling Federated Credential Management (FedCM) dialogs.
32
+ """
33
+
34
+ async def add_credential(self, credential: Credential) -> None:
35
+ await self.sync_to_trio(sync_function=self._add_credential_impl)(credential=credential)
36
+
37
+ async def add_virtual_authenticator(self, options: VirtualAuthenticatorOptions) -> None:
38
+ await self.sync_to_trio(sync_function=self._add_virtual_authenticator_impl)(options=options)
39
+
40
+ async def fedcm(self) -> FedCM:
41
+ legacy = await self.sync_to_trio(sync_function=self._fedcm_impl)()
42
+
43
+ return get_trio_thread_instance_wrapper(
44
+ wrapper_class=FedCM,
45
+ legacy_object=legacy,
46
+ lock=self._lock,
47
+ limiter=self._capacity_limiter,
48
+ )
49
+
50
+ async def fedcm_dialog(
51
+ self,
52
+ timeout: int = 5,
53
+ poll_frequency: float = 0.5,
54
+ ignored_exceptions: Any = None,
55
+ ) -> Dialog:
56
+ legacy = await self.sync_to_trio(sync_function=self._fedcm_dialog_impl)(
57
+ timeout=timeout,
58
+ poll_frequency=poll_frequency,
59
+ ignored_exceptions=ignored_exceptions,
60
+ )
61
+
62
+ return get_trio_thread_instance_wrapper(
63
+ wrapper_class=Dialog,
64
+ legacy_object=legacy,
65
+ lock=self._lock,
66
+ limiter=self._capacity_limiter,
67
+ )
68
+
69
+ async def get_credentials(self) -> List[Credential]:
70
+ return await self.sync_to_trio(sync_function=self._get_credentials_impl)()
71
+
72
+ async def remove_all_credentials(self) -> None:
73
+ await self.sync_to_trio(sync_function=self._remove_all_credentials_impl)()
74
+
75
+ async def remove_credential(self, credential_id: Union[str, bytearray]) -> None:
76
+ await self.sync_to_trio(sync_function=self._remove_credential_impl)(credential_id=credential_id)
77
+
78
+ async def remove_virtual_authenticator(self) -> None:
79
+ await self.sync_to_trio(sync_function=self._remove_virtual_authenticator_impl)()
80
+
81
+ async def set_user_verified(self, verified: bool) -> None:
82
+ await self.sync_to_trio(sync_function=self._set_user_verified_impl)(verified=verified)
83
+
84
+ async def supports_fedcm(self) -> bool:
85
+ return await self.sync_to_trio(sync_function=self._supports_fedcm_impl)()
86
+
87
+ async def virtual_authenticator_id(self) -> Optional[str]:
88
+ return await self.sync_to_trio(sync_function=self._virtual_authenticator_id_impl)()
@@ -0,0 +1,199 @@
1
+ import trio
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
4
+ from osn_selenium.flags.base import BrowserFlagsManager
5
+ from osn_selenium.flags.models.base import BrowserFlags
6
+ from selenium.webdriver.common.bidi.session import Session
7
+ from typing import (
8
+ Any,
9
+ Dict,
10
+ Mapping,
11
+ Optional,
12
+ Type
13
+ )
14
+ from selenium.webdriver.remote.errorhandler import ErrorHandler
15
+ from osn_selenium.executors.trio_threads.cdp import CDPExecutor
16
+ from osn_selenium.executors.trio_threads.javascript import JSExecutor
17
+ from selenium.webdriver.remote.locator_converter import LocatorConverter
18
+ from selenium.webdriver.remote.remote_connection import RemoteConnection
19
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
20
+ from osn_selenium._typehints import (
21
+ ARCHITECTURES_TYPEHINT,
22
+ PATH_TYPEHINT
23
+ )
24
+ from osn_selenium.abstract.webdriver.core.base import (
25
+ AbstractCoreBaseMixin
26
+ )
27
+ from selenium.webdriver.remote.webdriver import (
28
+ WebDriver as legacyWebDriver
29
+ )
30
+ from osn_selenium.webdrivers._bridges import (
31
+ get_cdp_executor_bridge,
32
+ get_js_executor_bridge
33
+ )
34
+
35
+
36
+ __all__ = ["CoreBaseMixin"]
37
+
38
+
39
+ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin):
40
+ """
41
+ This class serves as the foundation for browser-specific implementations, managing
42
+ the WebDriver executable path, configuration flags, timeouts, and the active
43
+ driver instance.
44
+ """
45
+
46
+ def __init__(
47
+ self,
48
+ webdriver_path: str,
49
+ flags_manager_type: Type[BrowserFlagsManager] = BrowserFlagsManager,
50
+ flags: Optional[BrowserFlags] = None,
51
+ implicitly_wait: int = 5,
52
+ page_load_timeout: int = 5,
53
+ script_timeout: int = 5,
54
+ window_rect: Optional[WindowRect] = None,
55
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
56
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
57
+ ignore_cdp_version_package_missing: bool = True,
58
+ ) -> None:
59
+ """
60
+ Initializes the base mixin for Trio-based WebDrivers.
61
+
62
+ Sets up the core synchronization primitives, default timeouts,
63
+ and the browser flag manager.
64
+
65
+ Args:
66
+ webdriver_path (str): The file path to the WebDriver executable.
67
+ flags_manager_type (Type[BrowserFlagsManager]): The class type used to manage
68
+ browser-specific configuration flags. Defaults to BrowserFlagsManager.
69
+ flags (Optional[BrowserFlags]): Initial set of browser flags or options
70
+ to apply upon startup. Defaults to None.
71
+ implicitly_wait (int): The amount of time (in seconds) that the driver should
72
+ wait when searching for elements. Defaults to 5.
73
+ page_load_timeout (int): The amount of time (in seconds) to wait for a page
74
+ load to complete. Defaults to 5.
75
+ script_timeout (int): The amount of time (in seconds) to wait for an
76
+ asynchronous script to finish execution. Defaults to 5.
77
+ window_rect (Optional[WindowRect]): The initial size and position of the
78
+ browser window. Defaults to None.
79
+ capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
80
+ throttle concurrent thread-based operations. Defaults to None.
81
+ cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
82
+ ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
83
+ """
84
+
85
+ UnifiedCoreBaseMixin.__init__(
86
+ self,
87
+ webdriver_path=webdriver_path,
88
+ architecture="trio_threads",
89
+ flags_manager_type=flags_manager_type,
90
+ flags=flags,
91
+ implicitly_wait=implicitly_wait,
92
+ page_load_timeout=page_load_timeout,
93
+ script_timeout=script_timeout,
94
+ window_rect=window_rect,
95
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
96
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
97
+ )
98
+
99
+ TrioThreadMixin.__init__(
100
+ self,
101
+ lock=trio.Lock(),
102
+ limiter=capacity_limiter
103
+ if capacity_limiter is not None
104
+ else trio.CapacityLimiter(100),
105
+ )
106
+
107
+ self._cdp_executor = CDPExecutor(
108
+ execute_function=get_cdp_executor_bridge(self),
109
+ lock=self._lock,
110
+ limiter=self._capacity_limiter,
111
+ )
112
+
113
+ self._js_executor = JSExecutor(
114
+ execute_function=get_js_executor_bridge(self),
115
+ lock=self._lock,
116
+ limiter=self._capacity_limiter,
117
+ )
118
+
119
+ @property
120
+ def architecture(self) -> ARCHITECTURES_TYPEHINT:
121
+ return self._architecture_impl
122
+
123
+ @property
124
+ def capabilities(self) -> Dict[str, Any]:
125
+ return self._capabilities_impl()
126
+
127
+ @property
128
+ def caps(self) -> Dict[str, Any]:
129
+ return self._caps_get_impl()
130
+
131
+ @caps.setter
132
+ def caps(self, value: Dict[str, Any]) -> None:
133
+ self._caps_set_impl(value=value)
134
+
135
+ @property
136
+ def cdp(self) -> CDPExecutor:
137
+ return self._cdp_executor
138
+
139
+ @property
140
+ def command_executor(self) -> RemoteConnection:
141
+ return self._command_executor_get_impl()
142
+
143
+ @command_executor.setter
144
+ def command_executor(self, value: RemoteConnection) -> None:
145
+ self._command_executor_set_impl(value=value)
146
+
147
+ @property
148
+ def driver(self) -> Optional[legacyWebDriver]:
149
+ return self._driver_impl
150
+
151
+ @property
152
+ def error_handler(self) -> ErrorHandler:
153
+ return self._error_handler_get_impl()
154
+
155
+ @error_handler.setter
156
+ def error_handler(self, value: ErrorHandler) -> None:
157
+ self._error_handler_set_impl(value=value)
158
+
159
+ async def execute(self, driver_command: str, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
160
+ return await self.sync_to_trio(sync_function=self._execute_impl)(driver_command=driver_command, params=params)
161
+
162
+ @property
163
+ def is_active(self) -> bool:
164
+ return self._is_active_impl
165
+
166
+ @property
167
+ def javascript(self) -> JSExecutor:
168
+ return self._js_executor
169
+
170
+ @property
171
+ def locator_converter(self) -> LocatorConverter:
172
+ return self._locator_converter_get_impl()
173
+
174
+ @locator_converter.setter
175
+ def locator_converter(self, value: LocatorConverter) -> None:
176
+ self._locator_converter_set_impl(value=value)
177
+
178
+ @property
179
+ def name(self) -> str:
180
+ return self._name_impl()
181
+
182
+ @property
183
+ def pinned_scripts(self) -> Dict[str, Any]:
184
+ return self._pinned_scripts_get_impl()
185
+
186
+ @pinned_scripts.setter
187
+ def pinned_scripts(self, value: Dict[str, Any]) -> None:
188
+ self._pinned_scripts_set_impl(value=value)
189
+
190
+ async def session(self) -> Session:
191
+ return await self.sync_to_trio(sync_function=self._session_impl)()
192
+
193
+ @property
194
+ def session_id(self) -> Optional[str]:
195
+ return self._session_id_get_impl()
196
+
197
+ @session_id.setter
198
+ def session_id(self, value: Optional[str]) -> None:
199
+ self._session_id_set_impl(value=value)
@@ -0,0 +1,38 @@
1
+ from typing import Any, Optional
2
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
+ from osn_selenium.webdrivers.unified.core.capture import (
4
+ UnifiedCoreCaptureMixin
5
+ )
6
+ from osn_selenium.abstract.webdriver.core.capture import (
7
+ AbstractCoreCaptureMixin
8
+ )
9
+
10
+
11
+ __all__ = ["CoreCaptureMixin"]
12
+
13
+
14
+ class CoreCaptureMixin(UnifiedCoreCaptureMixin, TrioThreadMixin, AbstractCoreCaptureMixin):
15
+ """
16
+ Mixin enabling screen capture and page source retrieval for Core WebDrivers.
17
+
18
+ Offers methods to take screenshots (file, base64, png), print pages,
19
+ and extract the current DOM source.
20
+ """
21
+
22
+ async def get_screenshot_as_base64(self) -> str:
23
+ return await self.sync_to_trio(sync_function=self._get_screenshot_as_base64_impl)()
24
+
25
+ async def get_screenshot_as_file(self, filename: str) -> bool:
26
+ return await self.sync_to_trio(sync_function=self._get_screenshot_as_file_impl)(filename=filename)
27
+
28
+ async def get_screenshot_as_png(self) -> bytes:
29
+ return await self.sync_to_trio(sync_function=self._get_screenshot_as_png_impl)()
30
+
31
+ async def page_source(self) -> str:
32
+ return await self.sync_to_trio(sync_function=self._page_source_impl)()
33
+
34
+ async def print_page(self, print_options: Optional[Any] = None) -> str:
35
+ return await self.sync_to_trio(sync_function=self._print_page_impl)(print_options=print_options)
36
+
37
+ async def save_screenshot(self, filename: str) -> bool:
38
+ return await self.sync_to_trio(sync_function=self._save_screenshot_impl)(filename=filename)
@@ -0,0 +1,92 @@
1
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
2
+ from osn_selenium.instances.trio_threads.dialog import Dialog
3
+ from osn_selenium.instances.trio_threads.mobile import Mobile
4
+ from osn_selenium.instances.trio_threads.browser import Browser
5
+ from osn_selenium.instances.trio_threads.permissions import Permissions
6
+ from osn_selenium.instances.trio_threads.web_extension import WebExtension
7
+ from osn_selenium.instances.convert import (
8
+ get_trio_thread_instance_wrapper
9
+ )
10
+ from osn_selenium.instances.trio_threads.browsing_context import BrowsingContext
11
+ from osn_selenium.webdrivers.unified.core.components import (
12
+ UnifiedCoreComponentsMixin
13
+ )
14
+ from osn_selenium.abstract.webdriver.core.components import (
15
+ AbstractCoreComponentsMixin
16
+ )
17
+
18
+
19
+ __all__ = ["CoreComponentsMixin"]
20
+
21
+
22
+ class CoreComponentsMixin(
23
+ UnifiedCoreComponentsMixin,
24
+ TrioThreadMixin,
25
+ AbstractCoreComponentsMixin
26
+ ):
27
+ """
28
+ Mixin providing access to specialized browser components for Core WebDrivers.
29
+
30
+ Exposes interfaces for interacting with specific browser domains such as
31
+ permissions, mobile emulation, dialog handling, and web extensions.
32
+ """
33
+
34
+ async def browser(self) -> Browser:
35
+ legacy = await self.sync_to_trio(sync_function=self._browser_impl)()
36
+
37
+ return get_trio_thread_instance_wrapper(
38
+ wrapper_class=Browser,
39
+ legacy_object=legacy,
40
+ lock=self._lock,
41
+ limiter=self._capacity_limiter,
42
+ )
43
+
44
+ async def browsing_context(self) -> BrowsingContext:
45
+ legacy = await self.sync_to_trio(sync_function=self._browsing_context_impl)()
46
+
47
+ return get_trio_thread_instance_wrapper(
48
+ wrapper_class=BrowsingContext,
49
+ legacy_object=legacy,
50
+ lock=self._lock,
51
+ limiter=self._capacity_limiter,
52
+ )
53
+
54
+ async def dialog(self) -> Dialog:
55
+ legacy = await self.sync_to_trio(sync_function=self._dialog_impl)()
56
+
57
+ return get_trio_thread_instance_wrapper(
58
+ wrapper_class=Dialog,
59
+ legacy_object=legacy,
60
+ lock=self._lock,
61
+ limiter=self._capacity_limiter,
62
+ )
63
+
64
+ async def mobile(self) -> Mobile:
65
+ legacy = await self.sync_to_trio(sync_function=self._mobile_impl)()
66
+
67
+ return get_trio_thread_instance_wrapper(
68
+ wrapper_class=Mobile,
69
+ legacy_object=legacy,
70
+ lock=self._lock,
71
+ limiter=self._capacity_limiter,
72
+ )
73
+
74
+ async def permissions(self) -> Permissions:
75
+ legacy = await self.sync_to_trio(sync_function=self._permissions_impl)()
76
+
77
+ return get_trio_thread_instance_wrapper(
78
+ wrapper_class=Permissions,
79
+ legacy_object=legacy,
80
+ lock=self._lock,
81
+ limiter=self._capacity_limiter,
82
+ )
83
+
84
+ async def webextension(self) -> WebExtension:
85
+ legacy = await self.sync_to_trio(sync_function=self._webextension_impl)()
86
+
87
+ return get_trio_thread_instance_wrapper(
88
+ wrapper_class=WebExtension,
89
+ legacy_object=legacy,
90
+ lock=self._lock,
91
+ limiter=self._capacity_limiter,
92
+ )
@@ -0,0 +1,53 @@
1
+ from contextlib import asynccontextmanager
2
+ from osn_selenium.trio_threads_mixin import TrioThreadMixin
3
+ from typing import (
4
+ Any,
5
+ AsyncGenerator,
6
+ Dict,
7
+ Tuple
8
+ )
9
+ from osn_selenium.instances.trio_threads.network import Network
10
+ from selenium.webdriver.remote.bidi_connection import BidiConnection
11
+ from selenium.webdriver.remote.websocket_connection import WebSocketConnection
12
+ from osn_selenium.instances.convert import (
13
+ get_trio_thread_instance_wrapper
14
+ )
15
+ from osn_selenium.webdrivers.unified.core.devtools import (
16
+ UnifiedCoreDevToolsMixin
17
+ )
18
+ from osn_selenium.abstract.webdriver.core.devtools import (
19
+ AbstractCoreDevToolsMixin
20
+ )
21
+
22
+
23
+ __all__ = ["CoreDevToolsMixin"]
24
+
25
+
26
+ class CoreDevToolsMixin(UnifiedCoreDevToolsMixin, TrioThreadMixin, AbstractCoreDevToolsMixin):
27
+ """
28
+ Mixin for Chrome DevTools Protocol (CDP) and BiDi interactions in Core WebDrivers.
29
+
30
+ Facilitates low-level browser control via CDP commands, network interception,
31
+ and bidirectional communication sessions.
32
+ """
33
+
34
+ @asynccontextmanager
35
+ async def bidi_connection(self) -> AsyncGenerator[BidiConnection, Any]:
36
+ async with self._bidi_connection_impl() as bidi:
37
+ yield bidi
38
+
39
+ async def execute_cdp_cmd(self, cmd: str, cmd_args: Dict[str, Any]) -> Any:
40
+ return await self.sync_to_trio(sync_function=self._execute_cdp_cmd_impl)(cmd=cmd, cmd_args=cmd_args)
41
+
42
+ async def network(self) -> Network:
43
+ legacy = await self.sync_to_trio(sync_function=self._network_impl)()
44
+
45
+ return get_trio_thread_instance_wrapper(
46
+ wrapper_class=Network,
47
+ legacy_object=legacy,
48
+ lock=self._lock,
49
+ limiter=self._capacity_limiter,
50
+ )
51
+
52
+ async def start_devtools(self) -> Tuple[Any, WebSocketConnection]:
53
+ return await self.sync_to_trio(sync_function=self._start_devtools_impl)()