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,91 @@
1
+ from selenium.webdriver.common.by import By
2
+ from typing import (
3
+ List,
4
+ Optional,
5
+ Self,
6
+ TYPE_CHECKING
7
+ )
8
+ from osn_selenium.instances._typehints import SHADOW_ROOT_TYPEHINT
9
+ from osn_selenium.exceptions.instance import (
10
+ CannotConvertTypeError
11
+ )
12
+ from osn_selenium.instances.unified.shadow_root import UnifiedShadowRoot
13
+ from osn_selenium.abstract.instances.shadow_root import AbstractShadowRoot
14
+ from selenium.webdriver.remote.shadowroot import (
15
+ ShadowRoot as legacyShadowRoot
16
+ )
17
+ from osn_selenium.instances.convert import (
18
+ get_legacy_instance,
19
+ get_sync_instance_wrapper
20
+ )
21
+
22
+
23
+ __all__ = ["ShadowRoot"]
24
+
25
+ if TYPE_CHECKING:
26
+ from osn_selenium.instances.sync.web_element import WebElement
27
+
28
+
29
+ class ShadowRoot(UnifiedShadowRoot, AbstractShadowRoot):
30
+ """
31
+ Wrapper for the legacy Selenium ShadowRoot instance.
32
+
33
+ Represents the root of a Shadow DOM tree, allowing element search
34
+ within the encapsulated shadow scope.
35
+ """
36
+
37
+ def __init__(self, selenium_shadow_root: legacyShadowRoot) -> None:
38
+ """
39
+ Initializes the ShadowRoot wrapper.
40
+
41
+ Args:
42
+ selenium_shadow_root (legacyShadowRoot): The legacy Selenium ShadowRoot instance to wrap.
43
+ """
44
+
45
+ UnifiedShadowRoot.__init__(self, selenium_shadow_root=selenium_shadow_root)
46
+
47
+ def find_element(self, by: str = By.ID, value: Optional[str] = None) -> "WebElement":
48
+ legacy_element = self._find_element_impl(by=by, value=value)
49
+
50
+ from osn_selenium.instances.sync.web_element import WebElement
51
+
52
+ return get_sync_instance_wrapper(wrapper_class=WebElement, legacy_object=legacy_element)
53
+
54
+ def find_elements(self, by: str = By.ID, value: Optional[str] = None) -> List["WebElement"]:
55
+ legacy_elements = self._find_elements_impl(by=by, value=value)
56
+
57
+ from osn_selenium.instances.sync.web_element import WebElement
58
+
59
+ return [
60
+ get_sync_instance_wrapper(wrapper_class=WebElement, legacy_object=legacy_element)
61
+ for legacy_element in legacy_elements
62
+ ]
63
+
64
+ @classmethod
65
+ def from_legacy(cls, legacy_object: SHADOW_ROOT_TYPEHINT) -> Self:
66
+ """
67
+ Creates an instance from a legacy Selenium ShadowRoot object.
68
+
69
+ This factory method is used to wrap an existing Selenium ShadowRoot
70
+ instance into the new interface.
71
+
72
+ Args:
73
+ legacy_object (SHADOW_ROOT_TYPEHINT): The legacy Selenium ShadowRoot instance or its wrapper.
74
+
75
+ Returns:
76
+ Self: A new instance of a class implementing ShadowRoot.
77
+ """
78
+
79
+ legacy_shadow_root_obj = get_legacy_instance(instance=legacy_object)
80
+
81
+ if not isinstance(legacy_shadow_root_obj, legacyShadowRoot):
82
+ raise CannotConvertTypeError(from_=legacyShadowRoot, to_=legacy_object)
83
+
84
+ return cls(selenium_shadow_root=legacy_shadow_root_obj)
85
+
86
+ def id(self) -> str:
87
+ return self._id_impl()
88
+
89
+ @property
90
+ def legacy(self) -> legacyShadowRoot:
91
+ return self._legacy_impl
@@ -0,0 +1,91 @@
1
+ from typing import (
2
+ Optional,
3
+ Self,
4
+ Union
5
+ )
6
+ from osn_selenium.instances._typehints import STORAGE_TYPEHINT
7
+ from osn_selenium.instances.convert import get_legacy_instance
8
+ from osn_selenium.instances.unified.storage import UnifiedStorage
9
+ from osn_selenium.abstract.instances.storage import AbstractStorage
10
+ from osn_selenium.exceptions.instance import (
11
+ CannotConvertTypeError
12
+ )
13
+ from selenium.webdriver.common.bidi.storage import (
14
+ BrowsingContextPartitionDescriptor,
15
+ CookieFilter,
16
+ DeleteCookiesResult,
17
+ GetCookiesResult,
18
+ PartialCookie,
19
+ SetCookieResult,
20
+ Storage as legacyStorage,
21
+ StorageKeyPartitionDescriptor
22
+ )
23
+
24
+
25
+ __all__ = ["Storage"]
26
+
27
+
28
+ class Storage(UnifiedStorage, AbstractStorage):
29
+ """
30
+ Wrapper for the legacy Selenium BiDi Storage instance.
31
+
32
+ Manages browser storage mechanisms, primarily focusing on getting, setting,
33
+ and deleting cookies with specific filters and partition descriptors.
34
+ """
35
+
36
+ def __init__(self, selenium_storage: legacyStorage) -> None:
37
+ """
38
+ Initializes the Storage wrapper.
39
+
40
+ Args:
41
+ selenium_storage (legacyStorage): The legacy Selenium Storage instance to wrap.
42
+ """
43
+
44
+ UnifiedStorage.__init__(self, selenium_storage=selenium_storage)
45
+
46
+ def delete_cookies(
47
+ self,
48
+ filter: Optional[CookieFilter] = None,
49
+ partition: Optional[Union[BrowsingContextPartitionDescriptor, StorageKeyPartitionDescriptor]] = None,
50
+ ) -> DeleteCookiesResult:
51
+ return self._delete_cookies_impl(filter=filter, partition=partition)
52
+
53
+ @classmethod
54
+ def from_legacy(cls, legacy_object: STORAGE_TYPEHINT) -> Self:
55
+ """
56
+ Creates an instance from a legacy Selenium Storage object.
57
+
58
+ This factory method is used to wrap an existing Selenium Storage
59
+ instance into the new interface.
60
+
61
+ Args:
62
+ legacy_object (STORAGE_TYPEHINT): The legacy Selenium Storage instance or its wrapper.
63
+
64
+ Returns:
65
+ Self: A new instance of a class implementing Storage.
66
+ """
67
+
68
+ legacy_storage_obj = get_legacy_instance(instance=legacy_object)
69
+
70
+ if not isinstance(legacy_storage_obj, legacyStorage):
71
+ raise CannotConvertTypeError(from_=legacyStorage, to_=legacy_object)
72
+
73
+ return cls(selenium_storage=legacy_storage_obj)
74
+
75
+ def get_cookies(
76
+ self,
77
+ filter: Optional[CookieFilter] = None,
78
+ partition: Optional[Union[BrowsingContextPartitionDescriptor, StorageKeyPartitionDescriptor]] = None,
79
+ ) -> GetCookiesResult:
80
+ return self._get_cookies_impl(filter=filter, partition=partition)
81
+
82
+ @property
83
+ def legacy(self) -> legacyStorage:
84
+ return self._legacy_impl
85
+
86
+ def set_cookie(
87
+ self,
88
+ cookie: PartialCookie,
89
+ partition: Optional[Union[BrowsingContextPartitionDescriptor, StorageKeyPartitionDescriptor]] = None,
90
+ ) -> SetCookieResult:
91
+ return self._set_cookie_impl(cookie=cookie, partition=partition)
@@ -0,0 +1,92 @@
1
+ from typing import (
2
+ Optional,
3
+ Self,
4
+ Union
5
+ )
6
+ from osn_selenium.instances.sync.alert import Alert
7
+ from osn_selenium.instances.sync.web_element import WebElement
8
+ from osn_selenium.instances.unified.switch_to import UnifiedSwitchTo
9
+ from osn_selenium.abstract.instances.switch_to import AbstractSwitchTo
10
+ from osn_selenium.exceptions.instance import (
11
+ CannotConvertTypeError
12
+ )
13
+ from selenium.webdriver.remote.switch_to import (
14
+ SwitchTo as legacySwitchTo
15
+ )
16
+ from osn_selenium.instances._typehints import (
17
+ SWITCH_TO_TYPEHINT,
18
+ WEB_ELEMENT_TYPEHINT
19
+ )
20
+ from osn_selenium.instances.convert import (
21
+ get_legacy_instance,
22
+ get_sync_instance_wrapper
23
+ )
24
+
25
+
26
+ __all__ = ["SwitchTo"]
27
+
28
+
29
+ class SwitchTo(UnifiedSwitchTo, AbstractSwitchTo):
30
+ """
31
+ Wrapper for the legacy Selenium SwitchTo instance.
32
+
33
+ Provides mechanisms to change the driver's focus to different frames,
34
+ windows, or alerts.
35
+ """
36
+
37
+ def __init__(self, selenium_switch_to: legacySwitchTo) -> None:
38
+ """
39
+ Initializes the SwitchTo wrapper.
40
+
41
+ Args:
42
+ selenium_switch_to (legacySwitchTo): The legacy Selenium SwitchTo instance to wrap.
43
+ """
44
+
45
+ UnifiedSwitchTo.__init__(self, selenium_switch_to=selenium_switch_to)
46
+
47
+ def active_element(self) -> WebElement:
48
+ return get_sync_instance_wrapper(wrapper_class=WebElement, legacy_object=self._active_element_impl())
49
+
50
+ def alert(self) -> Alert:
51
+ return get_sync_instance_wrapper(wrapper_class=Alert, legacy_object=self._alert_impl())
52
+
53
+ def default_content(self) -> None:
54
+ self._default_content_impl()
55
+
56
+ def frame(self, frame_reference: Union[str, int, WEB_ELEMENT_TYPEHINT]) -> None:
57
+ self._frame_impl(frame_reference=frame_reference)
58
+
59
+ @classmethod
60
+ def from_legacy(cls, legacy_object: SWITCH_TO_TYPEHINT) -> Self:
61
+ """
62
+ Creates an instance from a legacy Selenium SwitchTo object.
63
+
64
+ This factory method is used to wrap an existing Selenium SwitchTo
65
+ instance into the new interface.
66
+
67
+ Args:
68
+ legacy_object (SWITCH_TO_TYPEHINT): The legacy Selenium SwitchTo instance or its wrapper.
69
+
70
+ Returns:
71
+ Self: A new instance of a class implementing SwitchTo.
72
+ """
73
+
74
+ legacy_switch_to_obj = get_legacy_instance(instance=legacy_object)
75
+
76
+ if not isinstance(legacy_switch_to_obj, legacySwitchTo):
77
+ raise CannotConvertTypeError(from_=legacySwitchTo, to_=legacy_object)
78
+
79
+ return cls(selenium_switch_to=legacy_switch_to_obj)
80
+
81
+ @property
82
+ def legacy(self) -> legacySwitchTo:
83
+ return self._legacy_impl
84
+
85
+ def new_window(self, type_hint: Optional[str] = None) -> None:
86
+ self._new_window_impl(type_hint=type_hint)
87
+
88
+ def parent_frame(self) -> None:
89
+ self._parent_frame_impl()
90
+
91
+ def window(self, window_name: str) -> None:
92
+ self._window_impl(window_name=window_name)
@@ -0,0 +1,83 @@
1
+ from typing import (
2
+ Callable,
3
+ Self,
4
+ TypeVar
5
+ )
6
+ from osn_selenium.instances.convert import get_legacy_instance
7
+ from osn_selenium.exceptions.instance import (
8
+ CannotConvertTypeError
9
+ )
10
+ from osn_selenium.instances._typehints import (
11
+ WebDriverWaitInputType
12
+ )
13
+ from osn_selenium.instances.unified.web_driver_wait import UnifiedWebDriverWait
14
+ from selenium.webdriver.support.wait import (
15
+ WebDriverWait as legacyWebDriverWait
16
+ )
17
+ from osn_selenium.abstract.instances.web_driver_wait import (
18
+ AbstractWebDriverWait
19
+ )
20
+
21
+
22
+ __all__ = ["OUTPUT", "WebDriverWait"]
23
+
24
+ OUTPUT = TypeVar("OUTPUT")
25
+
26
+
27
+ class WebDriverWait(UnifiedWebDriverWait, AbstractWebDriverWait):
28
+ """
29
+ Wrapper for the legacy Selenium WebDriverWait instance.
30
+
31
+ Provides conditional waiting functionality, pausing execution until
32
+ specific conditions (expected conditions) are met or a timeout occurs.
33
+ """
34
+
35
+ def __init__(self, selenium_webdriver_wait: legacyWebDriverWait) -> None:
36
+ """
37
+ Initializes the WebDriverWait wrapper.
38
+
39
+ Args:
40
+ selenium_webdriver_wait (legacyWebDriverWait): The legacy Selenium WebDriverWait instance to wrap.
41
+ """
42
+
43
+ UnifiedWebDriverWait.__init__(self, selenium_webdriver_wait=selenium_webdriver_wait)
44
+
45
+ @classmethod
46
+ def from_legacy(cls, legacy_object: legacyWebDriverWait) -> Self:
47
+ """
48
+ Creates a WebDriverWait wrapper instance from a legacy Selenium object.
49
+
50
+ Args:
51
+ legacy_object (legacyWebDriverWait): The legacy object to convert.
52
+
53
+ Returns:
54
+ Self: An instance of the WebDriverWait wrapper.
55
+
56
+ Raises:
57
+ CannotConvertTypeError: If the provided object cannot be converted to legacyWebDriverWait.
58
+ """
59
+
60
+ legacy_wait_obj = get_legacy_instance(instance=legacy_object)
61
+
62
+ if not isinstance(legacy_wait_obj, legacyWebDriverWait):
63
+ raise CannotConvertTypeError(from_=legacyWebDriverWait, to_=legacy_object)
64
+
65
+ return cls(selenium_webdriver_wait=legacy_wait_obj)
66
+
67
+ @property
68
+ def legacy(self) -> legacyWebDriverWait:
69
+ return self._legacy_impl
70
+
71
+ def until(
72
+ self,
73
+ method: Callable[[WebDriverWaitInputType], OUTPUT],
74
+ message: str = ""
75
+ ) -> OUTPUT:
76
+ return self._until_impl(method=method, message=message)
77
+
78
+ def until_not(
79
+ self,
80
+ method: Callable[[WebDriverWaitInputType], OUTPUT],
81
+ message: str = ""
82
+ ) -> OUTPUT:
83
+ return self._until_not_impl(method=method, message=message)
@@ -0,0 +1,179 @@
1
+ from selenium.webdriver.common.by import By
2
+ from osn_selenium.instances.sync.shadow_root import ShadowRoot
3
+ from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
4
+ from osn_selenium.instances.sync.web_driver_wait import WebDriverWait
5
+ from typing import (
6
+ Any,
7
+ Dict,
8
+ Iterable,
9
+ List,
10
+ Optional,
11
+ Self
12
+ )
13
+ from osn_selenium.exceptions.instance import (
14
+ CannotConvertTypeError
15
+ )
16
+ from osn_selenium.instances.unified.web_element import UnifiedWebElement
17
+ from osn_selenium.abstract.instances.web_element import AbstractWebElement
18
+ from selenium.webdriver.remote.webelement import (
19
+ WebElement as legacyWebElement
20
+ )
21
+ from osn_selenium.instances.convert import (
22
+ get_legacy_instance,
23
+ get_sync_instance_wrapper
24
+ )
25
+
26
+
27
+ __all__ = ["WebElement"]
28
+
29
+
30
+ class WebElement(UnifiedWebElement, AbstractWebElement):
31
+ """
32
+ Represents an HTML element in the DOM, offering methods for interaction (click, type),
33
+ property retrieval, and finding child elements.
34
+ """
35
+
36
+ def __init__(self, selenium_web_element: legacyWebElement) -> None:
37
+ """
38
+ Initializes the WebElement wrapper.
39
+
40
+ Args:
41
+ selenium_web_element (legacyWebElement): The legacy Selenium WebElement instance to wrap.
42
+ """
43
+
44
+ UnifiedWebElement.__init__(self, selenium_web_element=selenium_web_element)
45
+
46
+ def accessible_name(self) -> str:
47
+ return self._accessible_name_impl()
48
+
49
+ def aria_role(self) -> str:
50
+ return self._aria_role_impl()
51
+
52
+ def clear(self) -> None:
53
+ self._clear_impl()
54
+
55
+ def click(self) -> None:
56
+ self._click_impl()
57
+
58
+ def find_element(self, by: str = By.ID, value: Any = None) -> Self:
59
+ web_element = self._find_element_impl(by=by, value=value)
60
+
61
+ return get_sync_instance_wrapper(wrapper_class=self.__class__, legacy_object=web_element)
62
+
63
+ def find_elements(self, by: str = By.ID, value: Any = None) -> List[Self]:
64
+ web_elements = self._find_elements_impl(by=by, value=value)
65
+
66
+ return [
67
+ get_sync_instance_wrapper(wrapper_class=self.__class__, legacy_object=web_element)
68
+ for web_element in web_elements
69
+ ]
70
+
71
+ def get_attribute(self, name: str) -> Optional[str]:
72
+ return self._get_attribute_impl(name=name)
73
+
74
+ def get_dom_attribute(self, name: str) -> Optional[str]:
75
+ return self._get_dom_attribute_impl(name=name)
76
+
77
+ def get_property(self, name: str) -> Any:
78
+ return self._get_property_impl(name=name)
79
+
80
+ def id(self) -> str:
81
+ return self._id_impl()
82
+
83
+ def is_displayed(self) -> bool:
84
+ return self._is_displayed_impl()
85
+
86
+ def is_enabled(self) -> bool:
87
+ return self._is_enabled_impl()
88
+
89
+ def is_selected(self) -> bool:
90
+ return self._is_selected_impl()
91
+
92
+ @property
93
+ def legacy(self) -> legacyWebElement:
94
+ return self._legacy_impl
95
+
96
+ def location(self) -> Dict:
97
+ return self._location_impl()
98
+
99
+ def location_once_scrolled_into_view(self) -> Dict:
100
+ return self._location_once_scrolled_into_view_impl()
101
+
102
+ @classmethod
103
+ def from_legacy(cls, legacy_object: WEB_ELEMENT_TYPEHINT) -> Self:
104
+ """
105
+ Creates an instance from a legacy Selenium WebElement object.
106
+
107
+ This factory method is used to wrap an existing Selenium WebElement
108
+ instance into the new interface.
109
+
110
+ Args:
111
+ legacy_object (WEB_ELEMENT_TYPEHINT): The legacy Selenium WebElement instance or its wrapper.
112
+
113
+ Returns:
114
+ Self: A new instance of a class implementing WebElement.
115
+ """
116
+
117
+ legacy_element_obj = get_legacy_instance(instance=legacy_object)
118
+
119
+ if not isinstance(legacy_element_obj, legacyWebElement):
120
+ raise CannotConvertTypeError(from_=legacyWebElement, to_=legacy_object)
121
+
122
+ return cls(selenium_web_element=legacy_element_obj)
123
+
124
+ def parent(self) -> Self:
125
+ web_element = self._parent_impl()
126
+
127
+ return self.from_legacy(legacy_object=web_element)
128
+
129
+ def rect(self) -> Dict:
130
+ return self._rect_impl()
131
+
132
+ def screenshot(self, filename: str) -> bool:
133
+ return self._screenshot_impl(filename=filename)
134
+
135
+ def screenshot_as_base64(self) -> str:
136
+ return self._screenshot_as_base64_impl()
137
+
138
+ def screenshot_as_png(self) -> bytes:
139
+ return self._screenshot_as_png_impl()
140
+
141
+ def send_keys(self, *value: str) -> None:
142
+ self._send_keys_impl(*value)
143
+
144
+ def session_id(self) -> str:
145
+ return self._session_id_impl()
146
+
147
+ def shadow_root(self) -> ShadowRoot:
148
+ shadow_root = self._shadow_root_impl()
149
+
150
+ return get_sync_instance_wrapper(wrapper_class=ShadowRoot, legacy_object=shadow_root)
151
+
152
+ def size(self) -> Dict:
153
+ return self._size_impl()
154
+
155
+ def submit(self) -> None:
156
+ self._submit_impl()
157
+
158
+ def tag_name(self) -> str:
159
+ return self._tag_name_impl()
160
+
161
+ def text(self) -> str:
162
+ return self._text_impl()
163
+
164
+ def value_of_css_property(self, property_name: str) -> str:
165
+ return self._value_of_css_property_impl(property_name=property_name)
166
+
167
+ def web_driver_wait(
168
+ self,
169
+ timeout: float,
170
+ poll_frequency: float = 0.5,
171
+ ignored_exceptions: Optional[Iterable[BaseException]] = None,
172
+ ) -> WebDriverWait:
173
+ web_driver_wait = self._web_driver_wait_impl(
174
+ timeout=timeout,
175
+ poll_frequency=poll_frequency,
176
+ ignored_exceptions=ignored_exceptions,
177
+ )
178
+
179
+ return get_sync_instance_wrapper(wrapper_class=WebDriverWait, legacy_object=web_driver_wait)
@@ -0,0 +1,77 @@
1
+ from typing import (
2
+ Dict,
3
+ Optional,
4
+ Self,
5
+ Union
6
+ )
7
+ from osn_selenium.instances.convert import get_legacy_instance
8
+ from osn_selenium.exceptions.instance import (
9
+ CannotConvertTypeError
10
+ )
11
+ from osn_selenium.instances._typehints import (
12
+ WEB_EXTENSION_TYPEHINT
13
+ )
14
+ from osn_selenium.instances.unified.web_extension import UnifiedWebExtension
15
+ from osn_selenium.abstract.instances.web_extension import AbstractWebExtension
16
+ from selenium.webdriver.common.bidi.webextension import (
17
+ WebExtension as legacyWebExtension
18
+ )
19
+
20
+
21
+ __all__ = ["WebExtension"]
22
+
23
+
24
+ class WebExtension(UnifiedWebExtension, AbstractWebExtension):
25
+ """
26
+ Wrapper for the legacy Selenium WebExtension instance.
27
+
28
+ Manages the installation and uninstallation of browser extensions via the
29
+ WebDriver BiDi protocol.
30
+ """
31
+
32
+ def __init__(self, selenium_web_extension: legacyWebExtension) -> None:
33
+ """
34
+ Initializes the WebExtension wrapper.
35
+
36
+ Args:
37
+ selenium_web_extension (legacyWebExtension): The legacy Selenium WebExtension instance to wrap.
38
+ """
39
+
40
+ UnifiedWebExtension.__init__(self, selenium_web_extension=selenium_web_extension)
41
+
42
+ @classmethod
43
+ def from_legacy(cls, legacy_object: WEB_EXTENSION_TYPEHINT) -> Self:
44
+ """
45
+ Creates an instance from a legacy Selenium WebExtension object.
46
+
47
+ This factory method is used to wrap an existing Selenium WebExtension
48
+ instance into the new interface.
49
+
50
+ Args:
51
+ legacy_object (WEB_EXTENSION_TYPEHINT): The legacy Selenium WebExtension instance or its wrapper.
52
+
53
+ Returns:
54
+ Self: A new instance of a class implementing WebExtension.
55
+ """
56
+
57
+ legacy_web_extension_obj = get_legacy_instance(instance=legacy_object)
58
+
59
+ if not isinstance(legacy_web_extension_obj, legacyWebExtension):
60
+ raise CannotConvertTypeError(from_=legacyWebExtension, to_=legacy_object)
61
+
62
+ return cls(selenium_web_extension=legacy_web_extension_obj)
63
+
64
+ def install(
65
+ self,
66
+ path: Optional[str] = None,
67
+ archive_path: Optional[str] = None,
68
+ base64_value: Optional[str] = None,
69
+ ) -> Dict:
70
+ return self._install_impl(path=path, archive_path=archive_path, base64_value=base64_value)
71
+
72
+ @property
73
+ def legacy(self) -> legacyWebExtension:
74
+ return self._legacy_impl
75
+
76
+ def uninstall(self, extension_id_or_result: Union[str, Dict]) -> None:
77
+ self._uninstall_impl(extension_id_or_result=extension_id_or_result)
@@ -0,0 +1,26 @@
1
+ from osn_selenium.abstract.instances.action_chains import AbstractActionChains
2
+ from osn_selenium.instances.trio_threads.action_chains.click import ClickMixin
3
+ from osn_selenium.instances.trio_threads.action_chains.utils import UtilsMixin
4
+ from osn_selenium.instances.trio_threads.action_chains.hm_move import HMMoveMixin
5
+ from osn_selenium.instances.trio_threads.action_chains.hm_scroll import HMScrollMixin
6
+ from osn_selenium.instances.trio_threads.action_chains.hm_keyboard import HMKeyboardMixin
7
+ from osn_selenium.instances.trio_threads.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