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,79 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import Point
3
+ from osn_selenium.instances._functions import scroll_to_parts
4
+ from osn_selenium.instances.convert import get_legacy_instance
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.unified.action_chains.utils import UnifiedUtilsMixin
8
+ from osn_selenium.instances.unified.action_chains.scroll import UnifiedScrollMixin
9
+ from selenium.webdriver.common.action_chains import (
10
+ ActionChains as legacyActionChains
11
+ )
12
+
13
+
14
+ __all__ = ["UnifiedHMScrollMixin"]
15
+
16
+
17
+ class UnifiedHMScrollMixin(UnifiedUtilsMixin, UnifiedScrollMixin):
18
+ def _hm_scroll_from_origin_impl(self, delta_x: int, delta_y: int, origin: Optional[ScrollOrigin] = None) -> legacyActionChains:
19
+ if origin is None:
20
+ viewport_size = self._js_executor._get_viewport_size_impl()
21
+
22
+ origin_x = 0 if delta_x >= 0 else viewport_size.width
23
+ origin_y = 0 if delta_y >= 0 else viewport_size.height
24
+
25
+ origin = ScrollOrigin.from_viewport(x_offset=origin_x, y_offset=origin_y)
26
+
27
+ start = Point(x=int(origin.x_offset), y=int(origin.y_offset))
28
+ end = Point(x=int(origin.x_offset) + int(delta_x), y=int(origin.y_offset) + int(delta_y))
29
+
30
+ parts = scroll_to_parts(start_position=start, end_position=end)
31
+
32
+ for part in parts:
33
+ self._pause_impl(seconds=part.duration * 0.001)
34
+ self._scroll_from_origin_impl(scroll_origin=origin, delta_x=int(part.delta.x), delta_y=int(part.delta.y))
35
+
36
+ return self._legacy_impl
37
+
38
+ def _hm_scroll_by_amount_impl(self, delta_x: int, delta_y: int) -> legacyActionChains:
39
+ start = Point(x=0, y=0)
40
+ end = Point(x=int(delta_x), y=int(delta_y))
41
+
42
+ parts = scroll_to_parts(start_position=start, end_position=end)
43
+
44
+ for part in parts:
45
+ self._pause_impl(seconds=part.duration * 0.001)
46
+ self._scroll_by_amount_impl(delta_x=int(part.delta.x), delta_y=int(part.delta.y))
47
+
48
+ return self._legacy_impl
49
+
50
+ def _hm_scroll_to_element_impl(
51
+ self,
52
+ element: WEB_ELEMENT_TYPEHINT,
53
+ additional_lower_y_offset: int = 0,
54
+ additional_upper_y_offset: int = 0,
55
+ additional_right_x_offset: int = 0,
56
+ additional_left_x_offset: int = 0,
57
+ ) -> legacyActionChains:
58
+ viewport_rect = self._js_executor._get_viewport_rect_impl()
59
+ element_rect = self._js_executor._get_element_rect_in_viewport_impl(element=get_legacy_instance(instance=element))
60
+
61
+ if element_rect.x < additional_left_x_offset:
62
+ delta_x = int(element_rect.x - additional_left_x_offset)
63
+ elif element_rect.x + element_rect.width > viewport_rect.width - additional_right_x_offset:
64
+ delta_x = int(
65
+ element_rect.x + element_rect.width - (viewport_rect.width - additional_right_x_offset)
66
+ )
67
+ else:
68
+ delta_x = 0
69
+
70
+ if element_rect.y < additional_upper_y_offset:
71
+ delta_y = int(element_rect.y - additional_upper_y_offset)
72
+ elif element_rect.y + element_rect.height > viewport_rect.height - additional_lower_y_offset:
73
+ delta_y = int(
74
+ element_rect.y + element_rect.height - (viewport_rect.height - additional_lower_y_offset)
75
+ )
76
+ else:
77
+ delta_y = 0
78
+
79
+ return self._hm_scroll_by_amount_impl(delta_x=delta_x, delta_y=delta_y)
@@ -0,0 +1,24 @@
1
+ from typing import Optional
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.unified.action_chains.base import UnifiedBaseMixin
5
+ from selenium.webdriver.common.action_chains import (
6
+ ActionChains as legacyActionChains
7
+ )
8
+
9
+
10
+ __all__ = ["UnifiedKeyboardMixin"]
11
+
12
+
13
+ class UnifiedKeyboardMixin(UnifiedBaseMixin):
14
+ def _key_down_impl(self, value: str, element: Optional[WEB_ELEMENT_TYPEHINT]) -> legacyActionChains:
15
+ return self._legacy_impl.key_down(value=value, element=get_legacy_instance(instance=element))
16
+
17
+ def _key_up_impl(self, value: str, element: Optional[WEB_ELEMENT_TYPEHINT]) -> legacyActionChains:
18
+ return self._legacy_impl.key_up(value=value, element=get_legacy_instance(instance=element))
19
+
20
+ def _send_keys_impl(self, *keys_to_send: str) -> legacyActionChains:
21
+ return self._legacy_impl.send_keys(*keys_to_send)
22
+
23
+ def _send_keys_to_element_impl(self, element: WEB_ELEMENT_TYPEHINT, *keys_to_send: str) -> legacyActionChains:
24
+ return self._legacy_impl.send_keys_to_element(get_legacy_instance(instance=element), *keys_to_send)
@@ -0,0 +1,24 @@
1
+ from osn_selenium.instances.convert import get_legacy_instance
2
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
3
+ from osn_selenium.instances.unified.action_chains.base import UnifiedBaseMixin
4
+ from selenium.webdriver.common.action_chains import (
5
+ ActionChains as legacyActionChains
6
+ )
7
+
8
+
9
+ __all__ = ["UnifiedMoveMixin"]
10
+
11
+
12
+ class UnifiedMoveMixin(UnifiedBaseMixin):
13
+ def _move_by_offset_impl(self, xoffset: int, yoffset: int) -> legacyActionChains:
14
+ return self._legacy_impl.move_by_offset(xoffset=xoffset, yoffset=yoffset)
15
+
16
+ def _move_to_element_impl(self, to_element: WEB_ELEMENT_TYPEHINT) -> legacyActionChains:
17
+ return self._legacy_impl.move_to_element(to_element=get_legacy_instance(instance=to_element))
18
+
19
+ def _move_to_element_with_offset_impl(self, to_element: WEB_ELEMENT_TYPEHINT, xoffset: int, yoffset: int) -> legacyActionChains:
20
+ return self._legacy_impl.move_to_element_with_offset(
21
+ to_element=get_legacy_instance(instance=to_element),
22
+ xoffset=xoffset,
23
+ yoffset=yoffset
24
+ )
@@ -0,0 +1,21 @@
1
+ from osn_selenium.instances.convert import get_legacy_instance
2
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
3
+ from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
4
+ from osn_selenium.instances.unified.action_chains.base import UnifiedBaseMixin
5
+ from selenium.webdriver.common.action_chains import (
6
+ ActionChains as legacyActionChains
7
+ )
8
+
9
+
10
+ __all__ = ["UnifiedScrollMixin"]
11
+
12
+
13
+ class UnifiedScrollMixin(UnifiedBaseMixin):
14
+ def _scroll_by_amount_impl(self, delta_x: int, delta_y: int) -> legacyActionChains:
15
+ return self._legacy_impl.scroll_by_amount(delta_x=delta_x, delta_y=delta_y)
16
+
17
+ def _scroll_from_origin_impl(self, scroll_origin: ScrollOrigin, delta_x: int, delta_y: int) -> legacyActionChains:
18
+ return self._legacy_impl.scroll_from_origin(scroll_origin=scroll_origin, delta_x=delta_x, delta_y=delta_y)
19
+
20
+ def _scroll_to_element_impl(self, element: WEB_ELEMENT_TYPEHINT) -> legacyActionChains:
21
+ return self._legacy_impl.scroll_to_element(element=get_legacy_instance(instance=element))
@@ -0,0 +1,19 @@
1
+ from typing import Union
2
+ from osn_selenium.instances.unified.action_chains.base import UnifiedBaseMixin
3
+ from selenium.webdriver.common.action_chains import (
4
+ ActionChains as legacyActionChains
5
+ )
6
+
7
+
8
+ __all__ = ["UnifiedUtilsMixin"]
9
+
10
+
11
+ class UnifiedUtilsMixin(UnifiedBaseMixin):
12
+ def _pause_impl(self, seconds: Union[float, int]) -> legacyActionChains:
13
+ return self._legacy_impl.pause(seconds=seconds)
14
+
15
+ def _perform_impl(self) -> None:
16
+ self._legacy_impl.perform()
17
+
18
+ def _reset_actions_impl(self) -> None:
19
+ self._legacy_impl.reset_actions()
@@ -0,0 +1,29 @@
1
+ from selenium.webdriver.common.alert import Alert as legacyAlert
2
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
3
+
4
+
5
+ __all__ = ["UnifiedAlert"]
6
+
7
+
8
+ class UnifiedAlert:
9
+ def __init__(self, selenium_alert: legacyAlert):
10
+ if not isinstance(selenium_alert, legacyAlert):
11
+ raise NotExpectedTypeError(expected_type=legacyAlert, received_instance=selenium_alert)
12
+
13
+ self._selenium_alert = selenium_alert
14
+
15
+ def _accept_impl(self) -> None:
16
+ self._legacy_impl.accept()
17
+
18
+ def _dismiss_impl(self) -> None:
19
+ self._legacy_impl.dismiss()
20
+
21
+ @property
22
+ def _legacy_impl(self) -> legacyAlert:
23
+ return self._selenium_alert
24
+
25
+ def _send_keys_impl(self, keysToSend: str) -> None:
26
+ self._legacy_impl.send_keys(keysToSend=keysToSend)
27
+
28
+ def _text_impl(self) -> str:
29
+ return self._legacy_impl.text
@@ -0,0 +1,33 @@
1
+ from typing import List
2
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
3
+ from selenium.webdriver.common.bidi.browser import (
4
+ Browser as legacyBrowser,
5
+ ClientWindowInfo
6
+ )
7
+
8
+
9
+ __all__ = ["UnifiedBrowser"]
10
+
11
+
12
+ class UnifiedBrowser:
13
+ def __init__(self, selenium_browser: legacyBrowser):
14
+ if not isinstance(selenium_browser, legacyBrowser):
15
+ raise NotExpectedTypeError(expected_type=legacyBrowser, received_instance=selenium_browser)
16
+
17
+ self._selenium_browser = selenium_browser
18
+
19
+ def _create_user_context_impl(self) -> str:
20
+ return self._legacy_impl.create_user_context()
21
+
22
+ def _get_client_windows_impl(self) -> List[ClientWindowInfo]:
23
+ return self._legacy_impl.get_client_windows()
24
+
25
+ def _get_user_contexts_impl(self) -> List[str]:
26
+ return self._legacy_impl.get_user_contexts()
27
+
28
+ @property
29
+ def _legacy_impl(self) -> legacyBrowser:
30
+ return self._selenium_browser
31
+
32
+ def _remove_user_context_impl(self, user_context_id: str) -> None:
33
+ self._legacy_impl.remove_user_context(user_context_id=user_context_id)
@@ -0,0 +1,151 @@
1
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
2
+ from typing import (
3
+ Any,
4
+ Callable,
5
+ Dict,
6
+ List,
7
+ Optional,
8
+ Union
9
+ )
10
+ from selenium.webdriver.common.bidi.browsing_context import (
11
+ BrowsingContext as legacyBrowsingContext,
12
+ BrowsingContextInfo
13
+ )
14
+
15
+
16
+ __all__ = ["UnifiedBrowsingContext"]
17
+
18
+
19
+ class UnifiedBrowsingContext:
20
+ def __init__(self, selenium_browsing_context: legacyBrowsingContext):
21
+ if not isinstance(selenium_browsing_context, legacyBrowsingContext):
22
+ raise NotExpectedTypeError(
23
+ expected_type=legacyBrowsingContext,
24
+ received_instance=selenium_browsing_context
25
+ )
26
+
27
+ self._selenium_browsing_context = selenium_browsing_context
28
+
29
+ def _activate_impl(self, context: str) -> Any:
30
+ return self._legacy_impl.activate(context)
31
+
32
+ def _add_event_handler_impl(
33
+ self,
34
+ event: str,
35
+ callback: Callable,
36
+ contexts: Optional[List[str]] = None,
37
+ ) -> int:
38
+ return self._legacy_impl.add_event_handler(event=event, callback=callback, contexts=contexts)
39
+
40
+ def _capture_screenshot_impl(
41
+ self,
42
+ context: str,
43
+ origin: str = "viewport",
44
+ format: Optional[Dict] = None,
45
+ clip: Optional[Dict] = None,
46
+ ) -> str:
47
+ return self._legacy_impl.capture_screenshot(context=context, origin=origin, format=format, clip=clip)
48
+
49
+ def _clear_event_handlers_impl(self) -> None:
50
+ self._legacy_impl.clear_event_handlers()
51
+
52
+ def _close_impl(self, context: str, prompt_unload: bool = False) -> None:
53
+ self._legacy_impl.close(context=context, prompt_unload=prompt_unload)
54
+
55
+ def _create_impl(
56
+ self,
57
+ type: str,
58
+ reference_context: Optional[str] = None,
59
+ background: bool = False,
60
+ user_context: Optional[str] = None,
61
+ ) -> str:
62
+ return self._legacy_impl.create(
63
+ type=type,
64
+ reference_context=reference_context,
65
+ background=background,
66
+ user_context=user_context
67
+ )
68
+
69
+ def _get_tree_impl(self, max_depth: Optional[int] = None, root: Optional[str] = None) -> List[BrowsingContextInfo]:
70
+ return self._legacy_impl.get_tree(max_depth=max_depth, root=root)
71
+
72
+ def _handle_user_prompt_impl(
73
+ self,
74
+ context: str,
75
+ accept: Optional[bool] = None,
76
+ user_text: Optional[str] = None,
77
+ ) -> None:
78
+ self._legacy_impl.handle_user_prompt(context=context, accept=accept, user_text=user_text)
79
+
80
+ @property
81
+ def _legacy_impl(self) -> legacyBrowsingContext:
82
+ return self._selenium_browsing_context
83
+
84
+ def _locate_nodes_impl(
85
+ self,
86
+ context: str,
87
+ locator: Dict,
88
+ max_node_count: Optional[int] = None,
89
+ serialization_options: Optional[Dict] = None,
90
+ start_nodes: Optional[List[Dict]] = None,
91
+ ) -> List[Dict]:
92
+ return self._legacy_impl.locate_nodes(
93
+ context=context,
94
+ locator=locator,
95
+ max_node_count=max_node_count,
96
+ serialization_options=serialization_options,
97
+ start_nodes=start_nodes
98
+ )
99
+
100
+ def _navigate_impl(self, context: str, url: str, wait: Optional[str] = None) -> Dict:
101
+ return self._legacy_impl.navigate(context=context, url=url, wait=wait)
102
+
103
+ def _print_impl(
104
+ self,
105
+ context: str,
106
+ background: bool = False,
107
+ margin: Optional[Dict] = None,
108
+ orientation: str = "portrait",
109
+ page: Optional[Dict] = None,
110
+ page_ranges: Optional[List[Union[int, str]]] = None,
111
+ scale: float = 1.0,
112
+ shrink_to_fit: bool = True,
113
+ ) -> str:
114
+ return self._legacy_impl.print(
115
+ context=context,
116
+ background=background,
117
+ margin=margin,
118
+ orientation=orientation,
119
+ page=page,
120
+ page_ranges=page_ranges,
121
+ scale=scale,
122
+ shrink_to_fit=shrink_to_fit
123
+ )
124
+
125
+ def _reload_impl(
126
+ self,
127
+ context: str,
128
+ ignore_cache: Optional[bool] = None,
129
+ wait: Optional[str] = None,
130
+ ) -> Dict:
131
+ return self._legacy_impl.reload(context=context, ignore_cache=ignore_cache, wait=wait)
132
+
133
+ def _remove_event_handler_impl(self, event: str, callback_id: int) -> None:
134
+ self._legacy_impl.remove_event_handler(event=event, callback_id=callback_id)
135
+
136
+ def _set_viewport_impl(
137
+ self,
138
+ context: Optional[str] = None,
139
+ viewport: Optional[Dict] = None,
140
+ device_pixel_ratio: Optional[float] = None,
141
+ user_contexts: Optional[List[str]] = None,
142
+ ) -> None:
143
+ self._legacy_impl.set_viewport(
144
+ context=context,
145
+ viewport=viewport,
146
+ device_pixel_ratio=device_pixel_ratio,
147
+ user_contexts=user_contexts
148
+ )
149
+
150
+ def _traverse_history_impl(self, context: str, delta: int) -> Dict:
151
+ return self._legacy_impl.traverse_history(context=context, delta=delta)
@@ -0,0 +1,42 @@
1
+ from typing import List, Optional
2
+ from selenium.webdriver.common.fedcm.account import Account
3
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
4
+ from selenium.webdriver.common.fedcm.dialog import (
5
+ Dialog as legacyDialog
6
+ )
7
+
8
+
9
+ __all__ = ["UnifiedDialog"]
10
+
11
+
12
+ class UnifiedDialog:
13
+ def __init__(self, selenium_dialog: legacyDialog):
14
+ if not isinstance(selenium_dialog, legacyDialog):
15
+ raise NotExpectedTypeError(expected_type=legacyDialog, received_instance=selenium_dialog)
16
+
17
+ self._selenium_dialog = selenium_dialog
18
+
19
+ def _accept_impl(self) -> None:
20
+ self._legacy_impl.accept()
21
+
22
+ def _dismiss_impl(self) -> None:
23
+ self._legacy_impl.dismiss()
24
+
25
+ def _get_accounts_impl(self) -> List[Account]:
26
+ return self._legacy_impl.get_accounts()
27
+
28
+ @property
29
+ def _legacy_impl(self) -> legacyDialog:
30
+ return self._selenium_dialog
31
+
32
+ def _select_account_impl(self, index: int) -> None:
33
+ self._legacy_impl.select_account(index=index)
34
+
35
+ def _subtitle_impl(self) -> Optional[str]:
36
+ return self._legacy_impl.subtitle
37
+
38
+ def _title_impl(self) -> str:
39
+ return self._legacy_impl.title
40
+
41
+ def _type_impl(self) -> Optional[str]:
42
+ return self._legacy_impl.type
@@ -0,0 +1,48 @@
1
+ from typing import Dict, List, Optional
2
+ from selenium.webdriver.remote.fedcm import FedCM as legacyFedCM
3
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
4
+
5
+
6
+ __all__ = ["UnifiedFedCM"]
7
+
8
+
9
+ class UnifiedFedCM:
10
+ def __init__(self, selenium_fedcm: legacyFedCM):
11
+ if not isinstance(selenium_fedcm, legacyFedCM):
12
+ raise NotExpectedTypeError(expected_type=legacyFedCM, received_instance=selenium_fedcm)
13
+
14
+ self._selenium_fedcm = selenium_fedcm
15
+
16
+ def _accept_impl(self) -> None:
17
+ self._legacy_impl.accept()
18
+
19
+ def _account_list_impl(self) -> List[Dict]:
20
+ return self._legacy_impl.account_list
21
+
22
+ def _dialog_type_impl(self) -> str:
23
+ return self._legacy_impl.dialog_type
24
+
25
+ def _disable_delay_impl(self) -> None:
26
+ self._legacy_impl.disable_delay()
27
+
28
+ def _dismiss_impl(self) -> None:
29
+ self._legacy_impl.dismiss()
30
+
31
+ def _enable_delay_impl(self) -> None:
32
+ self._legacy_impl.enable_delay()
33
+
34
+ @property
35
+ def _legacy_impl(self) -> legacyFedCM:
36
+ return self._selenium_fedcm
37
+
38
+ def _reset_cooldown_impl(self) -> None:
39
+ self._legacy_impl.reset_cooldown()
40
+
41
+ def _select_account_impl(self, index: int) -> None:
42
+ self._legacy_impl.select_account(index=index)
43
+
44
+ def _subtitle_impl(self) -> Optional[str]:
45
+ return self._legacy_impl.subtitle
46
+
47
+ def _title_impl(self) -> str:
48
+ return self._legacy_impl.title
@@ -0,0 +1,36 @@
1
+ from typing import List, Union
2
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
3
+ from selenium.webdriver.remote.mobile import (
4
+ Mobile as legacyMobile,
5
+ _ConnectionType
6
+ )
7
+
8
+
9
+ __all__ = ["UnifiedMobile"]
10
+
11
+
12
+ class UnifiedMobile:
13
+ def __init__(self, selenium_mobile: legacyMobile):
14
+ if not isinstance(selenium_mobile, legacyMobile):
15
+ raise NotExpectedTypeError(expected_type=legacyMobile, received_instance=selenium_mobile)
16
+
17
+ self._selenium_mobile = selenium_mobile
18
+
19
+ def _contexts_impl(self) -> List[str]:
20
+ return self._legacy_impl.contexts
21
+
22
+ def _get_context_impl(self) -> str:
23
+ return self._legacy_impl.context
24
+
25
+ @property
26
+ def _legacy_impl(self) -> legacyMobile:
27
+ return self._selenium_mobile
28
+
29
+ def _network_connection_impl(self) -> _ConnectionType:
30
+ return self._legacy_impl.network_connection
31
+
32
+ def _set_context_impl(self, new_context: str) -> None:
33
+ self._legacy_impl.context = new_context
34
+
35
+ def _set_network_connection_impl(self, network: Union[int, _ConnectionType]) -> _ConnectionType:
36
+ return self._legacy_impl.set_network_connection(network)
@@ -0,0 +1,50 @@
1
+ from typing import (
2
+ Callable,
3
+ List,
4
+ Optional
5
+ )
6
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
7
+ from selenium.webdriver.common.bidi.network import (
8
+ Network as legacyNetwork
9
+ )
10
+
11
+
12
+ __all__ = ["UnifiedNetwork"]
13
+
14
+
15
+ class UnifiedNetwork:
16
+ def __init__(self, selenium_network: legacyNetwork):
17
+ if not isinstance(selenium_network, legacyNetwork):
18
+ raise NotExpectedTypeError(expected_type=legacyNetwork, received_instance=selenium_network)
19
+
20
+ self._selenium_network = selenium_network
21
+
22
+ def _add_auth_handler_impl(self, username: str, password: str) -> int:
23
+ return self._legacy_impl.add_auth_handler(username=username, password=password)
24
+
25
+ def _add_request_handler_impl(
26
+ self,
27
+ event: str,
28
+ callback: Callable,
29
+ url_patterns: Optional[List[str]] = None,
30
+ contexts: Optional[List[str]] = None,
31
+ ) -> int:
32
+ return self._legacy_impl.add_request_handler(
33
+ event=event,
34
+ callback=callback,
35
+ url_patterns=url_patterns,
36
+ contexts=contexts
37
+ )
38
+
39
+ def _clear_request_handlers_impl(self) -> None:
40
+ self._legacy_impl.clear_request_handlers()
41
+
42
+ @property
43
+ def _legacy_impl(self) -> legacyNetwork:
44
+ return self._selenium_network
45
+
46
+ def _remove_auth_handler_impl(self, callback_id: int) -> None:
47
+ self._legacy_impl.remove_auth_handler(callback_id=callback_id)
48
+
49
+ def _remove_request_handler_impl(self, event: str, callback_id: int) -> None:
50
+ self._legacy_impl.remove_request_handler(event=event, callback_id=callback_id)
@@ -0,0 +1,43 @@
1
+ from typing import (
2
+ Any,
3
+ Dict,
4
+ Optional,
5
+ Union
6
+ )
7
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
8
+ from selenium.webdriver.common.bidi.permissions import (
9
+ PermissionDescriptor,
10
+ Permissions as legacyPermissions
11
+ )
12
+
13
+
14
+ __all__ = ["UnifiedPermissions"]
15
+
16
+
17
+ class UnifiedPermissions:
18
+ def __init__(self, selenium_permissions: legacyPermissions):
19
+ if not isinstance(selenium_permissions, legacyPermissions):
20
+ raise NotExpectedTypeError(
21
+ expected_type=legacyPermissions,
22
+ received_instance=selenium_permissions
23
+ )
24
+
25
+ self._selenium_permissions = selenium_permissions
26
+
27
+ @property
28
+ def _legacy_impl(self) -> legacyPermissions:
29
+ return self._selenium_permissions
30
+
31
+ def _set_permission_impl(
32
+ self,
33
+ descriptor: Union[Dict[str, Any], PermissionDescriptor],
34
+ state: str,
35
+ origin: str,
36
+ user_context: Optional[str] = None,
37
+ ) -> None:
38
+ self._legacy_impl.set_permission(
39
+ descriptor=descriptor,
40
+ state=state,
41
+ origin=origin,
42
+ user_context=user_context
43
+ )
@@ -0,0 +1,38 @@
1
+ from typing import Any, Callable
2
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
3
+ from selenium.webdriver.common.bidi.script import (
4
+ Script as legacyScript
5
+ )
6
+
7
+
8
+ __all__ = ["UnifiedScript"]
9
+
10
+
11
+ class UnifiedScript:
12
+ def __init__(self, selenium_script: legacyScript):
13
+ if not isinstance(selenium_script, legacyScript):
14
+ raise NotExpectedTypeError(expected_type=legacyScript, received_instance=selenium_script)
15
+
16
+ self._selenium_script = selenium_script
17
+
18
+ def _add_console_message_handler_impl(self, handler: Callable[[Any], None]) -> int:
19
+ return self._legacy_impl.add_console_message_handler(handler=handler)
20
+
21
+ def _add_javascript_error_handler_impl(self, handler: Callable[[Any], None]) -> int:
22
+ return self._legacy_impl.add_javascript_error_handler(handler=handler)
23
+
24
+ def _execute_impl(self, script: str, *args: Any) -> Any:
25
+ return self._legacy_impl.execute(script, *args)
26
+
27
+ @property
28
+ def _legacy_impl(self) -> legacyScript:
29
+ return self._selenium_script
30
+
31
+ def _pin_impl(self, script: str) -> str:
32
+ return self._legacy_impl.pin(script=script)
33
+
34
+ def _remove_console_message_handler_impl(self, id: int) -> None:
35
+ self._legacy_impl.remove_console_message_handler(id=id)
36
+
37
+ def _unpin_impl(self, script_id: str) -> None:
38
+ self._legacy_impl.unpin(script_id=script_id)