osn-selenium 0.0.0__py3-none-any.whl → 1.0.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 (628) hide show
  1. osn_selenium/_functions.py +84 -0
  2. osn_selenium/_typehints.py +19 -0
  3. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  4. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  5. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  6. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  7. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  8. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  9. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  10. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  11. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  12. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  13. osn_selenium/abstract/executors/cdp/console.py +18 -0
  14. osn_selenium/abstract/executors/cdp/css.py +197 -0
  15. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  16. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  17. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  18. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  19. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  20. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  21. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  22. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  23. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  24. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  25. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  26. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  27. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  28. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  29. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  30. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  31. osn_selenium/abstract/executors/cdp/input.py +158 -0
  32. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  33. osn_selenium/abstract/executors/cdp/io.py +24 -0
  34. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  35. osn_selenium/abstract/executors/cdp/log.py +27 -0
  36. osn_selenium/abstract/executors/cdp/media.py +14 -0
  37. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  38. osn_selenium/abstract/executors/cdp/network.py +252 -0
  39. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  40. osn_selenium/abstract/executors/cdp/page.py +347 -0
  41. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  42. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  43. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  44. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  45. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  46. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  47. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  48. osn_selenium/abstract/executors/cdp/security.py +26 -0
  49. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  50. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  51. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  52. osn_selenium/abstract/executors/cdp/target.py +125 -0
  53. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  54. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  55. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  56. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  57. osn_selenium/abstract/executors/javascript.py +203 -0
  58. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  59. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  60. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  61. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  62. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  63. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  64. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  65. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  66. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  67. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  68. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  69. osn_selenium/abstract/instances/alert.py +67 -0
  70. osn_selenium/abstract/instances/browser.py +76 -0
  71. osn_selenium/abstract/instances/browsing_context.py +310 -0
  72. osn_selenium/abstract/instances/dialog.py +107 -0
  73. osn_selenium/abstract/instances/fedcm.py +133 -0
  74. osn_selenium/abstract/instances/mobile.py +79 -0
  75. osn_selenium/abstract/instances/network.py +100 -0
  76. osn_selenium/abstract/instances/permissions.py +52 -0
  77. osn_selenium/abstract/instances/script.py +109 -0
  78. osn_selenium/abstract/instances/shadow_root.py +81 -0
  79. osn_selenium/abstract/instances/storage.py +98 -0
  80. osn_selenium/abstract/instances/switch_to.py +104 -0
  81. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  82. osn_selenium/abstract/instances/web_element.py +395 -0
  83. osn_selenium/abstract/instances/web_extension.py +70 -0
  84. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  85. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  86. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  87. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  88. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  89. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  90. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  91. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  92. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  93. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  94. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  95. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  96. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  97. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  98. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  99. osn_selenium/abstract/webdriver/core/base.py +298 -0
  100. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  101. osn_selenium/abstract/webdriver/core/components.py +82 -0
  102. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  103. osn_selenium/abstract/webdriver/core/element.py +55 -0
  104. osn_selenium/abstract/webdriver/core/file.py +82 -0
  105. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  106. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  107. osn_selenium/abstract/webdriver/core/script.py +88 -0
  108. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  109. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  110. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  111. osn_selenium/abstract/webdriver/core/window.py +237 -0
  112. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  113. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  114. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  115. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  116. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  117. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  118. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  119. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  120. osn_selenium/base_mixin.py +122 -0
  121. osn_selenium/browsers_handler/__init__.py +47 -17
  122. osn_selenium/browsers_handler/_linux.py +226 -0
  123. osn_selenium/browsers_handler/_windows.py +21 -14
  124. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  125. osn_selenium/dev_tools/_decorators.py +140 -0
  126. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  127. osn_selenium/dev_tools/_functions.py +174 -0
  128. osn_selenium/dev_tools/_system_utils.py +35 -0
  129. osn_selenium/dev_tools/_typehints.py +32 -0
  130. osn_selenium/dev_tools/_validators.py +227 -0
  131. osn_selenium/dev_tools/_wrappers.py +95 -0
  132. osn_selenium/dev_tools/domains/__init__.py +7 -40
  133. osn_selenium/dev_tools/domains/abstract.py +98 -254
  134. osn_selenium/dev_tools/domains/fetch.py +229 -906
  135. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  136. osn_selenium/dev_tools/filters.py +40 -0
  137. osn_selenium/dev_tools/logger/main.py +226 -0
  138. osn_selenium/dev_tools/logger/models.py +232 -0
  139. osn_selenium/dev_tools/logger/target.py +258 -0
  140. osn_selenium/dev_tools/manager/__init__.py +16 -0
  141. osn_selenium/dev_tools/manager/base.py +147 -0
  142. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  143. osn_selenium/dev_tools/manager/logging.py +153 -0
  144. osn_selenium/dev_tools/manager/settings.py +89 -0
  145. osn_selenium/dev_tools/manager/targets.py +175 -0
  146. osn_selenium/dev_tools/models.py +49 -0
  147. osn_selenium/dev_tools/settings.py +135 -0
  148. osn_selenium/dev_tools/target/__init__.py +16 -0
  149. osn_selenium/dev_tools/target/base.py +438 -0
  150. osn_selenium/dev_tools/target/detach.py +54 -0
  151. osn_selenium/dev_tools/target/discovery.py +112 -0
  152. osn_selenium/dev_tools/target/events.py +120 -0
  153. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  154. osn_selenium/dev_tools/target/lifecycle.py +179 -0
  155. osn_selenium/dev_tools/target/logging.py +155 -0
  156. osn_selenium/exceptions/__init__.py +1 -0
  157. osn_selenium/exceptions/base.py +9 -0
  158. osn_selenium/exceptions/configuration.py +84 -0
  159. osn_selenium/exceptions/devtools.py +114 -0
  160. osn_selenium/exceptions/flags.py +45 -0
  161. osn_selenium/exceptions/instance.py +92 -0
  162. osn_selenium/exceptions/javascript.py +31 -0
  163. osn_selenium/exceptions/logic.py +31 -0
  164. osn_selenium/exceptions/path.py +77 -0
  165. osn_selenium/exceptions/platform.py +33 -0
  166. osn_selenium/exceptions/protocol.py +86 -0
  167. osn_selenium/exceptions/webdriver.py +44 -0
  168. osn_selenium/exceptions/window.py +63 -0
  169. osn_selenium/executors/__init__.py +1 -0
  170. osn_selenium/executors/sync/__init__.py +1 -0
  171. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  172. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  173. osn_selenium/executors/sync/cdp/animation.py +50 -0
  174. osn_selenium/executors/sync/cdp/audits.py +48 -0
  175. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  176. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  177. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  178. osn_selenium/executors/sync/cdp/browser.py +131 -0
  179. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  180. osn_selenium/executors/sync/cdp/cast.py +38 -0
  181. osn_selenium/executors/sync/cdp/console.py +24 -0
  182. osn_selenium/executors/sync/cdp/css.py +187 -0
  183. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  184. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  185. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  186. osn_selenium/executors/sync/cdp/dom.py +310 -0
  187. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  188. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  189. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  190. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  191. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  192. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  193. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  194. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  195. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  196. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  197. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  198. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  199. osn_selenium/executors/sync/cdp/input.py +233 -0
  200. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  201. osn_selenium/executors/sync/cdp/io.py +33 -0
  202. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  203. osn_selenium/executors/sync/cdp/log.py +35 -0
  204. osn_selenium/executors/sync/cdp/media.py +21 -0
  205. osn_selenium/executors/sync/cdp/memory.py +62 -0
  206. osn_selenium/executors/sync/cdp/network.py +287 -0
  207. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  208. osn_selenium/executors/sync/cdp/page.py +365 -0
  209. osn_selenium/executors/sync/cdp/performance.py +33 -0
  210. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  211. osn_selenium/executors/sync/cdp/preload.py +21 -0
  212. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  213. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  214. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  215. osn_selenium/executors/sync/cdp/schema.py +23 -0
  216. osn_selenium/executors/sync/cdp/security.py +30 -0
  217. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  218. osn_selenium/executors/sync/cdp/storage.py +151 -0
  219. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  220. osn_selenium/executors/sync/cdp/target.py +147 -0
  221. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  222. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  223. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  224. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  225. osn_selenium/executors/sync/javascript.py +79 -0
  226. osn_selenium/executors/trio_threads/__init__.py +1 -0
  227. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  228. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  229. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  230. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  231. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  232. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  233. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  234. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  235. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  236. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  237. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  238. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  239. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  240. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  241. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  242. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  243. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  244. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  245. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  246. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  247. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  248. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  249. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  250. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  251. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  252. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  253. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  254. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  255. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  256. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  257. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  258. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  259. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  260. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  261. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  262. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  263. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  264. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  265. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  266. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  267. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  268. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  269. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  270. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  271. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  272. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  273. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  274. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  275. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  276. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  277. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  278. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  279. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  280. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  281. osn_selenium/executors/trio_threads/javascript.py +90 -0
  282. osn_selenium/executors/unified/__init__.py +1 -0
  283. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  284. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  285. osn_selenium/executors/unified/cdp/animation.py +50 -0
  286. osn_selenium/executors/unified/cdp/audits.py +45 -0
  287. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  288. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  289. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  290. osn_selenium/executors/unified/cdp/browser.py +143 -0
  291. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  292. osn_selenium/executors/unified/cdp/cast.py +32 -0
  293. osn_selenium/executors/unified/cdp/console.py +18 -0
  294. osn_selenium/executors/unified/cdp/css.py +237 -0
  295. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  296. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  297. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  298. osn_selenium/executors/unified/cdp/dom.py +380 -0
  299. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  300. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  301. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  302. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  303. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  304. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  305. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  306. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  307. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  308. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  309. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  310. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  311. osn_selenium/executors/unified/cdp/input.py +254 -0
  312. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  313. osn_selenium/executors/unified/cdp/io.py +29 -0
  314. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  315. osn_selenium/executors/unified/cdp/log.py +29 -0
  316. osn_selenium/executors/unified/cdp/media.py +15 -0
  317. osn_selenium/executors/unified/cdp/memory.py +59 -0
  318. osn_selenium/executors/unified/cdp/network.py +323 -0
  319. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  320. osn_selenium/executors/unified/cdp/page.py +410 -0
  321. osn_selenium/executors/unified/cdp/performance.py +27 -0
  322. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  323. osn_selenium/executors/unified/cdp/preload.py +15 -0
  324. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  325. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  326. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  327. osn_selenium/executors/unified/cdp/schema.py +17 -0
  328. osn_selenium/executors/unified/cdp/security.py +27 -0
  329. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  330. osn_selenium/executors/unified/cdp/storage.py +178 -0
  331. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  332. osn_selenium/executors/unified/cdp/target.py +165 -0
  333. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  334. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  335. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  336. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  337. osn_selenium/executors/unified/javascript.py +108 -0
  338. osn_selenium/flags/__init__.py +1 -0
  339. osn_selenium/flags/_functions.py +45 -0
  340. osn_selenium/flags/_typehints.py +34 -0
  341. osn_selenium/flags/_validators.py +101 -0
  342. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +165 -243
  343. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +133 -371
  344. osn_selenium/flags/chrome.py +259 -0
  345. osn_selenium/flags/edge.py +259 -0
  346. osn_selenium/flags/models/__init__.py +1 -0
  347. osn_selenium/flags/models/base.py +130 -0
  348. osn_selenium/flags/models/blink.py +263 -0
  349. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  350. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  351. osn_selenium/flags/models/values.py +44 -0
  352. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  353. osn_selenium/flags/yandex.py +259 -0
  354. osn_selenium/instances/__init__.py +1 -0
  355. osn_selenium/instances/_functions.py +242 -0
  356. osn_selenium/instances/_typehints.py +148 -0
  357. osn_selenium/instances/_utils.py +143 -0
  358. osn_selenium/instances/convert.py +287 -0
  359. osn_selenium/instances/protocols.py +105 -0
  360. osn_selenium/instances/sync/__init__.py +1 -0
  361. osn_selenium/instances/sync/action_chains/__init__.py +26 -0
  362. osn_selenium/instances/sync/action_chains/base.py +74 -0
  363. osn_selenium/instances/sync/action_chains/click.py +61 -0
  364. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  365. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  366. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  367. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  368. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  369. osn_selenium/instances/sync/action_chains/move.py +46 -0
  370. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  371. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  372. osn_selenium/instances/sync/alert.py +69 -0
  373. osn_selenium/instances/sync/browser.py +72 -0
  374. osn_selenium/instances/sync/browsing_context.py +193 -0
  375. osn_selenium/instances/sync/dialog.py +81 -0
  376. osn_selenium/instances/sync/fedcm.py +92 -0
  377. osn_selenium/instances/sync/mobile.py +75 -0
  378. osn_selenium/instances/sync/network.py +90 -0
  379. osn_selenium/instances/sync/permissions.py +80 -0
  380. osn_selenium/instances/sync/script.py +77 -0
  381. osn_selenium/instances/sync/shadow_root.py +91 -0
  382. osn_selenium/instances/sync/storage.py +91 -0
  383. osn_selenium/instances/sync/switch_to.py +92 -0
  384. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  385. osn_selenium/instances/sync/web_element.py +179 -0
  386. osn_selenium/instances/sync/web_extension.py +77 -0
  387. osn_selenium/instances/trio_threads/__init__.py +1 -0
  388. osn_selenium/instances/trio_threads/action_chains/__init__.py +26 -0
  389. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  390. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  391. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  392. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  393. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  394. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  395. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  396. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  397. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  399. osn_selenium/instances/trio_threads/alert.py +87 -0
  400. osn_selenium/instances/trio_threads/browser.py +90 -0
  401. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  402. osn_selenium/instances/trio_threads/dialog.py +99 -0
  403. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  404. osn_selenium/instances/trio_threads/mobile.py +93 -0
  405. osn_selenium/instances/trio_threads/network.py +108 -0
  406. osn_selenium/instances/trio_threads/permissions.py +102 -0
  407. osn_selenium/instances/trio_threads/script.py +95 -0
  408. osn_selenium/instances/trio_threads/shadow_root.py +123 -0
  409. osn_selenium/instances/trio_threads/storage.py +109 -0
  410. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  411. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  412. osn_selenium/instances/trio_threads/web_element.py +217 -0
  413. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  414. osn_selenium/instances/unified/__init__.py +1 -0
  415. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  416. osn_selenium/instances/unified/action_chains/base.py +31 -0
  417. osn_selenium/instances/unified/action_chains/click.py +27 -0
  418. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  419. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  420. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  421. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  422. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  423. osn_selenium/instances/unified/action_chains/move.py +24 -0
  424. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  425. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  426. osn_selenium/instances/unified/alert.py +29 -0
  427. osn_selenium/instances/unified/browser.py +33 -0
  428. osn_selenium/instances/unified/browsing_context.py +151 -0
  429. osn_selenium/instances/unified/dialog.py +42 -0
  430. osn_selenium/instances/unified/fedcm.py +48 -0
  431. osn_selenium/instances/unified/mobile.py +36 -0
  432. osn_selenium/instances/unified/network.py +50 -0
  433. osn_selenium/instances/unified/permissions.py +43 -0
  434. osn_selenium/instances/unified/script.py +38 -0
  435. osn_selenium/instances/unified/shadow_root.py +46 -0
  436. osn_selenium/instances/unified/storage.py +48 -0
  437. osn_selenium/instances/unified/switch_to.py +49 -0
  438. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  439. osn_selenium/instances/unified/web_element.py +145 -0
  440. osn_selenium/instances/unified/web_extension.py +38 -0
  441. osn_selenium/javascript/__init__.py +1 -0
  442. osn_selenium/javascript/_functions.py +63 -0
  443. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  444. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  445. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  446. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  447. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  448. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  449. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  450. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  451. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  452. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  453. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  454. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  455. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  456. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  457. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  458. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  459. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  460. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  461. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  462. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  463. osn_selenium/javascript/functions.py +44 -0
  464. osn_selenium/javascript/models.py +35 -0
  465. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  466. osn_selenium/models.py +139 -0
  467. osn_selenium/webdrivers/_args_helpers.py +181 -0
  468. osn_selenium/webdrivers/_bridges.py +57 -0
  469. osn_selenium/webdrivers/_decorators.py +83 -0
  470. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  471. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  472. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  473. osn_selenium/webdrivers/_typehints.py +10 -0
  474. osn_selenium/webdrivers/protocols.py +50 -0
  475. osn_selenium/webdrivers/sync/__init__.py +1 -0
  476. osn_selenium/webdrivers/sync/blink/__init__.py +114 -0
  477. osn_selenium/webdrivers/sync/blink/base.py +128 -0
  478. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  479. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  480. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  481. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  482. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  483. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  484. osn_selenium/webdrivers/sync/chrome/__init__.py +67 -0
  485. osn_selenium/webdrivers/sync/chrome/base.py +106 -0
  486. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  487. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  488. osn_selenium/webdrivers/sync/core/__init__.py +91 -0
  489. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  490. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  491. osn_selenium/webdrivers/sync/core/base.py +167 -0
  492. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  493. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  494. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  495. osn_selenium/webdrivers/sync/core/element.py +42 -0
  496. osn_selenium/webdrivers/sync/core/file.py +40 -0
  497. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  498. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  499. osn_selenium/webdrivers/sync/core/script.py +53 -0
  500. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  501. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  502. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  503. osn_selenium/webdrivers/sync/core/window.py +99 -0
  504. osn_selenium/webdrivers/sync/edge/__init__.py +67 -0
  505. osn_selenium/webdrivers/sync/edge/base.py +102 -0
  506. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  507. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  508. osn_selenium/webdrivers/sync/yandex/__init__.py +67 -0
  509. osn_selenium/webdrivers/sync/yandex/base.py +99 -0
  510. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  511. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  512. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  513. osn_selenium/webdrivers/trio_threads/blink/__init__.py +124 -0
  514. osn_selenium/webdrivers/trio_threads/blink/base.py +133 -0
  515. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  516. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  517. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  518. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  519. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  520. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  521. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +81 -0
  522. osn_selenium/webdrivers/trio_threads/chrome/base.py +107 -0
  523. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  524. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  525. osn_selenium/webdrivers/trio_threads/core/__init__.py +109 -0
  526. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  527. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  528. osn_selenium/webdrivers/trio_threads/core/base.py +191 -0
  529. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  530. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  531. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  532. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  533. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  534. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  535. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  536. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  537. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  538. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  539. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  540. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  541. osn_selenium/webdrivers/trio_threads/edge/__init__.py +81 -0
  542. osn_selenium/webdrivers/trio_threads/edge/base.py +103 -0
  543. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  544. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  545. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +81 -0
  546. osn_selenium/webdrivers/trio_threads/yandex/base.py +100 -0
  547. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  548. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  549. osn_selenium/webdrivers/unified/__init__.py +1 -0
  550. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  551. osn_selenium/webdrivers/unified/blink/base.py +131 -0
  552. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  553. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  554. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  555. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  556. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  557. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  558. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  559. osn_selenium/webdrivers/unified/chrome/base.py +54 -0
  560. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  561. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  562. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  563. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  564. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  565. osn_selenium/webdrivers/unified/core/base.py +132 -0
  566. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  567. osn_selenium/webdrivers/unified/core/components.py +32 -0
  568. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  569. osn_selenium/webdrivers/unified/core/element.py +24 -0
  570. osn_selenium/webdrivers/unified/core/file.py +35 -0
  571. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  572. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  573. osn_selenium/webdrivers/unified/core/script.py +32 -0
  574. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  575. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  576. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  577. osn_selenium/webdrivers/unified/core/window.py +135 -0
  578. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  579. osn_selenium/webdrivers/unified/edge/base.py +52 -0
  580. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  581. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  582. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  583. osn_selenium/webdrivers/unified/yandex/base.py +54 -0
  584. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  585. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  586. osn_selenium-1.0.0.dist-info/METADATA +239 -0
  587. osn_selenium-1.0.0.dist-info/RECORD +608 -0
  588. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/WHEEL +1 -1
  589. osn_selenium/captcha_workers/__init__.py +0 -26
  590. osn_selenium/dev_tools/_types.py +0 -22
  591. osn_selenium/dev_tools/errors.py +0 -89
  592. osn_selenium/dev_tools/logger.py +0 -558
  593. osn_selenium/dev_tools/manager.py +0 -1551
  594. osn_selenium/dev_tools/utils.py +0 -509
  595. osn_selenium/errors.py +0 -16
  596. osn_selenium/types.py +0 -118
  597. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  598. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  599. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  600. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  601. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  602. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  603. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  604. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  605. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  606. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  607. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  608. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  609. osn_selenium/webdrivers/_functions.py +0 -504
  610. osn_selenium/webdrivers/types.py +0 -390
  611. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  612. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  613. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  614. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  615. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  616. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  617. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  618. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  619. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  620. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  621. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  622. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  623. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  624. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  628. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,191 @@
1
+ import trio
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium.base_mixin import TrioThreadMixin
4
+ from typing import (
5
+ Any,
6
+ Dict,
7
+ Optional,
8
+ Type
9
+ )
10
+ from osn_selenium.flags.base import BrowserFlagsManager
11
+ from osn_selenium.flags.models.base import BrowserFlags
12
+ from selenium.webdriver.common.bidi.session import Session
13
+ from osn_selenium._typehints import (
14
+ ARCHITECTURES_TYPEHINT
15
+ )
16
+ from selenium.webdriver.remote.errorhandler import ErrorHandler
17
+ from osn_selenium.executors.trio_threads.cdp import CDPExecutor
18
+ from osn_selenium.executors.trio_threads.javascript import JSExecutor
19
+ from selenium.webdriver.remote.locator_converter import LocatorConverter
20
+ from selenium.webdriver.remote.remote_connection import RemoteConnection
21
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
22
+ from osn_selenium.abstract.webdriver.core.base import (
23
+ AbstractCoreBaseMixin
24
+ )
25
+ from selenium.webdriver.remote.webdriver import (
26
+ WebDriver as legacyWebDriver
27
+ )
28
+ from osn_selenium.webdrivers._bridges import (
29
+ get_cdp_executor_bridge,
30
+ get_js_executor_bridge
31
+ )
32
+
33
+
34
+ __all__ = ["CoreBaseMixin"]
35
+
36
+
37
+ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin):
38
+ """
39
+ This class serves as the foundation for browser-specific implementations, managing
40
+ the WebDriver executable path, configuration flags, timeouts, and the active
41
+ driver instance.
42
+ """
43
+
44
+ def __init__(
45
+ self,
46
+ webdriver_path: str,
47
+ flags_manager_type: Type[BrowserFlagsManager] = BrowserFlagsManager,
48
+ flags: Optional[BrowserFlags] = None,
49
+ implicitly_wait: int = 5,
50
+ page_load_timeout: int = 5,
51
+ script_timeout: int = 5,
52
+ window_rect: Optional[WindowRect] = None,
53
+ capacity_limiter: Optional[trio.CapacityLimiter] = None,
54
+ ) -> None:
55
+ """
56
+ Initializes the base mixin for Trio-based WebDrivers.
57
+
58
+ Sets up the core synchronization primitives, default timeouts,
59
+ and the browser flag manager.
60
+
61
+ Args:
62
+ webdriver_path (str): The file path to the WebDriver executable.
63
+ flags_manager_type (Type[BrowserFlagsManager]): The class type used to manage
64
+ browser-specific configuration flags. Defaults to BrowserFlagsManager.
65
+ flags (Optional[BrowserFlags]): Initial set of browser flags or options
66
+ to apply upon startup. Defaults to None.
67
+ implicitly_wait (int): The amount of time (in seconds) that the driver should
68
+ wait when searching for elements. Defaults to 5.
69
+ page_load_timeout (int): The amount of time (in seconds) to wait for a page
70
+ load to complete. Defaults to 5.
71
+ script_timeout (int): The amount of time (in seconds) to wait for an
72
+ asynchronous script to finish execution. Defaults to 5.
73
+ window_rect (Optional[WindowRect]): The initial size and position of the
74
+ browser window. Defaults to None.
75
+ capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
76
+ throttle concurrent thread-based operations. Defaults to None.
77
+ """
78
+
79
+ UnifiedCoreBaseMixin.__init__(
80
+ self,
81
+ webdriver_path=webdriver_path,
82
+ architecture="trio_threads",
83
+ flags_manager_type=flags_manager_type,
84
+ flags=flags,
85
+ implicitly_wait=implicitly_wait,
86
+ page_load_timeout=page_load_timeout,
87
+ script_timeout=script_timeout,
88
+ window_rect=window_rect,
89
+ )
90
+
91
+ TrioThreadMixin.__init__(
92
+ self,
93
+ lock=trio.Lock(),
94
+ limiter=capacity_limiter
95
+ if capacity_limiter is not None
96
+ else trio.CapacityLimiter(100),
97
+ )
98
+
99
+ self._cdp_executor = CDPExecutor(
100
+ execute_function=get_cdp_executor_bridge(self),
101
+ lock=self._lock,
102
+ limiter=self._capacity_limiter,
103
+ )
104
+
105
+ self._js_executor = JSExecutor(
106
+ execute_function=get_js_executor_bridge(self),
107
+ lock=self._lock,
108
+ limiter=self._capacity_limiter,
109
+ )
110
+
111
+ @property
112
+ def architecture(self) -> ARCHITECTURES_TYPEHINT:
113
+ return self._architecture_impl
114
+
115
+ @property
116
+ def capabilities(self) -> Dict[str, Any]:
117
+ return self._capabilities_impl()
118
+
119
+ @property
120
+ def caps(self) -> Dict[str, Any]:
121
+ return self._caps_get_impl()
122
+
123
+ @caps.setter
124
+ def caps(self, value: Dict[str, Any]) -> None:
125
+ self._caps_set_impl(value=value)
126
+
127
+ @property
128
+ def cdp(self) -> CDPExecutor:
129
+ return self._cdp_executor
130
+
131
+ @property
132
+ def command_executor(self) -> RemoteConnection:
133
+ return self._command_executor_get_impl()
134
+
135
+ @command_executor.setter
136
+ def command_executor(self, value: RemoteConnection) -> None:
137
+ self._command_executor_set_impl(value=value)
138
+
139
+ @property
140
+ def driver(self) -> Optional[legacyWebDriver]:
141
+ return self._driver_impl
142
+
143
+ @property
144
+ def error_handler(self) -> ErrorHandler:
145
+ return self._error_handler_get_impl()
146
+
147
+ @error_handler.setter
148
+ def error_handler(self, value: ErrorHandler) -> None:
149
+ self._error_handler_set_impl(value=value)
150
+
151
+ async def execute(self, driver_command: str, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
152
+ return await self.sync_to_trio(sync_function=self._execute_impl)(driver_command=driver_command, params=params)
153
+
154
+ @property
155
+ def is_active(self) -> bool:
156
+ return self._is_active_impl
157
+
158
+ @property
159
+ def javascript(self) -> JSExecutor:
160
+ return self._js_executor
161
+
162
+ @property
163
+ def locator_converter(self) -> LocatorConverter:
164
+ return self._locator_converter_get_impl()
165
+
166
+ @locator_converter.setter
167
+ def locator_converter(self, value: LocatorConverter) -> None:
168
+ self._locator_converter_set_impl(value=value)
169
+
170
+ @property
171
+ def name(self) -> str:
172
+ return self._name_impl()
173
+
174
+ @property
175
+ def pinned_scripts(self) -> Dict[str, Any]:
176
+ return self._pinned_scripts_get_impl()
177
+
178
+ @pinned_scripts.setter
179
+ def pinned_scripts(self, value: Dict[str, Any]) -> None:
180
+ self._pinned_scripts_set_impl(value=value)
181
+
182
+ async def session(self) -> Session:
183
+ return await self.sync_to_trio(sync_function=self._session_impl)()
184
+
185
+ @property
186
+ def session_id(self) -> Optional[str]:
187
+ return self._session_id_get_impl()
188
+
189
+ @session_id.setter
190
+ def session_id(self, value: Optional[str]) -> None:
191
+ self._session_id_set_impl(value=value)
@@ -0,0 +1,38 @@
1
+ from typing import Any, Optional
2
+ from osn_selenium.base_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.base_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.base_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)()
@@ -0,0 +1,58 @@
1
+ from typing import List, Optional
2
+ from selenium.webdriver.common.by import By
3
+ from osn_selenium.base_mixin import TrioThreadMixin
4
+ from osn_selenium.instances.trio_threads.web_element import WebElement
5
+ from osn_selenium.instances.convert import (
6
+ get_trio_thread_instance_wrapper
7
+ )
8
+ from osn_selenium.webdrivers.unified.core.element import (
9
+ UnifiedCoreElementMixin
10
+ )
11
+ from osn_selenium.abstract.webdriver.core.element import (
12
+ AbstractCoreElementMixin
13
+ )
14
+
15
+
16
+ __all__ = ["CoreElementMixin"]
17
+
18
+
19
+ class CoreElementMixin(UnifiedCoreElementMixin, TrioThreadMixin, AbstractCoreElementMixin):
20
+ """
21
+ Mixin for DOM element retrieval in Core WebDrivers.
22
+
23
+ Provides standard methods to locate single or multiple elements within
24
+ the current page context.
25
+ """
26
+
27
+ async def create_web_element(self, element_id: str) -> WebElement:
28
+ legacy = await self.sync_to_trio(sync_function=self._create_web_element_impl)(element_id=element_id)
29
+
30
+ return get_trio_thread_instance_wrapper(
31
+ wrapper_class=WebElement,
32
+ legacy_object=legacy,
33
+ lock=self._lock,
34
+ limiter=self._capacity_limiter,
35
+ )
36
+
37
+ async def find_element(self, by: str = By.ID, value: Optional[str] = None) -> WebElement:
38
+ legacy = await self.sync_to_trio(sync_function=self._find_element_impl)(by=by, value=value)
39
+
40
+ return get_trio_thread_instance_wrapper(
41
+ wrapper_class=WebElement,
42
+ legacy_object=legacy,
43
+ lock=self._lock,
44
+ limiter=self._capacity_limiter,
45
+ )
46
+
47
+ async def find_elements(self, by: str = By.ID, value: Optional[str] = None) -> List[WebElement]:
48
+ legacy_elements = await self.sync_to_trio(sync_function=self._find_elements_impl)(by=by, value=value)
49
+
50
+ return [
51
+ get_trio_thread_instance_wrapper(
52
+ wrapper_class=WebElement,
53
+ legacy_object=element,
54
+ lock=self._lock,
55
+ limiter=self._capacity_limiter,
56
+ )
57
+ for element in legacy_elements
58
+ ]
@@ -0,0 +1,45 @@
1
+ from contextlib import asynccontextmanager
2
+ from typing import (
3
+ Any,
4
+ AsyncGenerator,
5
+ List
6
+ )
7
+ from osn_selenium.base_mixin import TrioThreadMixin
8
+ from osn_selenium.webdrivers.unified.core.file import UnifiedCoreFileMixin
9
+ from osn_selenium.abstract.webdriver.core.file import (
10
+ AbstractCoreFileMixin
11
+ )
12
+
13
+
14
+ __all__ = ["CoreFileMixin"]
15
+
16
+
17
+ class CoreFileMixin(UnifiedCoreFileMixin, TrioThreadMixin, AbstractCoreFileMixin):
18
+ """
19
+ Mixin for file system interactions within Core WebDrivers.
20
+
21
+ Manages file upload detection, download verification, and cleanup of
22
+ downloaded files.
23
+ """
24
+
25
+ async def delete_downloadable_files(self) -> None:
26
+ await self.sync_to_trio(sync_function=self._delete_downloadable_files_impl)()
27
+
28
+ async def download_file(self, file_name: str, target_directory: str) -> None:
29
+ await self.sync_to_trio(sync_function=self._download_file_impl)(file_name=file_name, target_directory=target_directory)
30
+
31
+ @property
32
+ async def file_detector(self) -> Any:
33
+ return await self.sync_to_trio(sync_function=self._file_detector_get_impl)()
34
+
35
+ @file_detector.setter
36
+ async def file_detector(self, value: Any) -> None:
37
+ await self.sync_to_trio(sync_function=self._file_detector_set_impl)(value=value)
38
+
39
+ @asynccontextmanager
40
+ async def file_detector_context(self, file_detector_class: Any, *args: Any, **kwargs: Any) -> AsyncGenerator[Any, Any]:
41
+ async with self.sync_to_trio_context(context_manager_factory=self.driver.file_detector_context)(file_detector_class, *args, **kwargs) as file_detector:
42
+ yield file_detector
43
+
44
+ async def get_downloadable_files(self) -> List[str]:
45
+ return await self.sync_to_trio(sync_function=self._get_downloadable_files_impl)()
@@ -0,0 +1,60 @@
1
+ from osn_selenium.models import WindowRect
2
+ from osn_selenium.base_mixin import TrioThreadMixin
3
+ from typing import (
4
+ Any,
5
+ Dict,
6
+ Optional,
7
+ Union
8
+ )
9
+ from osn_selenium.flags.models.base import BrowserFlags
10
+ from selenium.webdriver.remote.remote_connection import RemoteConnection
11
+ from osn_selenium.webdrivers.unified.core.lifecycle import (
12
+ UnifiedCoreLifecycleMixin
13
+ )
14
+ from osn_selenium.abstract.webdriver.core.lifecycle import (
15
+ AbstractCoreLifecycleMixin
16
+ )
17
+
18
+
19
+ __all__ = ["CoreLifecycleMixin"]
20
+
21
+
22
+ class CoreLifecycleMixin(UnifiedCoreLifecycleMixin, TrioThreadMixin, AbstractCoreLifecycleMixin):
23
+ """
24
+ Mixin for managing the lifecycle of the Core WebDriver.
25
+
26
+ Handles the creation, startup, shutdown, and restarting processes of the
27
+ underlying browser instance, ensuring clean session management.
28
+ """
29
+
30
+ async def close_webdriver(self) -> None:
31
+ await self.sync_to_trio(sync_function=self._close_webdriver_impl)()
32
+
33
+ async def quit(self) -> None:
34
+ await self.sync_to_trio(sync_function=self._quit_impl)()
35
+
36
+ async def remote_connect_driver(self, command_executor: Union[str, RemoteConnection]) -> None:
37
+ await self.sync_to_trio(sync_function=self._remote_connect_driver_impl)(command_executor=command_executor)
38
+
39
+ async def restart_webdriver(
40
+ self,
41
+ flags: Optional[BrowserFlags] = None,
42
+ window_rect: Optional[WindowRect] = None,
43
+ ) -> None:
44
+ await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(flags=flags, window_rect=window_rect)
45
+
46
+ async def start_client(self) -> None:
47
+ await self.sync_to_trio(sync_function=self._start_client_impl)()
48
+
49
+ async def start_session(self, capabilities: Dict[str, Any]) -> None:
50
+ await self.sync_to_trio(sync_function=self._start_session_impl)(capabilities=capabilities)
51
+
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
+ async def stop_client(self) -> None:
60
+ await self.sync_to_trio(sync_function=self._stop_client_impl)()
@@ -0,0 +1,41 @@
1
+ from osn_selenium.base_mixin import TrioThreadMixin
2
+ from osn_selenium.webdrivers.unified.core.navigation import (
3
+ UnifiedCoreNavigationMixin
4
+ )
5
+ from osn_selenium.abstract.webdriver.core.navigation import (
6
+ AbstractCoreNavigationMixin
7
+ )
8
+
9
+
10
+ __all__ = ["CoreNavigationMixin"]
11
+
12
+
13
+ class CoreNavigationMixin(
14
+ UnifiedCoreNavigationMixin,
15
+ TrioThreadMixin,
16
+ AbstractCoreNavigationMixin
17
+ ):
18
+ """
19
+ Mixin controlling browser navigation for Core WebDrivers.
20
+
21
+ Includes standard navigation commands such as visiting URLs, history
22
+ traversal (back/forward), and page refreshing.
23
+ """
24
+
25
+ async def back(self) -> None:
26
+ await self.sync_to_trio(sync_function=self._back_impl)()
27
+
28
+ async def current_url(self) -> str:
29
+ return await self.sync_to_trio(sync_function=self._current_url_impl)()
30
+
31
+ async def forward(self) -> None:
32
+ await self.sync_to_trio(sync_function=self._forward_impl)()
33
+
34
+ async def get(self, url: str) -> None:
35
+ await self.sync_to_trio(sync_function=self._get_impl)(url=url)
36
+
37
+ async def refresh(self) -> None:
38
+ await self.sync_to_trio(sync_function=self._refresh_impl)()
39
+
40
+ async def title(self) -> str:
41
+ return await self.sync_to_trio(sync_function=self._title_impl)()
@@ -0,0 +1,59 @@
1
+ from typing import Any, List, Optional
2
+ from osn_selenium.base_mixin import TrioThreadMixin
3
+ from osn_selenium.instances.trio_threads.script import Script
4
+ from osn_selenium.instances.convert import (
5
+ get_trio_thread_instance_wrapper
6
+ )
7
+ from osn_selenium.webdrivers.unified.core.script import (
8
+ UnifiedCoreScriptMixin
9
+ )
10
+ from osn_selenium.abstract.webdriver.core.script import (
11
+ AbstractCoreScriptMixin
12
+ )
13
+ from osn_selenium.webdrivers._args_helpers import (
14
+ unwrap_args,
15
+ wrap_trio_thread_args
16
+ )
17
+
18
+
19
+ __all__ = ["CoreScriptMixin"]
20
+
21
+
22
+ class CoreScriptMixin(UnifiedCoreScriptMixin, TrioThreadMixin, AbstractCoreScriptMixin):
23
+ """
24
+ Mixin for JavaScript execution and management in Core WebDrivers.
25
+
26
+ Allows execution of synchronous and asynchronous JavaScript, as well as
27
+ pinning scripts for repeated use.
28
+ """
29
+
30
+ async def execute_async_script(self, script: str, *args: Any) -> Any:
31
+ unwrapped = unwrap_args(args=args)
32
+ result = await self.sync_to_trio(sync_function=self._execute_async_script_impl)(script, *unwrapped)
33
+
34
+ return wrap_trio_thread_args(args=result, lock=self._lock, limiter=self._capacity_limiter)
35
+
36
+ async def execute_script(self, script: str, *args: Any) -> Any:
37
+ unwrapped = unwrap_args(args=args)
38
+ result = await self.sync_to_trio(sync_function=self._execute_script_impl)(script, *unwrapped)
39
+
40
+ return wrap_trio_thread_args(args=result, lock=self._lock, limiter=self._capacity_limiter)
41
+
42
+ async def get_pinned_scripts(self) -> List[str]:
43
+ return await self.sync_to_trio(sync_function=self._get_pinned_scripts_impl)()
44
+
45
+ async def pin_script(self, script: str, script_key: Optional[Any] = None) -> Any:
46
+ return await self.sync_to_trio(sync_function=self._pin_script_impl)(script=script, script_key=script_key)
47
+
48
+ async def script(self) -> Script:
49
+ legacy = await self.sync_to_trio(sync_function=self._script_impl)()
50
+
51
+ return get_trio_thread_instance_wrapper(
52
+ wrapper_class=Script,
53
+ legacy_object=legacy,
54
+ lock=self._lock,
55
+ limiter=self._capacity_limiter,
56
+ )
57
+
58
+ async def unpin(self, script_key: Any) -> None:
59
+ await self.sync_to_trio(sync_function=self._unpin_impl)(script_key=script_key)
@@ -0,0 +1,36 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium.base_mixin import TrioThreadMixin
4
+ from osn_selenium.flags.models.base import BrowserFlags
5
+ from osn_selenium.webdrivers.unified.core.settings import (
6
+ UnifiedCoreSettingsMixin
7
+ )
8
+ from osn_selenium.abstract.webdriver.core.settings import (
9
+ AbstractCoreSettingsMixin
10
+ )
11
+
12
+
13
+ __all__ = ["CoreSettingsMixin"]
14
+
15
+
16
+ class CoreSettingsMixin(UnifiedCoreSettingsMixin, TrioThreadMixin, AbstractCoreSettingsMixin):
17
+ """
18
+ Mixin for configuring and updating settings of the Core WebDriver.
19
+
20
+ Provides methods to modify browser flags, window rectangles, and other
21
+ configuration parameters either before startup or during a reset.
22
+ """
23
+
24
+ async def reset_settings(
25
+ self,
26
+ flags: Optional[BrowserFlags] = None,
27
+ window_rect: Optional[WindowRect] = None,
28
+ ) -> None:
29
+ await self.sync_to_trio(sync_function=self._reset_settings_impl)(flags=flags, window_rect=window_rect)
30
+
31
+ async def update_settings(
32
+ self,
33
+ flags: Optional[BrowserFlags] = None,
34
+ window_rect: Optional[WindowRect] = None,
35
+ ) -> None:
36
+ await self.sync_to_trio(sync_function=self._update_settings_impl)(flags=flags, window_rect=window_rect)