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,148 @@
1
+ from typing import Union
2
+ from osn_selenium.abstract.instances.alert import AbstractAlert
3
+ from osn_selenium.abstract.instances.fedcm import AbstractFedCM
4
+ from selenium.webdriver.common.alert import Alert as legacyAlert
5
+ from selenium.webdriver.remote.fedcm import FedCM as legacyFedCM
6
+ from osn_selenium.abstract.instances.dialog import AbstractDialog
7
+ from osn_selenium.abstract.instances.mobile import AbstractMobile
8
+ from osn_selenium.abstract.instances.script import AbstractScript
9
+ from osn_selenium.abstract.instances.browser import AbstractBrowser
10
+ from osn_selenium.abstract.instances.network import AbstractNetwork
11
+ from osn_selenium.abstract.instances.storage import AbstractStorage
12
+ from osn_selenium.abstract.instances.switch_to import AbstractSwitchTo
13
+ from selenium.webdriver.remote.mobile import (
14
+ Mobile as legacyMobile
15
+ )
16
+ from osn_selenium.abstract.instances.shadow_root import AbstractShadowRoot
17
+ from osn_selenium.abstract.instances.web_element import AbstractWebElement
18
+ from osn_selenium.abstract.instances.permissions import AbstractPermissions
19
+ from selenium.webdriver.common.bidi.script import (
20
+ Script as legacyScript
21
+ )
22
+ from selenium.webdriver.common.fedcm.dialog import (
23
+ Dialog as legacyDialog
24
+ )
25
+ from osn_selenium.abstract.instances.action_chains import AbstractActionChains
26
+ from osn_selenium.abstract.instances.web_extension import AbstractWebExtension
27
+ from selenium.webdriver.remote.switch_to import (
28
+ SwitchTo as legacySwitchTo
29
+ )
30
+ from selenium.webdriver.common.bidi.browser import (
31
+ Browser as legacyBrowser
32
+ )
33
+ from selenium.webdriver.common.bidi.network import (
34
+ Network as legacyNetwork
35
+ )
36
+ from selenium.webdriver.common.bidi.storage import (
37
+ Storage as legacyStorage
38
+ )
39
+ from selenium.webdriver.remote.webdriver import (
40
+ WebDriver as legacyWebDriver
41
+ )
42
+ from selenium.webdriver.remote.shadowroot import (
43
+ ShadowRoot as legacyShadowRoot
44
+ )
45
+ from selenium.webdriver.remote.webelement import (
46
+ WebElement as legacyWebElement
47
+ )
48
+ from selenium.webdriver.support.wait import (
49
+ WebDriverWait as legacyWebDriverWait
50
+ )
51
+ from osn_selenium.abstract.instances.web_driver_wait import (
52
+ AbstractWebDriverWait
53
+ )
54
+ from osn_selenium.abstract.instances.browsing_context import (
55
+ AbstractBrowsingContext
56
+ )
57
+ from selenium.webdriver.common.action_chains import (
58
+ ActionChains as legacyActionChains
59
+ )
60
+ from selenium.webdriver.common.bidi.permissions import (
61
+ Permissions as legacyPermissions
62
+ )
63
+ from selenium.webdriver.common.bidi.webextension import (
64
+ WebExtension as legacyWebExtension
65
+ )
66
+ from selenium.webdriver.common.bidi.browsing_context import (
67
+ BrowsingContext as legacyBrowsingContext
68
+ )
69
+
70
+
71
+ __all__ = [
72
+ "ACTION_CHAINS_TYPEHINT",
73
+ "ALERT_TYPEHINT",
74
+ "ANY_ABSTRACT_INSTANCE_TYPEHINT",
75
+ "ANY_LEGACY_INSTANCE_TYPEHINT",
76
+ "BROWSER_TYPEHINT",
77
+ "BROWSING_CONTEXT_TYPEHINT",
78
+ "DIALOG_TYPEHINT",
79
+ "FEDCM_TYPEHINT",
80
+ "MOBILE_TYPEHINT",
81
+ "NETWORK_TYPEHINT",
82
+ "PERMISSIONS_TYPEHINT",
83
+ "SCRIPT_TYPEHINT",
84
+ "SHADOW_ROOT_TYPEHINT",
85
+ "STORAGE_TYPEHINT",
86
+ "SWITCH_TO_TYPEHINT",
87
+ "WEB_DRIVER_WAIT_TYPEHINT",
88
+ "WEB_ELEMENT_TYPEHINT",
89
+ "WEB_EXTENSION_TYPEHINT",
90
+ "WebDriverWaitInputType"
91
+ ]
92
+
93
+ ACTION_CHAINS_TYPEHINT = Union[AbstractActionChains, legacyActionChains]
94
+ ALERT_TYPEHINT = Union[AbstractAlert, legacyAlert]
95
+ BROWSER_TYPEHINT = Union[AbstractBrowser, legacyBrowser]
96
+ BROWSING_CONTEXT_TYPEHINT = Union[AbstractBrowsingContext, legacyBrowsingContext]
97
+ DIALOG_TYPEHINT = Union[AbstractDialog, legacyDialog]
98
+ FEDCM_TYPEHINT = Union[AbstractFedCM, legacyFedCM]
99
+ MOBILE_TYPEHINT = Union[AbstractMobile, legacyMobile]
100
+ NETWORK_TYPEHINT = Union[AbstractNetwork, legacyNetwork]
101
+ PERMISSIONS_TYPEHINT = Union[AbstractPermissions, legacyPermissions]
102
+ SCRIPT_TYPEHINT = Union[AbstractScript, legacyScript]
103
+ SHADOW_ROOT_TYPEHINT = Union[AbstractShadowRoot, legacyShadowRoot]
104
+ STORAGE_TYPEHINT = Union[AbstractStorage, legacyStorage]
105
+ SWITCH_TO_TYPEHINT = Union[AbstractSwitchTo, legacySwitchTo]
106
+ WEB_DRIVER_WAIT_TYPEHINT = Union[AbstractWebDriverWait, legacyWebDriverWait]
107
+ WEB_ELEMENT_TYPEHINT = Union[AbstractWebElement, legacyWebElement]
108
+ WEB_EXTENSION_TYPEHINT = Union[AbstractWebExtension, legacyWebExtension]
109
+
110
+ ANY_ABSTRACT_INSTANCE_TYPEHINT = Union[
111
+ AbstractAlert,
112
+ AbstractFedCM,
113
+ AbstractWebElement,
114
+ AbstractActionChains,
115
+ AbstractBrowser,
116
+ AbstractBrowsingContext,
117
+ AbstractDialog,
118
+ AbstractMobile,
119
+ AbstractNetwork,
120
+ AbstractStorage,
121
+ AbstractSwitchTo,
122
+ AbstractScript,
123
+ AbstractShadowRoot,
124
+ AbstractPermissions,
125
+ AbstractWebExtension,
126
+ AbstractWebDriverWait,
127
+ ]
128
+
129
+ ANY_LEGACY_INSTANCE_TYPEHINT = Union[
130
+ legacyAlert,
131
+ legacyFedCM,
132
+ legacyWebElement,
133
+ legacyActionChains,
134
+ legacyBrowser,
135
+ legacyBrowsingContext,
136
+ legacyDialog,
137
+ legacyMobile,
138
+ legacyNetwork,
139
+ legacyStorage,
140
+ legacySwitchTo,
141
+ legacyScript,
142
+ legacyShadowRoot,
143
+ legacyPermissions,
144
+ legacyWebExtension,
145
+ legacyWebDriverWait,
146
+ ]
147
+
148
+ WebDriverWaitInputType = Union[legacyWebElement, legacyWebDriver]
@@ -0,0 +1,143 @@
1
+ from osn_selenium.models import Point
2
+
3
+
4
+ __all__ = [
5
+ "MoveOffset",
6
+ "MovePart",
7
+ "MoveStep",
8
+ "ScrollDelta",
9
+ "ScrollPart",
10
+ "TextInputPart"
11
+ ]
12
+
13
+
14
+ class TextInputPart:
15
+ """
16
+ Represents a segment of text input with an associated duration.
17
+
18
+ Attributes:
19
+ text (str): The chunk of text for this part.
20
+ duration (int): Duration (milliseconds) associated with this part.
21
+ """
22
+
23
+ def __init__(self, text: str, duration: int):
24
+ self.text: str = text
25
+ self.duration: int = duration
26
+
27
+ def __repr__(self) -> str:
28
+ return self.__str__()
29
+
30
+ def __str__(self) -> str:
31
+ return f"TextInputPart(text={self.text}, duration={self.duration})"
32
+
33
+
34
+ class ScrollDelta:
35
+ """
36
+ Represents the change in scroll position (dx, dy).
37
+
38
+ Attributes:
39
+ x (int): Horizontal scroll amount.
40
+ y (int): Vertical scroll amount.
41
+ """
42
+
43
+ def __init__(self, x: int, y: int):
44
+ self.x: int = x
45
+ self.y: int = y
46
+
47
+ def __repr__(self) -> str:
48
+ return self.__str__()
49
+
50
+ def __str__(self) -> str:
51
+ return f"ScrollDelta(x={self.x}, y={self.y})"
52
+
53
+
54
+ class ScrollPart:
55
+ """
56
+ Represents a segment of a simulated scroll action.
57
+
58
+ Attributes:
59
+ point (Point): Coordinate point before this scroll segment.
60
+ delta (ScrollDelta): Scroll amount (dx, dy) for this segment.
61
+ duration (int): Duration (milliseconds) for this scroll segment.
62
+ """
63
+
64
+ def __init__(self, point: Point, delta: ScrollDelta, duration: int):
65
+ self.point: Point = point
66
+ self.delta: ScrollDelta = delta
67
+ self.duration: int = duration
68
+
69
+ def __repr__(self) -> str:
70
+ return self.__str__()
71
+
72
+ def __str__(self) -> str:
73
+ return (
74
+ f"ScrollPart(point={self.point}, delta={self.delta}, duration={self.duration})"
75
+ )
76
+
77
+
78
+ class MoveStep:
79
+ """
80
+ Internal helper class representing a step in a movement calculation.
81
+
82
+ Attributes:
83
+ amplitude_x (int): The horizontal component or amplitude of this step.
84
+ amplitude_y (int): The vertical component or amplitude of this step.
85
+ index (int): An index identifying this step's position in a sequence.
86
+ """
87
+
88
+ def __init__(self, amplitude_x: int, amplitude_y: int, index: int):
89
+ self.amplitude_x: int = amplitude_x
90
+ self.amplitude_y: int = amplitude_y
91
+ self.index: int = index
92
+
93
+ def __repr__(self) -> str:
94
+ return self.__str__()
95
+
96
+ def __str__(self) -> str:
97
+ return (
98
+ f"MoveStep(amplitude_x={self.amplitude_x}, amplitude_y={self.amplitude_y})"
99
+ )
100
+
101
+
102
+ class MoveOffset:
103
+ """
104
+ Represents a 2D offset or displacement (dx, dy).
105
+
106
+ Attributes:
107
+ x (int): Horizontal offset component.
108
+ y (int): Vertical offset component.
109
+ """
110
+
111
+ def __init__(self, x: int, y: int):
112
+ self.x: int = x
113
+ self.y: int = y
114
+
115
+ def __repr__(self) -> str:
116
+ return self.__str__()
117
+
118
+ def __str__(self) -> str:
119
+ return f"MoveOffset(x={self.x}, y={self.y})"
120
+
121
+
122
+ class MovePart:
123
+ """
124
+ Represents a segment of a simulated mouse movement.
125
+
126
+ Attributes:
127
+ point (Point): Target coordinate point.
128
+ offset (MoveOffset): Offset (dx, dy) for this segment.
129
+ duration (int): Duration (milliseconds) for this movement segment.
130
+ """
131
+
132
+ def __init__(self, point: Point, offset: MoveOffset, duration: int):
133
+ self.point: Point = point
134
+ self.offset: MoveOffset = offset
135
+ self.duration: int = duration
136
+
137
+ def __repr__(self) -> str:
138
+ return self.__str__()
139
+
140
+ def __str__(self) -> str:
141
+ return (
142
+ f"MovePart(point={self.point}, offset={self.offset}, duration={self.duration})"
143
+ )
@@ -0,0 +1,287 @@
1
+ import trio
2
+ from selenium.webdriver.common.alert import Alert as legacyAlert
3
+ from selenium.webdriver.remote.fedcm import FedCM as legacyFedCM
4
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
5
+ from selenium.webdriver.remote.mobile import (
6
+ Mobile as legacyMobile
7
+ )
8
+ from osn_selenium.exceptions.protocol import (
9
+ ProtocolComplianceError
10
+ )
11
+ from typing import (
12
+ Any,
13
+ Optional,
14
+ Type,
15
+ TypeVar,
16
+ Union,
17
+ overload
18
+ )
19
+ from selenium.webdriver.common.bidi.script import (
20
+ Script as legacyScript
21
+ )
22
+ from selenium.webdriver.common.fedcm.dialog import (
23
+ Dialog as legacyDialog
24
+ )
25
+ from selenium.webdriver.remote.switch_to import (
26
+ SwitchTo as legacySwitchTo
27
+ )
28
+ from selenium.webdriver.common.bidi.browser import (
29
+ Browser as legacyBrowser
30
+ )
31
+ from selenium.webdriver.common.bidi.network import (
32
+ Network as legacyNetwork
33
+ )
34
+ from selenium.webdriver.common.bidi.storage import (
35
+ Storage as legacyStorage
36
+ )
37
+ from selenium.webdriver.remote.shadowroot import (
38
+ ShadowRoot as legacyShadowRoot
39
+ )
40
+ from selenium.webdriver.remote.webelement import (
41
+ WebElement as legacyWebElement
42
+ )
43
+ from selenium.webdriver.support.wait import (
44
+ WebDriverWait as legacyWebDriverWait
45
+ )
46
+ from selenium.webdriver.common.action_chains import (
47
+ ActionChains as legacyActionChains
48
+ )
49
+ from selenium.webdriver.common.bidi.permissions import (
50
+ Permissions as legacyPermissions
51
+ )
52
+ from selenium.webdriver.common.bidi.webextension import (
53
+ WebExtension as legacyWebExtension
54
+ )
55
+ from osn_selenium.instances.protocols import (
56
+ SyncInstanceWrapper,
57
+ TrioThreadInstanceWrapper
58
+ )
59
+ from selenium.webdriver.common.bidi.browsing_context import (
60
+ BrowsingContext as legacyBrowsingContext
61
+ )
62
+ from osn_selenium.instances._typehints import (
63
+ ACTION_CHAINS_TYPEHINT,
64
+ ALERT_TYPEHINT,
65
+ ANY_ABSTRACT_INSTANCE_TYPEHINT,
66
+ ANY_LEGACY_INSTANCE_TYPEHINT,
67
+ BROWSER_TYPEHINT,
68
+ BROWSING_CONTEXT_TYPEHINT,
69
+ DIALOG_TYPEHINT,
70
+ FEDCM_TYPEHINT,
71
+ MOBILE_TYPEHINT,
72
+ NETWORK_TYPEHINT,
73
+ PERMISSIONS_TYPEHINT,
74
+ SCRIPT_TYPEHINT,
75
+ SHADOW_ROOT_TYPEHINT,
76
+ STORAGE_TYPEHINT,
77
+ SWITCH_TO_TYPEHINT,
78
+ WEB_DRIVER_WAIT_TYPEHINT,
79
+ WEB_ELEMENT_TYPEHINT,
80
+ WEB_EXTENSION_TYPEHINT
81
+ )
82
+
83
+
84
+ __all__ = [
85
+ "get_legacy_frame_reference",
86
+ "get_legacy_instance",
87
+ "get_sync_instance_wrapper",
88
+ "get_trio_thread_instance_wrapper"
89
+ ]
90
+
91
+ _SYNC_WRAPPER_TYPE = TypeVar("_SYNC_WRAPPER_TYPE", bound=SyncInstanceWrapper)
92
+ _TRIO_THREAD_WRAPPER_TYPE = TypeVar("_TRIO_THREAD_WRAPPER_TYPE", bound=TrioThreadInstanceWrapper)
93
+
94
+
95
+ @overload
96
+ def get_legacy_instance(instance: None) -> None:
97
+ ...
98
+
99
+
100
+ @overload
101
+ def get_legacy_instance(instance: Optional[ALERT_TYPEHINT]) -> Optional[legacyAlert]:
102
+ ...
103
+
104
+
105
+ @overload
106
+ def get_legacy_instance(instance: Optional[FEDCM_TYPEHINT]) -> Optional[legacyFedCM]:
107
+ ...
108
+
109
+
110
+ @overload
111
+ def get_legacy_instance(instance: Optional[DIALOG_TYPEHINT]) -> Optional[legacyDialog]:
112
+ ...
113
+
114
+
115
+ @overload
116
+ def get_legacy_instance(instance: Optional[MOBILE_TYPEHINT]) -> Optional[legacyMobile]:
117
+ ...
118
+
119
+
120
+ @overload
121
+ def get_legacy_instance(instance: Optional[SCRIPT_TYPEHINT]) -> Optional[legacyScript]:
122
+ ...
123
+
124
+
125
+ @overload
126
+ def get_legacy_instance(instance: Optional[BROWSER_TYPEHINT]) -> Optional[legacyBrowser]:
127
+ ...
128
+
129
+
130
+ @overload
131
+ def get_legacy_instance(instance: Optional[NETWORK_TYPEHINT]) -> Optional[legacyNetwork]:
132
+ ...
133
+
134
+
135
+ @overload
136
+ def get_legacy_instance(instance: Optional[STORAGE_TYPEHINT]) -> Optional[legacyStorage]:
137
+ ...
138
+
139
+
140
+ @overload
141
+ def get_legacy_instance(instance: Optional[SWITCH_TO_TYPEHINT]) -> Optional[legacySwitchTo]:
142
+ ...
143
+
144
+
145
+ @overload
146
+ def get_legacy_instance(instance: Optional[SHADOW_ROOT_TYPEHINT]) -> Optional[legacyShadowRoot]:
147
+ ...
148
+
149
+
150
+ @overload
151
+ def get_legacy_instance(instance: Optional[WEB_ELEMENT_TYPEHINT]) -> Optional[legacyWebElement]:
152
+ ...
153
+
154
+
155
+ @overload
156
+ def get_legacy_instance(instance: Optional[PERMISSIONS_TYPEHINT]) -> Optional[legacyPermissions]:
157
+ ...
158
+
159
+
160
+ @overload
161
+ def get_legacy_instance(instance: Optional[ACTION_CHAINS_TYPEHINT]) -> Optional[legacyActionChains]:
162
+ ...
163
+
164
+
165
+ @overload
166
+ def get_legacy_instance(instance: Optional[WEB_EXTENSION_TYPEHINT]) -> Optional[legacyWebExtension]:
167
+ ...
168
+
169
+
170
+ @overload
171
+ def get_legacy_instance(instance: Optional[WEB_DRIVER_WAIT_TYPEHINT]) -> Optional[legacyWebDriverWait]:
172
+ ...
173
+
174
+
175
+ @overload
176
+ def get_legacy_instance(instance: Optional[BROWSING_CONTEXT_TYPEHINT]) -> Optional[legacyBrowsingContext]:
177
+ ...
178
+
179
+
180
+ def get_legacy_instance(
181
+ instance: Optional[Union[ANY_ABSTRACT_INSTANCE_TYPEHINT, ANY_LEGACY_INSTANCE_TYPEHINT]]
182
+ ) -> Optional[ANY_LEGACY_INSTANCE_TYPEHINT]:
183
+ """
184
+ Converts an abstract Selenium instance to its corresponding legacy Selenium instance.
185
+
186
+ This function handles various types of Selenium objects, including browser contexts,
187
+ web elements, alerts, and more. It returns the legacy object if the input is an
188
+ abstract instance, or the input itself if it's already a legacy instance or None.
189
+
190
+ Args:
191
+ instance (Optional[Union[ANY_ABSTRACT_TYPE, ANY_LEGACY_TYPE]]): The instance to convert.
192
+ Can be an abstract instance,
193
+ a legacy instance, or None.
194
+
195
+ Returns:
196
+ Optional[ANY_LEGACY_TYPE]: The converted legacy instance,
197
+ or None if the input was None.
198
+
199
+ Raises:
200
+ ExpectedTypeError: If the input instance is of an unsupported type.
201
+ """
202
+
203
+ if instance is None:
204
+ return None
205
+
206
+ if isinstance(instance, ANY_ABSTRACT_INSTANCE_TYPEHINT):
207
+ return instance.legacy
208
+
209
+ if isinstance(instance, ANY_LEGACY_INSTANCE_TYPEHINT):
210
+ return instance
211
+
212
+ raise NotExpectedTypeError(
213
+ expected_type=(ANY_ABSTRACT_INSTANCE_TYPEHINT, ANY_LEGACY_INSTANCE_TYPEHINT, None),
214
+ received_instance=instance
215
+ )
216
+
217
+
218
+ def get_trio_thread_instance_wrapper(
219
+ wrapper_class: Type[_TRIO_THREAD_WRAPPER_TYPE],
220
+ legacy_object: Any,
221
+ lock: trio.Lock,
222
+ limiter: trio.CapacityLimiter,
223
+ ) -> _TRIO_THREAD_WRAPPER_TYPE:
224
+ """
225
+ Creates a Trio-compatible thread instance wrapper for a legacy Selenium object.
226
+
227
+ Args:
228
+ wrapper_class (Type[_TRIO_THREAD_WRAPPER_TYPE]): The class used to wrap the legacy object.
229
+ legacy_object (Any): The legacy Selenium object to be wrapped.
230
+ lock (trio.Lock): The lock for Trio synchronization.
231
+ limiter (trio.CapacityLimiter): The capacity limiter for Trio.
232
+
233
+ Returns:
234
+ _TRIO_THREAD_WRAPPER_TYPE: An instance of the wrapper class.
235
+
236
+ Raises:
237
+ TypeIsNotWrapper: If the provided wrapper_class does not implement TrioThreadInstanceWrapper.
238
+ """
239
+
240
+ if not isinstance(wrapper_class, TrioThreadInstanceWrapper):
241
+ raise ProtocolComplianceError(instance=wrapper_class, expected_protocols=TrioThreadInstanceWrapper)
242
+
243
+ return wrapper_class.from_legacy(legacy_object=legacy_object, lock=lock, limiter=limiter)
244
+
245
+
246
+ def get_sync_instance_wrapper(wrapper_class: Type[_SYNC_WRAPPER_TYPE], legacy_object: Any) -> _SYNC_WRAPPER_TYPE:
247
+ """
248
+ Creates a synchronous instance wrapper for a legacy Selenium object.
249
+
250
+ Args:
251
+ wrapper_class (Type[_SYNC_WRAPPER_TYPE]): The class used to wrap the legacy object.
252
+ legacy_object (Any): The legacy Selenium object to be wrapped.
253
+
254
+ Returns:
255
+ _SYNC_WRAPPER_TYPE: An instance of the wrapper class.
256
+
257
+ Raises:
258
+ TypeIsNotWrapper: If the provided wrapper_class does not implement SyncInstanceWrapper.
259
+ """
260
+
261
+ if not isinstance(wrapper_class, SyncInstanceWrapper):
262
+ raise ProtocolComplianceError(instance=wrapper_class, expected_protocols=SyncInstanceWrapper)
263
+
264
+ return wrapper_class.from_legacy(legacy_object=legacy_object)
265
+
266
+
267
+ def get_legacy_frame_reference(frame_reference: Optional[Union[str, int, WEB_ELEMENT_TYPEHINT]]) -> Optional[Union[str, int, legacyWebElement]]:
268
+ """
269
+ Converts a frame reference to its legacy Selenium equivalent.
270
+
271
+ The frame reference can be a string (frame name), an integer (frame index),
272
+ an AbstractWebElement, or a legacy WebElement. If it's a web element,
273
+ it is converted to its legacy WebElement form using `get_legacy_instance`.
274
+
275
+ Args:
276
+ frame_reference (Optional[Union[str, int, WEB_ELEMENT_TYPEHINT]]): The reference to the frame.
277
+
278
+ Returns:
279
+ Optional[Union[str, int, legacyWebElement]]: The legacy frame reference,
280
+ which can be a string, integer,
281
+ or a legacy WebElement, or None.
282
+ """
283
+
284
+ if isinstance(frame_reference, (str, int)):
285
+ return frame_reference
286
+
287
+ return get_legacy_instance(instance=frame_reference)
@@ -0,0 +1,105 @@
1
+ import trio
2
+ from typing import (
3
+ Protocol,
4
+ Self,
5
+ TypeVar,
6
+ runtime_checkable
7
+ )
8
+
9
+
10
+ __all__ = [
11
+ "AnyInstanceWrapper",
12
+ "SyncInstanceWrapper",
13
+ "TrioThreadInstanceWrapper"
14
+ ]
15
+
16
+ _LEGACY_OBJECT = TypeVar("_LEGACY_OBJECT")
17
+
18
+
19
+ @runtime_checkable
20
+ class TrioThreadInstanceWrapper(Protocol):
21
+ """
22
+ Protocol for instances that wrap legacy objects and operate within Trio threads.
23
+ """
24
+
25
+ @classmethod
26
+ def from_legacy(
27
+ cls,
28
+ legacy_object: _LEGACY_OBJECT,
29
+ lock: trio.Lock,
30
+ limiter: trio.CapacityLimiter
31
+ ) -> Self:
32
+ """
33
+ Creates an instance of the wrapper from a legacy object.
34
+
35
+ Args:
36
+ legacy_object (_LEGACY_OBJECT): The legacy Selenium object to wrap.
37
+ lock (trio.Lock): Trio lock for synchronization.
38
+ limiter (trio.CapacityLimiter): Trio capacity limiter.
39
+
40
+ Returns:
41
+ Self: An instance of the wrapper.
42
+ """
43
+
44
+ ...
45
+
46
+ @property
47
+ def legacy(self) -> _LEGACY_OBJECT:
48
+ """
49
+ Returns the underlying legacy Selenium object.
50
+
51
+ Returns:
52
+ _LEGACY_OBJECT: The legacy Selenium instance.
53
+ """
54
+
55
+ ...
56
+
57
+
58
+ @runtime_checkable
59
+ class SyncInstanceWrapper(Protocol):
60
+ """
61
+ Protocol for instances that wrap legacy objects for synchronous use.
62
+ """
63
+
64
+ @classmethod
65
+ def from_legacy(cls, legacy_object: _LEGACY_OBJECT) -> Self:
66
+ """
67
+ Creates an instance of the wrapper from a legacy object.
68
+
69
+ Args:
70
+ legacy_object (_LEGACY_OBJECT): The legacy Selenium object to wrap.
71
+
72
+ Returns:
73
+ Self: An instance of the wrapper.
74
+ """
75
+
76
+ ...
77
+
78
+ @property
79
+ def legacy(self) -> _LEGACY_OBJECT:
80
+ """
81
+ Returns the underlying legacy Selenium object.
82
+
83
+ Returns:
84
+ _LEGACY_OBJECT: The legacy Selenium instance.
85
+ """
86
+
87
+ ...
88
+
89
+
90
+ @runtime_checkable
91
+ class AnyInstanceWrapper(Protocol):
92
+ """
93
+ General protocol for any instance wrapper providing access to a legacy object.
94
+ """
95
+
96
+ @property
97
+ def legacy(self) -> _LEGACY_OBJECT:
98
+ """
99
+ Returns the underlying legacy Selenium object.
100
+
101
+ Returns:
102
+ _LEGACY_OBJECT: The legacy Selenium instance.
103
+ """
104
+
105
+ ...
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,26 @@
1
+ from osn_selenium.instances.sync.action_chains.click import ClickMixin
2
+ from osn_selenium.instances.sync.action_chains.utils import UtilsMixin
3
+ from osn_selenium.instances.sync.action_chains.hm_move import HMMoveMixin
4
+ from osn_selenium.instances.sync.action_chains.hm_scroll import HMScrollMixin
5
+ from osn_selenium.abstract.instances.action_chains import AbstractActionChains
6
+ from osn_selenium.instances.sync.action_chains.hm_keyboard import HMKeyboardMixin
7
+ from osn_selenium.instances.sync.action_chains.drag_and_drop import DragAndDropMixin
8
+
9
+
10
+ __all__ = ["ActionChains"]
11
+
12
+
13
+ class ActionChains(
14
+ ClickMixin,
15
+ DragAndDropMixin,
16
+ UtilsMixin,
17
+ HMKeyboardMixin,
18
+ HMMoveMixin,
19
+ HMScrollMixin,
20
+ AbstractActionChains,
21
+ ):
22
+ """
23
+ ActionChains class combining standard and human-like interaction mixins.
24
+ """
25
+
26
+ pass