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,88 @@
1
+ import trio
2
+ from osn_selenium.base_mixin import TrioThreadMixin
3
+ from typing import (
4
+ Any,
5
+ Callable,
6
+ TYPE_CHECKING,
7
+ cast
8
+ )
9
+ from osn_selenium.instances.unified.action_chains.base import UnifiedBaseMixin
10
+ from osn_selenium.abstract.instances.action_chains.base import AbstractBaseMixin
11
+ from selenium.webdriver.common.action_chains import (
12
+ ActionChains as legacyActionChains
13
+ )
14
+
15
+
16
+ __all__ = ["BaseMixin"]
17
+
18
+ if TYPE_CHECKING:
19
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
20
+
21
+
22
+ class BaseMixin(UnifiedBaseMixin, TrioThreadMixin, AbstractBaseMixin):
23
+ """
24
+ Base mixin class that bridges legacy Selenium actions with unified execution logic.
25
+ """
26
+
27
+ def __init__(
28
+ self,
29
+ selenium_action_chains: legacyActionChains,
30
+ execute_js_script_function: Callable[[str, Any], Any],
31
+ lock: trio.Lock,
32
+ limiter: trio.CapacityLimiter,
33
+ ):
34
+ """
35
+ Initializes an ActionChains instance from a legacy Selenium ActionChains object.
36
+
37
+ Args:
38
+ selenium_action_chains (legacyActionChains): The legacy Selenium action chain.
39
+ execute_js_script_function (Callable[[str, Any], Any]): The function used to execute JS.
40
+ lock (trio.Lock): A Trio Lock for synchronization.
41
+ limiter (trio.CapacityLimiter): A limiter to control thread pool concurrency.
42
+
43
+ Returns:
44
+ "ActionChains": The ActionChains instance.
45
+ """
46
+
47
+ UnifiedBaseMixin.__init__(
48
+ self,
49
+ selenium_action_chains=selenium_action_chains,
50
+ execute_js_script_function=execute_js_script_function,
51
+ )
52
+
53
+ TrioThreadMixin.__init__(self, lock=lock, limiter=limiter)
54
+
55
+ @classmethod
56
+ def from_legacy(
57
+ cls,
58
+ legacy_object: legacyActionChains,
59
+ execute_js_script_function: Callable[[str, Any], Any],
60
+ lock: trio.Lock,
61
+ limiter: trio.CapacityLimiter,
62
+ ) -> "ActionChains":
63
+ """
64
+ Creates an ActionChains instance from a legacy Selenium ActionChains object.
65
+
66
+ Args:
67
+ legacy_object (legacyActionChains): The legacy Selenium action chain.
68
+ execute_js_script_function (Callable[[str, Any], Any]): The function used to execute JS.
69
+ lock (trio.Lock): A Trio Lock for synchronization.
70
+ limiter (trio.CapacityLimiter): A limiter to control thread pool concurrency.
71
+
72
+ Returns:
73
+ "ActionChains": The ActionChains instance.
74
+ """
75
+
76
+ return cast(
77
+ "ActionChains",
78
+ cls(
79
+ selenium_action_chains=legacy_object,
80
+ execute_js_script_function=execute_js_script_function,
81
+ lock=lock,
82
+ limiter=limiter,
83
+ )
84
+ )
85
+
86
+ @property
87
+ def legacy(self) -> legacyActionChains:
88
+ return self._legacy_impl
@@ -0,0 +1,71 @@
1
+ from typing import (
2
+ Optional,
3
+ TYPE_CHECKING
4
+ )
5
+ from osn_selenium.instances.convert import get_legacy_instance
6
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
7
+ from osn_selenium.instances.trio_threads.action_chains.base import BaseMixin
8
+ from osn_selenium.instances.unified.action_chains.click import UnifiedClickMixin
9
+ from osn_selenium.abstract.instances.action_chains.click import AbstractClickMixin
10
+
11
+
12
+ __all__ = ["ClickMixin"]
13
+
14
+ if TYPE_CHECKING:
15
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
16
+
17
+
18
+ class ClickMixin(BaseMixin, UnifiedClickMixin, AbstractClickMixin):
19
+ """
20
+ Mixin class providing mouse click interaction methods.
21
+ """
22
+
23
+ async def click(self, on_element: Optional[WEB_ELEMENT_TYPEHINT] = None) -> "ActionChains":
24
+ action_chains = await self.sync_to_trio(sync_function=self._click_impl)(on_element=get_legacy_instance(instance=on_element))
25
+
26
+ return self.from_legacy(
27
+ legacy_object=action_chains,
28
+ execute_js_script_function=self._execute_js_script_function,
29
+ lock=self._lock,
30
+ limiter=self._capacity_limiter,
31
+ )
32
+
33
+ async def click_and_hold(self, on_element: Optional[WEB_ELEMENT_TYPEHINT] = None) -> "ActionChains":
34
+ action_chains = await self.sync_to_trio(sync_function=self._click_and_hold_impl)(on_element=get_legacy_instance(instance=on_element))
35
+
36
+ return self.from_legacy(
37
+ legacy_object=action_chains,
38
+ execute_js_script_function=self._execute_js_script_function,
39
+ lock=self._lock,
40
+ limiter=self._capacity_limiter,
41
+ )
42
+
43
+ async def context_click(self, on_element: Optional[WEB_ELEMENT_TYPEHINT] = None) -> "ActionChains":
44
+ action_chains = await self.sync_to_trio(sync_function=self._context_click_impl)(on_element=get_legacy_instance(instance=on_element))
45
+
46
+ return self.from_legacy(
47
+ legacy_object=action_chains,
48
+ execute_js_script_function=self._execute_js_script_function,
49
+ lock=self._lock,
50
+ limiter=self._capacity_limiter,
51
+ )
52
+
53
+ async def double_click(self, on_element: Optional[WEB_ELEMENT_TYPEHINT] = None) -> "ActionChains":
54
+ action_chains = await self.sync_to_trio(sync_function=self._double_click_impl)(on_element=get_legacy_instance(instance=on_element))
55
+
56
+ return self.from_legacy(
57
+ legacy_object=action_chains,
58
+ execute_js_script_function=self._execute_js_script_function,
59
+ lock=self._lock,
60
+ limiter=self._capacity_limiter,
61
+ )
62
+
63
+ async def release(self, on_element: Optional[WEB_ELEMENT_TYPEHINT] = None) -> "ActionChains":
64
+ action_chains = await self.sync_to_trio(sync_function=self._release_impl)(on_element=get_legacy_instance(instance=on_element))
65
+
66
+ return self.from_legacy(
67
+ legacy_object=action_chains,
68
+ execute_js_script_function=self._execute_js_script_function,
69
+ lock=self._lock,
70
+ limiter=self._capacity_limiter,
71
+ )
@@ -0,0 +1,49 @@
1
+ from typing import TYPE_CHECKING
2
+ from osn_selenium.instances.convert import get_legacy_instance
3
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
4
+ from osn_selenium.instances.trio_threads.action_chains.base import BaseMixin
5
+ from osn_selenium.instances.unified.action_chains.drag_and_drop import (
6
+ UnifiedDragAndDropMixin
7
+ )
8
+ from osn_selenium.abstract.instances.action_chains.drag_and_drop import (
9
+ AbstractDragAndDropMixin
10
+ )
11
+
12
+
13
+ __all__ = ["DragAndDropMixin"]
14
+
15
+ if TYPE_CHECKING:
16
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
17
+
18
+
19
+ class DragAndDropMixin(BaseMixin, UnifiedDragAndDropMixin, AbstractDragAndDropMixin):
20
+ """
21
+ Mixin class providing drag and drop interaction methods.
22
+ """
23
+
24
+ async def drag_and_drop(self, source: WEB_ELEMENT_TYPEHINT, target: WEB_ELEMENT_TYPEHINT) -> "ActionChains":
25
+ action_chains = await self.sync_to_trio(sync_function=self._drag_and_drop_impl)(
26
+ source=get_legacy_instance(instance=source),
27
+ target=get_legacy_instance(instance=target)
28
+ )
29
+
30
+ return self.from_legacy(
31
+ legacy_object=action_chains,
32
+ execute_js_script_function=self._execute_js_script_function,
33
+ lock=self._lock,
34
+ limiter=self._capacity_limiter,
35
+ )
36
+
37
+ async def drag_and_drop_by_offset(self, source: WEB_ELEMENT_TYPEHINT, xoffset: int, yoffset: int) -> "ActionChains":
38
+ action_chains = await self.sync_to_trio(sync_function=self._drag_and_drop_by_offset_impl)(
39
+ source=get_legacy_instance(instance=source),
40
+ xoffset=xoffset,
41
+ yoffset=yoffset
42
+ )
43
+
44
+ return self.from_legacy(
45
+ legacy_object=action_chains,
46
+ execute_js_script_function=self._execute_js_script_function,
47
+ lock=self._lock,
48
+ limiter=self._capacity_limiter,
49
+ )
@@ -0,0 +1,41 @@
1
+ from typing import TYPE_CHECKING
2
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
3
+ from osn_selenium.instances.trio_threads.action_chains.base import BaseMixin
4
+ from osn_selenium.instances.unified.action_chains.hm_keyboard import (
5
+ UnifiedHMKeyboardMixin
6
+ )
7
+ from osn_selenium.abstract.instances.action_chains.hm_keyboard import (
8
+ AbstractHMKeyboardMixin
9
+ )
10
+
11
+
12
+ __all__ = ["HMKeyboardMixin"]
13
+
14
+ if TYPE_CHECKING:
15
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
16
+
17
+
18
+ class HMKeyboardMixin(BaseMixin, UnifiedHMKeyboardMixin, AbstractHMKeyboardMixin):
19
+ """
20
+ Mixin class providing human-like keyboard interaction methods.
21
+ """
22
+
23
+ async def hm_send_keys(self, text: str) -> "ActionChains":
24
+ action_chains = await self.sync_to_trio(sync_function=self._hm_send_keys_impl)(text=text)
25
+
26
+ return self.from_legacy(
27
+ legacy_object=action_chains,
28
+ execute_js_script_function=self._execute_js_script_function,
29
+ lock=self._lock,
30
+ limiter=self._capacity_limiter,
31
+ )
32
+
33
+ async def hm_send_keys_to_element(self, element: WEB_ELEMENT_TYPEHINT, text: str) -> "ActionChains":
34
+ action_chains = await self.sync_to_trio(sync_function=self._hm_send_keys_to_element_impl)(element=element, text=text)
35
+
36
+ return self.from_legacy(
37
+ legacy_object=action_chains,
38
+ execute_js_script_function=self._execute_js_script_function,
39
+ lock=self._lock,
40
+ limiter=self._capacity_limiter,
41
+ )
@@ -0,0 +1,91 @@
1
+ from osn_selenium.models import Point
2
+ from typing import TYPE_CHECKING, Tuple
3
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
4
+ from osn_selenium.instances.trio_threads.action_chains.base import BaseMixin
5
+ from osn_selenium.instances.unified.action_chains.hm_move import UnifiedHMMoveMixin
6
+ from osn_selenium.abstract.instances.action_chains.hm_move import AbstractHMMoveMixin
7
+
8
+
9
+ __all__ = ["HMMoveMixin"]
10
+
11
+ if TYPE_CHECKING:
12
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
13
+
14
+
15
+ class HMMoveMixin(BaseMixin, UnifiedHMMoveMixin, AbstractHMMoveMixin):
16
+ """
17
+ Mixin class providing human-like mouse movement interaction methods.
18
+ """
19
+
20
+ async def hm_move(self, start_position: Point, end_position: Point) -> "ActionChains":
21
+ action_chains = await self.sync_to_trio(sync_function=self._hm_move_impl)(start_position=start_position, end_position=end_position)
22
+
23
+ return self.from_legacy(
24
+ legacy_object=action_chains,
25
+ execute_js_script_function=self._execute_js_script_function,
26
+ lock=self._lock,
27
+ limiter=self._capacity_limiter,
28
+ )
29
+
30
+ async def hm_move_by_offset(self, start_position: Point, xoffset: int, yoffset: int) -> Tuple["ActionChains", Point]:
31
+ action_chains, point = await self.sync_to_trio(sync_function=self._hm_move_by_offset_impl)(start_position=start_position, xoffset=xoffset, yoffset=yoffset)
32
+
33
+ return (
34
+ self.from_legacy(
35
+ legacy_object=action_chains,
36
+ execute_js_script_function=self._execute_js_script_function,
37
+ lock=self._lock,
38
+ limiter=self._capacity_limiter,
39
+ ),
40
+ point,
41
+ )
42
+
43
+ async def hm_move_to_element(self, start_position: Point, element: WEB_ELEMENT_TYPEHINT) -> Tuple["ActionChains", Point]:
44
+ action_chains, point = await self.sync_to_trio(sync_function=self._hm_move_to_element_impl)(start_position=start_position, element=element)
45
+
46
+ return (
47
+ self.from_legacy(
48
+ legacy_object=action_chains,
49
+ execute_js_script_function=self._execute_js_script_function,
50
+ lock=self._lock,
51
+ limiter=self._capacity_limiter,
52
+ ),
53
+ point,
54
+ )
55
+
56
+ async def hm_move_to_element_with_offset(
57
+ self,
58
+ start_position: Point,
59
+ element: WEB_ELEMENT_TYPEHINT,
60
+ xoffset: int,
61
+ yoffset: int
62
+ ) -> Tuple["ActionChains", Point]:
63
+ action_chains, point = await self.sync_to_trio(sync_function=self._hm_move_to_element_with_offset_impl)(
64
+ start_position=start_position,
65
+ element=element,
66
+ xoffset=xoffset,
67
+ yoffset=yoffset,
68
+ )
69
+
70
+ return (
71
+ self.from_legacy(
72
+ legacy_object=action_chains,
73
+ execute_js_script_function=self._execute_js_script_function,
74
+ lock=self._lock,
75
+ limiter=self._capacity_limiter,
76
+ ),
77
+ point,
78
+ )
79
+
80
+ async def hm_move_to_element_with_random_offset(self, start_position: Point, element: WEB_ELEMENT_TYPEHINT) -> Tuple["ActionChains", Point]:
81
+ action_chains, point = await self.sync_to_trio(sync_function=self._hm_move_to_element_with_random_offset_impl)(start_position=start_position, element=element)
82
+
83
+ return (
84
+ self.from_legacy(
85
+ legacy_object=action_chains,
86
+ execute_js_script_function=self._execute_js_script_function,
87
+ lock=self._lock,
88
+ limiter=self._capacity_limiter,
89
+ ),
90
+ point,
91
+ )
@@ -0,0 +1,66 @@
1
+ from typing import (
2
+ Optional,
3
+ TYPE_CHECKING
4
+ )
5
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
6
+ from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
7
+ from osn_selenium.instances.trio_threads.action_chains.base import BaseMixin
8
+ from osn_selenium.instances.unified.action_chains.hm_scroll import UnifiedHMScrollMixin
9
+ from osn_selenium.abstract.instances.action_chains.hm_scroll import (
10
+ AbstractHMScrollMixin
11
+ )
12
+
13
+
14
+ __all__ = ["HMScrollMixin"]
15
+
16
+ if TYPE_CHECKING:
17
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
18
+
19
+
20
+ class HMScrollMixin(BaseMixin, UnifiedHMScrollMixin, AbstractHMScrollMixin):
21
+ """
22
+ Mixin class providing human-like scroll interaction methods.
23
+ """
24
+
25
+ async def hm_scroll_by_amount(self, delta_x: int, delta_y: int) -> "ActionChains":
26
+ action_chains = await self.sync_to_trio(sync_function=self._hm_scroll_by_amount_impl)(delta_x=delta_x, delta_y=delta_y)
27
+
28
+ return self.from_legacy(
29
+ legacy_object=action_chains,
30
+ execute_js_script_function=self._execute_js_script_function,
31
+ lock=self._lock,
32
+ limiter=self._capacity_limiter,
33
+ )
34
+
35
+ async def hm_scroll_from_origin(self, delta_x: int, delta_y: int, origin: Optional[ScrollOrigin] = None) -> "ActionChains":
36
+ action_chains = await self.sync_to_trio(sync_function=self._hm_scroll_from_origin_impl)(delta_x=delta_x, delta_y=delta_y, origin=origin)
37
+
38
+ return self.from_legacy(
39
+ legacy_object=action_chains,
40
+ execute_js_script_function=self._execute_js_script_function,
41
+ lock=self._lock,
42
+ limiter=self._capacity_limiter,
43
+ )
44
+
45
+ async def hm_scroll_to_element(
46
+ self,
47
+ element: WEB_ELEMENT_TYPEHINT,
48
+ additional_lower_y_offset: int = 0,
49
+ additional_upper_y_offset: int = 0,
50
+ additional_right_x_offset: int = 0,
51
+ additional_left_x_offset: int = 0,
52
+ ) -> "ActionChains":
53
+ action_chains = await self.sync_to_trio(sync_function=self._hm_scroll_to_element_impl)(
54
+ element=element,
55
+ additional_lower_y_offset=additional_lower_y_offset,
56
+ additional_upper_y_offset=additional_upper_y_offset,
57
+ additional_right_x_offset=additional_right_x_offset,
58
+ additional_left_x_offset=additional_left_x_offset,
59
+ )
60
+
61
+ return self.from_legacy(
62
+ legacy_object=action_chains,
63
+ execute_js_script_function=self._execute_js_script_function,
64
+ lock=self._lock,
65
+ limiter=self._capacity_limiter,
66
+ )
@@ -0,0 +1,63 @@
1
+ from typing import (
2
+ Optional,
3
+ TYPE_CHECKING
4
+ )
5
+ from osn_selenium.instances.convert import get_legacy_instance
6
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
7
+ from osn_selenium.instances.trio_threads.action_chains.base import BaseMixin
8
+ from osn_selenium.instances.unified.action_chains.keyboard import UnifiedKeyboardMixin
9
+ from osn_selenium.abstract.instances.action_chains.keyboard import (
10
+ AbstractKeyboardMixin
11
+ )
12
+
13
+
14
+ __all__ = ["KeyboardMixin"]
15
+
16
+ if TYPE_CHECKING:
17
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
18
+
19
+
20
+ class KeyboardMixin(BaseMixin, UnifiedKeyboardMixin, AbstractKeyboardMixin):
21
+ """
22
+ Mixin class providing keyboard interaction methods.
23
+ """
24
+
25
+ async def key_down(self, value: str, element: Optional[WEB_ELEMENT_TYPEHINT] = None) -> "ActionChains":
26
+ action_chains = await self.sync_to_trio(sync_function=self._key_down_impl)(value=value, element=get_legacy_instance(instance=element))
27
+
28
+ return self.from_legacy(
29
+ legacy_object=action_chains,
30
+ execute_js_script_function=self._execute_js_script_function,
31
+ lock=self._lock,
32
+ limiter=self._capacity_limiter,
33
+ )
34
+
35
+ async def key_up(self, value: str, element: Optional[WEB_ELEMENT_TYPEHINT] = None) -> "ActionChains":
36
+ action_chains = await self.sync_to_trio(sync_function=self._key_up_impl)(value=value, element=get_legacy_instance(instance=element))
37
+
38
+ return self.from_legacy(
39
+ legacy_object=action_chains,
40
+ execute_js_script_function=self._execute_js_script_function,
41
+ lock=self._lock,
42
+ limiter=self._capacity_limiter,
43
+ )
44
+
45
+ async def send_keys(self, *keys_to_send: str) -> "ActionChains":
46
+ action_chains = await self.sync_to_trio(sync_function=self._send_keys_impl)(*keys_to_send)
47
+
48
+ return self.from_legacy(
49
+ legacy_object=action_chains,
50
+ execute_js_script_function=self._execute_js_script_function,
51
+ lock=self._lock,
52
+ limiter=self._capacity_limiter,
53
+ )
54
+
55
+ async def send_keys_to_element(self, element: WEB_ELEMENT_TYPEHINT, *keys_to_send: str) -> "ActionChains":
56
+ action_chains = await self.sync_to_trio(sync_function=self._send_keys_to_element_impl)(get_legacy_instance(instance=element), *keys_to_send)
57
+
58
+ return self.from_legacy(
59
+ legacy_object=action_chains,
60
+ execute_js_script_function=self._execute_js_script_function,
61
+ lock=self._lock,
62
+ limiter=self._capacity_limiter,
63
+ )
@@ -0,0 +1,52 @@
1
+ from typing import TYPE_CHECKING
2
+ from osn_selenium.instances.convert import get_legacy_instance
3
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
4
+ from osn_selenium.instances.trio_threads.action_chains.base import BaseMixin
5
+ from osn_selenium.instances.unified.action_chains.move import UnifiedMoveMixin
6
+ from osn_selenium.abstract.instances.action_chains.move import AbstractMoveMixin
7
+
8
+
9
+ __all__ = ["MoveMixin"]
10
+
11
+ if TYPE_CHECKING:
12
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
13
+
14
+
15
+ class MoveMixin(BaseMixin, UnifiedMoveMixin, AbstractMoveMixin):
16
+ """
17
+ Mixin class providing mouse movement interaction methods.
18
+ """
19
+
20
+ async def move_by_offset(self, xoffset: int, yoffset: int) -> "ActionChains":
21
+ action_chains = await self.sync_to_trio(sync_function=self._move_by_offset_impl)(xoffset=xoffset, yoffset=yoffset)
22
+
23
+ return self.from_legacy(
24
+ legacy_object=action_chains,
25
+ execute_js_script_function=self._execute_js_script_function,
26
+ lock=self._lock,
27
+ limiter=self._capacity_limiter,
28
+ )
29
+
30
+ async def move_to_element(self, to_element: WEB_ELEMENT_TYPEHINT) -> "ActionChains":
31
+ action_chains = await self.sync_to_trio(sync_function=self._move_to_element_impl)(to_element=get_legacy_instance(instance=to_element))
32
+
33
+ return self.from_legacy(
34
+ legacy_object=action_chains,
35
+ execute_js_script_function=self._execute_js_script_function,
36
+ lock=self._lock,
37
+ limiter=self._capacity_limiter,
38
+ )
39
+
40
+ async def move_to_element_with_offset(self, to_element: WEB_ELEMENT_TYPEHINT, xoffset: int, yoffset: int) -> "ActionChains":
41
+ action_chains = await self.sync_to_trio(sync_function=self._move_to_element_with_offset_impl)(
42
+ to_element=get_legacy_instance(instance=to_element),
43
+ xoffset=xoffset,
44
+ yoffset=yoffset,
45
+ )
46
+
47
+ return self.from_legacy(
48
+ legacy_object=action_chains,
49
+ execute_js_script_function=self._execute_js_script_function,
50
+ lock=self._lock,
51
+ limiter=self._capacity_limiter,
52
+ )
@@ -0,0 +1,49 @@
1
+ from typing import TYPE_CHECKING
2
+ from osn_selenium.instances.convert import get_legacy_instance
3
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
4
+ from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
5
+ from osn_selenium.instances.trio_threads.action_chains.base import BaseMixin
6
+ from osn_selenium.instances.unified.action_chains.scroll import UnifiedScrollMixin
7
+ from osn_selenium.abstract.instances.action_chains.scroll import AbstractScrollMixin
8
+
9
+
10
+ __all__ = ["ScrollMixin"]
11
+
12
+ if TYPE_CHECKING:
13
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
14
+
15
+
16
+ class ScrollMixin(BaseMixin, UnifiedScrollMixin, AbstractScrollMixin):
17
+ """
18
+ Mixin class providing scroll and wheel interaction methods.
19
+ """
20
+
21
+ async def scroll_by_amount(self, delta_x: int, delta_y: int) -> "ActionChains":
22
+ action_chains = await self.sync_to_trio(sync_function=self._scroll_by_amount_impl)(delta_x=delta_x, delta_y=delta_y)
23
+
24
+ return self.from_legacy(
25
+ legacy_object=action_chains,
26
+ execute_js_script_function=self._execute_js_script_function,
27
+ lock=self._lock,
28
+ limiter=self._capacity_limiter,
29
+ )
30
+
31
+ async def scroll_from_origin(self, scroll_origin: ScrollOrigin, delta_x: int, delta_y: int) -> "ActionChains":
32
+ action_chains = await self.sync_to_trio(sync_function=self._scroll_from_origin_impl)(scroll_origin=scroll_origin, delta_x=delta_x, delta_y=delta_y)
33
+
34
+ return self.from_legacy(
35
+ legacy_object=action_chains,
36
+ execute_js_script_function=self._execute_js_script_function,
37
+ lock=self._lock,
38
+ limiter=self._capacity_limiter,
39
+ )
40
+
41
+ async def scroll_to_element(self, element: WEB_ELEMENT_TYPEHINT) -> "ActionChains":
42
+ action_chains = await self.sync_to_trio(sync_function=self._scroll_to_element_impl)(element=get_legacy_instance(instance=element))
43
+
44
+ return self.from_legacy(
45
+ legacy_object=action_chains,
46
+ execute_js_script_function=self._execute_js_script_function,
47
+ lock=self._lock,
48
+ limiter=self._capacity_limiter,
49
+ )
@@ -0,0 +1,32 @@
1
+ from typing import TYPE_CHECKING, Union
2
+ from osn_selenium.instances.trio_threads.action_chains.base import BaseMixin
3
+ from osn_selenium.instances.unified.action_chains.utils import UnifiedUtilsMixin
4
+ from osn_selenium.abstract.instances.action_chains.utils import AbstractUtilsMixin
5
+
6
+
7
+ __all__ = ["UtilsMixin"]
8
+
9
+ if TYPE_CHECKING:
10
+ from osn_selenium.instances.trio_threads.action_chains import ActionChains
11
+
12
+
13
+ class UtilsMixin(BaseMixin, UnifiedUtilsMixin, AbstractUtilsMixin):
14
+ """
15
+ Mixin class providing utility methods for action chains.
16
+ """
17
+
18
+ async def pause(self, seconds: Union[float, int]) -> "ActionChains":
19
+ action_chains = await self.sync_to_trio(sync_function=self._pause_impl)(seconds=seconds)
20
+
21
+ return self.from_legacy(
22
+ legacy_object=action_chains,
23
+ execute_js_script_function=self._execute_js_script_function,
24
+ lock=self._lock,
25
+ limiter=self._capacity_limiter,
26
+ )
27
+
28
+ async def perform(self) -> None:
29
+ await self.sync_to_trio(sync_function=self._perform_impl)()
30
+
31
+ async def reset_actions(self) -> None:
32
+ await self.sync_to_trio(sync_function=self._reset_actions_impl)()