osn-selenium 0.0.0__py3-none-any.whl → 1.1.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 (635) hide show
  1. osn_selenium/_base_models.py +41 -0
  2. osn_selenium/_cdp_import.py +253 -0
  3. osn_selenium/_functions.py +84 -0
  4. osn_selenium/_typehints.py +19 -0
  5. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  6. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  7. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  8. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  9. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  10. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  11. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  12. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  13. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  14. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  15. osn_selenium/abstract/executors/cdp/console.py +18 -0
  16. osn_selenium/abstract/executors/cdp/css.py +197 -0
  17. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  18. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  19. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  20. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  21. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  22. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  23. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  24. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  25. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  26. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  27. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  28. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  29. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  30. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  31. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  32. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  33. osn_selenium/abstract/executors/cdp/input.py +158 -0
  34. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  35. osn_selenium/abstract/executors/cdp/io.py +24 -0
  36. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  37. osn_selenium/abstract/executors/cdp/log.py +27 -0
  38. osn_selenium/abstract/executors/cdp/media.py +14 -0
  39. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  40. osn_selenium/abstract/executors/cdp/network.py +252 -0
  41. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  42. osn_selenium/abstract/executors/cdp/page.py +347 -0
  43. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  44. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  45. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  46. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  47. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  48. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  49. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  50. osn_selenium/abstract/executors/cdp/security.py +26 -0
  51. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  52. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  53. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  54. osn_selenium/abstract/executors/cdp/target.py +125 -0
  55. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  56. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  57. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  58. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  59. osn_selenium/abstract/executors/cdp.py +63 -0
  60. osn_selenium/abstract/executors/javascript.py +203 -0
  61. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  62. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  63. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  64. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  65. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  66. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  67. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  68. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  69. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  70. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  71. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  72. osn_selenium/abstract/instances/alert.py +67 -0
  73. osn_selenium/abstract/instances/browser.py +76 -0
  74. osn_selenium/abstract/instances/browsing_context.py +310 -0
  75. osn_selenium/abstract/instances/dialog.py +107 -0
  76. osn_selenium/abstract/instances/fedcm.py +133 -0
  77. osn_selenium/abstract/instances/mobile.py +79 -0
  78. osn_selenium/abstract/instances/network.py +100 -0
  79. osn_selenium/abstract/instances/permissions.py +52 -0
  80. osn_selenium/abstract/instances/script.py +109 -0
  81. osn_selenium/abstract/instances/shadow_root.py +81 -0
  82. osn_selenium/abstract/instances/storage.py +98 -0
  83. osn_selenium/abstract/instances/switch_to.py +104 -0
  84. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  85. osn_selenium/abstract/instances/web_element.py +395 -0
  86. osn_selenium/abstract/instances/web_extension.py +70 -0
  87. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  88. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  89. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  90. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  91. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  92. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  93. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  94. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  95. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  96. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  97. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  98. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  99. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  100. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  101. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  102. osn_selenium/abstract/webdriver/core/base.py +298 -0
  103. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  104. osn_selenium/abstract/webdriver/core/components.py +82 -0
  105. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  106. osn_selenium/abstract/webdriver/core/element.py +55 -0
  107. osn_selenium/abstract/webdriver/core/file.py +82 -0
  108. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  109. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  110. osn_selenium/abstract/webdriver/core/script.py +88 -0
  111. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  112. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  113. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  114. osn_selenium/abstract/webdriver/core/window.py +237 -0
  115. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  116. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  117. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  118. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  119. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  120. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  121. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  122. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  123. osn_selenium/base_mixin.py +122 -0
  124. osn_selenium/browsers_handler/__init__.py +47 -17
  125. osn_selenium/browsers_handler/_linux.py +226 -0
  126. osn_selenium/browsers_handler/_windows.py +21 -14
  127. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  128. osn_selenium/dev_tools/_decorators.py +149 -0
  129. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  130. osn_selenium/dev_tools/_functions.py +174 -0
  131. osn_selenium/dev_tools/_system_utils.py +35 -0
  132. osn_selenium/dev_tools/_typehints.py +35 -0
  133. osn_selenium/dev_tools/_validators.py +227 -0
  134. osn_selenium/dev_tools/_wrappers.py +92 -0
  135. osn_selenium/dev_tools/domains/__init__.py +7 -40
  136. osn_selenium/dev_tools/domains/abstract.py +98 -254
  137. osn_selenium/dev_tools/domains/fetch.py +229 -906
  138. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  139. osn_selenium/dev_tools/filters.py +40 -0
  140. osn_selenium/dev_tools/logger/main.py +214 -0
  141. osn_selenium/dev_tools/logger/models.py +232 -0
  142. osn_selenium/dev_tools/logger/target.py +278 -0
  143. osn_selenium/dev_tools/manager/__init__.py +16 -0
  144. osn_selenium/dev_tools/manager/base.py +124 -0
  145. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  146. osn_selenium/dev_tools/manager/logging.py +153 -0
  147. osn_selenium/dev_tools/manager/settings.py +89 -0
  148. osn_selenium/dev_tools/manager/targets.py +175 -0
  149. osn_selenium/dev_tools/models.py +49 -0
  150. osn_selenium/dev_tools/settings.py +139 -0
  151. osn_selenium/dev_tools/target/__init__.py +16 -0
  152. osn_selenium/dev_tools/target/base.py +427 -0
  153. osn_selenium/dev_tools/target/detach.py +54 -0
  154. osn_selenium/dev_tools/target/discovery.py +112 -0
  155. osn_selenium/dev_tools/target/events.py +120 -0
  156. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  157. osn_selenium/dev_tools/target/lifecycle.py +184 -0
  158. osn_selenium/dev_tools/target/logging.py +163 -0
  159. osn_selenium/exceptions/__init__.py +1 -0
  160. osn_selenium/exceptions/base.py +9 -0
  161. osn_selenium/exceptions/configuration.py +84 -0
  162. osn_selenium/exceptions/dependencies.py +60 -0
  163. osn_selenium/exceptions/devtools.py +114 -0
  164. osn_selenium/exceptions/flags.py +45 -0
  165. osn_selenium/exceptions/instance.py +92 -0
  166. osn_selenium/exceptions/javascript.py +31 -0
  167. osn_selenium/exceptions/logic.py +31 -0
  168. osn_selenium/exceptions/path.py +77 -0
  169. osn_selenium/exceptions/platform.py +33 -0
  170. osn_selenium/exceptions/protocol.py +86 -0
  171. osn_selenium/exceptions/webdriver.py +44 -0
  172. osn_selenium/exceptions/window.py +63 -0
  173. osn_selenium/executors/__init__.py +1 -0
  174. osn_selenium/executors/sync/__init__.py +1 -0
  175. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  176. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  177. osn_selenium/executors/sync/cdp/animation.py +50 -0
  178. osn_selenium/executors/sync/cdp/audits.py +48 -0
  179. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  180. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  181. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  182. osn_selenium/executors/sync/cdp/browser.py +131 -0
  183. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  184. osn_selenium/executors/sync/cdp/cast.py +38 -0
  185. osn_selenium/executors/sync/cdp/console.py +24 -0
  186. osn_selenium/executors/sync/cdp/css.py +187 -0
  187. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  188. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  189. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  190. osn_selenium/executors/sync/cdp/dom.py +310 -0
  191. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  192. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  193. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  194. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  195. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  196. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  197. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  198. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  199. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  200. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  201. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  202. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  203. osn_selenium/executors/sync/cdp/input.py +233 -0
  204. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  205. osn_selenium/executors/sync/cdp/io.py +33 -0
  206. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  207. osn_selenium/executors/sync/cdp/log.py +35 -0
  208. osn_selenium/executors/sync/cdp/media.py +21 -0
  209. osn_selenium/executors/sync/cdp/memory.py +62 -0
  210. osn_selenium/executors/sync/cdp/network.py +287 -0
  211. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  212. osn_selenium/executors/sync/cdp/page.py +365 -0
  213. osn_selenium/executors/sync/cdp/performance.py +33 -0
  214. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  215. osn_selenium/executors/sync/cdp/preload.py +21 -0
  216. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  217. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  218. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  219. osn_selenium/executors/sync/cdp/schema.py +23 -0
  220. osn_selenium/executors/sync/cdp/security.py +30 -0
  221. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  222. osn_selenium/executors/sync/cdp/storage.py +151 -0
  223. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  224. osn_selenium/executors/sync/cdp/target.py +147 -0
  225. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  226. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  227. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  228. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  229. osn_selenium/executors/sync/cdp.py +100 -0
  230. osn_selenium/executors/sync/javascript.py +79 -0
  231. osn_selenium/executors/trio_threads/__init__.py +1 -0
  232. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  233. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  234. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  235. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  236. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  237. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  238. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  239. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  240. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  241. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  242. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  243. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  244. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  245. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  246. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  247. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  248. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  249. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  250. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  251. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  252. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  253. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  254. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  255. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  256. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  257. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  258. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  259. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  260. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  261. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  262. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  263. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  264. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  265. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  266. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  267. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  268. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  269. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  270. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  271. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  272. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  273. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  274. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  275. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  276. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  277. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  278. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  279. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  280. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  281. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  282. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  283. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  284. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  285. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  286. osn_selenium/executors/trio_threads/cdp.py +104 -0
  287. osn_selenium/executors/trio_threads/javascript.py +90 -0
  288. osn_selenium/executors/unified/__init__.py +1 -0
  289. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  290. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  291. osn_selenium/executors/unified/cdp/animation.py +50 -0
  292. osn_selenium/executors/unified/cdp/audits.py +45 -0
  293. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  294. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  295. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  296. osn_selenium/executors/unified/cdp/browser.py +143 -0
  297. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  298. osn_selenium/executors/unified/cdp/cast.py +32 -0
  299. osn_selenium/executors/unified/cdp/console.py +18 -0
  300. osn_selenium/executors/unified/cdp/css.py +237 -0
  301. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  302. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  303. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  304. osn_selenium/executors/unified/cdp/dom.py +380 -0
  305. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  306. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  307. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  308. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  309. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  310. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  311. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  312. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  313. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  314. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  315. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  316. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  317. osn_selenium/executors/unified/cdp/input.py +254 -0
  318. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  319. osn_selenium/executors/unified/cdp/io.py +29 -0
  320. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  321. osn_selenium/executors/unified/cdp/log.py +29 -0
  322. osn_selenium/executors/unified/cdp/media.py +15 -0
  323. osn_selenium/executors/unified/cdp/memory.py +59 -0
  324. osn_selenium/executors/unified/cdp/network.py +323 -0
  325. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  326. osn_selenium/executors/unified/cdp/page.py +410 -0
  327. osn_selenium/executors/unified/cdp/performance.py +27 -0
  328. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  329. osn_selenium/executors/unified/cdp/preload.py +15 -0
  330. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  331. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  332. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  333. osn_selenium/executors/unified/cdp/schema.py +17 -0
  334. osn_selenium/executors/unified/cdp/security.py +27 -0
  335. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  336. osn_selenium/executors/unified/cdp/storage.py +178 -0
  337. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  338. osn_selenium/executors/unified/cdp/target.py +165 -0
  339. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  340. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  341. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  342. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  343. osn_selenium/executors/unified/javascript.py +104 -0
  344. osn_selenium/flags/__init__.py +1 -0
  345. osn_selenium/flags/_functions.py +45 -0
  346. osn_selenium/flags/_typehints.py +34 -0
  347. osn_selenium/flags/_validators.py +101 -0
  348. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +159 -245
  349. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +130 -374
  350. osn_selenium/flags/chrome.py +259 -0
  351. osn_selenium/flags/edge.py +259 -0
  352. osn_selenium/flags/models/__init__.py +1 -0
  353. osn_selenium/flags/models/base.py +130 -0
  354. osn_selenium/flags/models/blink.py +263 -0
  355. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  356. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  357. osn_selenium/flags/models/values.py +44 -0
  358. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  359. osn_selenium/flags/yandex.py +259 -0
  360. osn_selenium/instances/__init__.py +1 -0
  361. osn_selenium/instances/_functions.py +242 -0
  362. osn_selenium/instances/_typehints.py +148 -0
  363. osn_selenium/instances/_utils.py +143 -0
  364. osn_selenium/instances/convert.py +287 -0
  365. osn_selenium/instances/protocols.py +105 -0
  366. osn_selenium/instances/sync/__init__.py +1 -0
  367. osn_selenium/instances/sync/action_chains/__init__.py +32 -0
  368. osn_selenium/instances/sync/action_chains/base.py +74 -0
  369. osn_selenium/instances/sync/action_chains/click.py +61 -0
  370. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  371. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  372. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  373. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  374. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  375. osn_selenium/instances/sync/action_chains/move.py +46 -0
  376. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  377. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  378. osn_selenium/instances/sync/alert.py +69 -0
  379. osn_selenium/instances/sync/browser.py +72 -0
  380. osn_selenium/instances/sync/browsing_context.py +193 -0
  381. osn_selenium/instances/sync/dialog.py +81 -0
  382. osn_selenium/instances/sync/fedcm.py +92 -0
  383. osn_selenium/instances/sync/mobile.py +75 -0
  384. osn_selenium/instances/sync/network.py +90 -0
  385. osn_selenium/instances/sync/permissions.py +80 -0
  386. osn_selenium/instances/sync/script.py +77 -0
  387. osn_selenium/instances/sync/shadow_root.py +113 -0
  388. osn_selenium/instances/sync/storage.py +91 -0
  389. osn_selenium/instances/sync/switch_to.py +92 -0
  390. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  391. osn_selenium/instances/sync/web_element.py +179 -0
  392. osn_selenium/instances/sync/web_extension.py +77 -0
  393. osn_selenium/instances/trio_threads/__init__.py +1 -0
  394. osn_selenium/instances/trio_threads/action_chains/__init__.py +32 -0
  395. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  396. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  397. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  399. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  400. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  401. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  402. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  403. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  404. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  405. osn_selenium/instances/trio_threads/alert.py +87 -0
  406. osn_selenium/instances/trio_threads/browser.py +90 -0
  407. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  408. osn_selenium/instances/trio_threads/dialog.py +99 -0
  409. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  410. osn_selenium/instances/trio_threads/mobile.py +93 -0
  411. osn_selenium/instances/trio_threads/network.py +108 -0
  412. osn_selenium/instances/trio_threads/permissions.py +102 -0
  413. osn_selenium/instances/trio_threads/script.py +95 -0
  414. osn_selenium/instances/trio_threads/shadow_root.py +154 -0
  415. osn_selenium/instances/trio_threads/storage.py +109 -0
  416. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  417. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  418. osn_selenium/instances/trio_threads/web_element.py +217 -0
  419. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  420. osn_selenium/instances/unified/__init__.py +1 -0
  421. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  422. osn_selenium/instances/unified/action_chains/base.py +31 -0
  423. osn_selenium/instances/unified/action_chains/click.py +27 -0
  424. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  425. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  426. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  427. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  428. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  429. osn_selenium/instances/unified/action_chains/move.py +24 -0
  430. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  431. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  432. osn_selenium/instances/unified/alert.py +29 -0
  433. osn_selenium/instances/unified/browser.py +33 -0
  434. osn_selenium/instances/unified/browsing_context.py +151 -0
  435. osn_selenium/instances/unified/dialog.py +42 -0
  436. osn_selenium/instances/unified/fedcm.py +48 -0
  437. osn_selenium/instances/unified/mobile.py +36 -0
  438. osn_selenium/instances/unified/network.py +50 -0
  439. osn_selenium/instances/unified/permissions.py +43 -0
  440. osn_selenium/instances/unified/script.py +38 -0
  441. osn_selenium/instances/unified/shadow_root.py +46 -0
  442. osn_selenium/instances/unified/storage.py +48 -0
  443. osn_selenium/instances/unified/switch_to.py +49 -0
  444. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  445. osn_selenium/instances/unified/web_element.py +145 -0
  446. osn_selenium/instances/unified/web_extension.py +38 -0
  447. osn_selenium/javascript/__init__.py +1 -0
  448. osn_selenium/javascript/_functions.py +63 -0
  449. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  450. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  451. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  452. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  453. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  454. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  455. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  456. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  457. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  458. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  459. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  460. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  461. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  462. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  463. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  464. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  465. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  466. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  467. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  468. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  469. osn_selenium/javascript/functions.py +44 -0
  470. osn_selenium/javascript/models.py +35 -0
  471. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  472. osn_selenium/models.py +94 -0
  473. osn_selenium/trio_threads_mixin.py +159 -0
  474. osn_selenium/webdrivers/_args_helpers.py +181 -0
  475. osn_selenium/webdrivers/_bridges.py +57 -0
  476. osn_selenium/webdrivers/_decorators.py +83 -0
  477. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  478. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  479. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  480. osn_selenium/webdrivers/_typehints.py +10 -0
  481. osn_selenium/webdrivers/protocols.py +50 -0
  482. osn_selenium/webdrivers/sync/__init__.py +1 -0
  483. osn_selenium/webdrivers/sync/blink/__init__.py +124 -0
  484. osn_selenium/webdrivers/sync/blink/base.py +140 -0
  485. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  486. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  487. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  488. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  489. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  490. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  491. osn_selenium/webdrivers/sync/chrome/__init__.py +102 -0
  492. osn_selenium/webdrivers/sync/chrome/base.py +118 -0
  493. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  494. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  495. osn_selenium/webdrivers/sync/core/__init__.py +100 -0
  496. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  497. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  498. osn_selenium/webdrivers/sync/core/base.py +175 -0
  499. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  500. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  501. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  502. osn_selenium/webdrivers/sync/core/element.py +42 -0
  503. osn_selenium/webdrivers/sync/core/file.py +40 -0
  504. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  505. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  506. osn_selenium/webdrivers/sync/core/script.py +53 -0
  507. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  508. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  509. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  510. osn_selenium/webdrivers/sync/core/window.py +99 -0
  511. osn_selenium/webdrivers/sync/edge/__init__.py +102 -0
  512. osn_selenium/webdrivers/sync/edge/base.py +114 -0
  513. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  514. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  515. osn_selenium/webdrivers/sync/yandex/__init__.py +102 -0
  516. osn_selenium/webdrivers/sync/yandex/base.py +111 -0
  517. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  518. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  519. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  520. osn_selenium/webdrivers/trio_threads/blink/__init__.py +134 -0
  521. osn_selenium/webdrivers/trio_threads/blink/base.py +143 -0
  522. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  523. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  524. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  525. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  526. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  527. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  528. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +114 -0
  529. osn_selenium/webdrivers/trio_threads/chrome/base.py +119 -0
  530. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  531. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  532. osn_selenium/webdrivers/trio_threads/core/__init__.py +115 -0
  533. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  534. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  535. osn_selenium/webdrivers/trio_threads/core/base.py +199 -0
  536. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  537. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  538. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  539. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  540. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  541. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  542. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  543. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  544. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  545. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  546. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  547. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  548. osn_selenium/webdrivers/trio_threads/edge/__init__.py +114 -0
  549. osn_selenium/webdrivers/trio_threads/edge/base.py +115 -0
  550. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  551. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  552. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +114 -0
  553. osn_selenium/webdrivers/trio_threads/yandex/base.py +112 -0
  554. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  555. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  556. osn_selenium/webdrivers/unified/__init__.py +1 -0
  557. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  558. osn_selenium/webdrivers/unified/blink/base.py +135 -0
  559. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  560. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  561. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  562. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  563. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  564. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  565. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  566. osn_selenium/webdrivers/unified/chrome/base.py +58 -0
  567. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  568. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  569. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  570. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  571. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  572. osn_selenium/webdrivers/unified/core/base.py +139 -0
  573. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  574. osn_selenium/webdrivers/unified/core/components.py +32 -0
  575. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  576. osn_selenium/webdrivers/unified/core/element.py +24 -0
  577. osn_selenium/webdrivers/unified/core/file.py +35 -0
  578. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  579. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  580. osn_selenium/webdrivers/unified/core/script.py +32 -0
  581. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  582. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  583. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  584. osn_selenium/webdrivers/unified/core/window.py +135 -0
  585. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  586. osn_selenium/webdrivers/unified/edge/base.py +56 -0
  587. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  588. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  589. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  590. osn_selenium/webdrivers/unified/yandex/base.py +58 -0
  591. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  592. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  593. osn_selenium-1.1.0.dist-info/METADATA +252 -0
  594. osn_selenium-1.1.0.dist-info/RECORD +615 -0
  595. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/WHEEL +1 -1
  596. osn_selenium/captcha_workers/__init__.py +0 -26
  597. osn_selenium/dev_tools/_types.py +0 -22
  598. osn_selenium/dev_tools/errors.py +0 -89
  599. osn_selenium/dev_tools/logger.py +0 -558
  600. osn_selenium/dev_tools/manager.py +0 -1551
  601. osn_selenium/dev_tools/utils.py +0 -509
  602. osn_selenium/errors.py +0 -16
  603. osn_selenium/types.py +0 -118
  604. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  605. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  606. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  607. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  608. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  609. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  610. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  611. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  612. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  613. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  614. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  615. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  616. osn_selenium/webdrivers/_functions.py +0 -504
  617. osn_selenium/webdrivers/types.py +0 -390
  618. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  619. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  620. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  621. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  622. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  623. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  624. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  628. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  629. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  630. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  631. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  632. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  633. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  634. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  635. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/top_level.txt +0 -0
@@ -1,79 +1,23 @@
1
- import pathlib
2
- from typing import (
3
- Optional,
4
- TypedDict,
5
- Union
6
- )
7
- from selenium.webdriver.chrome.options import Options
8
- from osn_selenium.webdrivers.Blink.flags import BlinkFeatures
9
- from osn_selenium.webdrivers.types import (
10
- FlagDefinition,
11
- FlagType
12
- )
13
- from osn_selenium.webdrivers.Chrome.flags import (
1
+ from pydantic import Field
2
+ from typing import Optional
3
+ from osn_selenium.flags.models.blink import BlinkFeatures
4
+ from osn_selenium.flags.models.chrome import (
14
5
  ChromeArguments,
15
6
  ChromeAttributes,
16
7
  ChromeExperimentalOptions,
17
- ChromeFlagsManager
8
+ ChromeFlags
18
9
  )
19
10
 
20
11
 
21
- class YandexFlagsManager(ChromeFlagsManager):
22
- """
23
- Manages Yandex Browser-specific options for Selenium WebDriver.
12
+ __all__ = [
13
+ "YandexArguments",
14
+ "YandexAttributes",
15
+ "YandexExperimentalOptions",
16
+ "YandexFlags"
17
+ ]
24
18
 
25
- This class extends BrowserOptionsManager to provide specific configurations
26
- for Yandex Browser options, such as experimental options and arguments.
27
19
 
28
- Attributes:
29
- """
30
-
31
- def __init__(
32
- self,
33
- browser_exe: Optional[Union[str, pathlib.Path]] = None,
34
- start_page_url: Optional[str] = None,
35
- flags_types: Optional[dict[str, FlagType]] = None,
36
- flags_definitions: Optional[dict[str, FlagDefinition]] = None
37
- ):
38
- """
39
- Initializes YandexOptionsManager.
40
-
41
- Sets up the Yandex Browser options manager with specific option configurations for
42
- debugging port, user agent, proxy, and BiDi protocol.
43
- """
44
-
45
- yandex_flags_types = {}
46
-
47
- if flags_types is not None:
48
- yandex_flags_types.update(flags_types)
49
-
50
- yandex_flags_definitions = {}
51
-
52
- if flags_definitions is not None:
53
- yandex_flags_definitions.update(flags_definitions)
54
-
55
- super().__init__(
56
- browser_exe=browser_exe,
57
- start_page_url=start_page_url,
58
- flags_types=yandex_flags_types,
59
- flags_definitions=yandex_flags_definitions,
60
- )
61
-
62
- def _renew_webdriver_options(self) -> Options:
63
- """
64
- Creates and returns a new Options object.
65
-
66
- Returns a fresh instance of `webdriver.ChromeOptions`, as Yandex Browser is based on Chromium,
67
- allowing for a clean state of browser options to be configured.
68
-
69
- Returns:
70
- Options: A new Selenium Yandex Browser options object, based on ChromeOptions.
71
- """
72
-
73
- return Options()
74
-
75
-
76
- class YandexAttributes(ChromeAttributes, total=False):
20
+ class YandexAttributes(ChromeAttributes):
77
21
  """
78
22
  Typed dictionary for WebDriver attributes specific to Yandex browsers.
79
23
 
@@ -84,7 +28,7 @@ class YandexAttributes(ChromeAttributes, total=False):
84
28
  pass
85
29
 
86
30
 
87
- class YandexExperimentalOptions(ChromeExperimentalOptions, total=False):
31
+ class YandexExperimentalOptions(ChromeExperimentalOptions):
88
32
  """
89
33
  Typed dictionary for experimental options specific to Yandex browsers.
90
34
 
@@ -95,7 +39,7 @@ class YandexExperimentalOptions(ChromeExperimentalOptions, total=False):
95
39
  pass
96
40
 
97
41
 
98
- class YandexArguments(ChromeArguments, total=False):
42
+ class YandexArguments(ChromeArguments):
99
43
  """
100
44
  Typed dictionary for command-line arguments specific to Yandex browsers.
101
45
 
@@ -162,7 +106,7 @@ class YandexArguments(ChromeArguments, total=False):
162
106
  proxy_server (Optional[str]): Specifies a proxy server to use.
163
107
  remote_debugging_port (Optional[int]): Specifies the remote debugging port.
164
108
  remote_debugging_address (Optional[str]): Specifies the remote debugging address.
165
- use_file_for_fake_video_capture (Optional[Union[str, pathlib.Path]]): Uses a file for fake video capture.
109
+ use_file_for_fake_video_capture (Optional[PATH_TYPEHINT]): Uses a file for fake video capture.
166
110
  autoplay_policy (Optional[AutoplayPolicyType]): Sets the autoplay policy.
167
111
  log_level (Optional[LogLevelType]): Sets the browser's log level.
168
112
  use_gl (Optional[UseGLType]): Specifies the GL backend to use.
@@ -172,7 +116,7 @@ class YandexArguments(ChromeArguments, total=False):
172
116
  pass
173
117
 
174
118
 
175
- class YandexFlags(TypedDict, total=False):
119
+ class YandexFlags(ChromeFlags):
176
120
  """
177
121
  Typed dictionary representing a collection of all flag types for Yandex browsers.
178
122
 
@@ -186,7 +130,13 @@ class YandexFlags(TypedDict, total=False):
186
130
  blink_feature (BlinkFeatures): Blink-specific feature flags.
187
131
  """
188
132
 
189
- argument: YandexArguments
190
- experimental_option: YandexExperimentalOptions
191
- attribute: YandexAttributes
192
- blink_feature: BlinkFeatures
133
+ argument: YandexArguments = Field(default_factory=YandexArguments)
134
+ experimental_option: YandexExperimentalOptions = Field(default_factory=YandexExperimentalOptions)
135
+ attribute: YandexAttributes = Field(default_factory=YandexAttributes)
136
+ blink_feature: BlinkFeatures = Field(default_factory=BlinkFeatures)
137
+
138
+
139
+ YandexArguments.model_rebuild()
140
+ YandexExperimentalOptions.model_rebuild()
141
+ YandexAttributes.model_rebuild()
142
+ YandexFlags.model_rebuild()
@@ -0,0 +1,259 @@
1
+ from typing import Dict, Optional
2
+ from osn_selenium._typehints import PATH_TYPEHINT
3
+ from selenium.webdriver.chrome.options import Options
4
+ from osn_selenium.flags.chrome import ChromeFlagsManager
5
+ from osn_selenium.flags.models.blink import BlinkFeatures
6
+ from osn_selenium.flags.models.base import (
7
+ FlagDefinition,
8
+ FlagType
9
+ )
10
+ from osn_selenium.flags.models.yandex import (
11
+ YandexArguments,
12
+ YandexAttributes,
13
+ YandexExperimentalOptions,
14
+ YandexFlags
15
+ )
16
+
17
+
18
+ __all__ = ["YandexFlagsManager"]
19
+
20
+
21
+ class YandexFlagsManager(ChromeFlagsManager):
22
+ """
23
+ Manages Yandex Browser-specific options for Selenium WebDriver.
24
+
25
+ This class extends BrowserOptionsManager to provide specific configurations
26
+ for Yandex Browser options, such as experimental options and arguments.
27
+
28
+ Attributes:
29
+ """
30
+
31
+ def __init__(
32
+ self,
33
+ browser_exe: Optional[PATH_TYPEHINT] = None,
34
+ start_page_url: Optional[str] = None,
35
+ flags_types: Optional[Dict[str, FlagType]] = None,
36
+ flags_definitions: Optional[Dict[str, FlagDefinition]] = None
37
+ ):
38
+ """
39
+ Initializes YandexOptionsManager.
40
+
41
+ Sets up the Yandex Browser options manager with specific option configurations for
42
+ debugging port, user agent, proxy, and BiDi protocol.
43
+ """
44
+
45
+ yandex_flags_types = {}
46
+
47
+ if flags_types is not None:
48
+ yandex_flags_types.update(flags_types)
49
+
50
+ yandex_flags_definitions = {}
51
+
52
+ if flags_definitions is not None:
53
+ yandex_flags_definitions.update(flags_definitions)
54
+
55
+ super().__init__(
56
+ browser_exe=browser_exe,
57
+ start_page_url=start_page_url,
58
+ flags_types=yandex_flags_types,
59
+ flags_definitions=yandex_flags_definitions,
60
+ )
61
+
62
+ def _build_options_arguments(self, options: Options) -> Options:
63
+ """
64
+ Adds configured command-line arguments to the WebDriver options.
65
+
66
+ Args:
67
+ options (Options): The WebDriver options object.
68
+
69
+ Returns:
70
+ Options: The modified WebDriver options object.
71
+ """
72
+
73
+ return super()._build_options_arguments(options)
74
+
75
+ def _build_options_attributes(self, options: Options) -> Options:
76
+ """
77
+ Applies configured attributes to the WebDriver options.
78
+
79
+ Args:
80
+ options (Options): The WebDriver options object.
81
+
82
+ Returns:
83
+ Options: The modified WebDriver options object.
84
+ """
85
+
86
+ return super()._build_options_attributes(options)
87
+
88
+ def _build_options_blink_features(self, options: Options) -> Options:
89
+ """
90
+ Adds configured Yandex features (`--enable-blink-features` and `--disable-blink-features`) to the WebDriver options.
91
+
92
+ Args:
93
+ options (Options): The WebDriver options object to modify.
94
+
95
+ Returns:
96
+ Options: The modified WebDriver options object.
97
+ """
98
+
99
+ return super()._build_options_blink_features(options)
100
+
101
+ def _build_options_experimental_options(self, options: Options) -> Options:
102
+ """
103
+ Adds experimental options to the WebDriver options.
104
+
105
+ Args:
106
+ options (Options): The WebDriver options object.
107
+
108
+ Returns:
109
+ Options: The modified WebDriver options object.
110
+ """
111
+
112
+ return super()._build_options_experimental_options(options)
113
+
114
+ def _renew_webdriver_options(self) -> Options:
115
+ """
116
+ Creates and returns a new Options object.
117
+
118
+ Returns a fresh instance of `webdriver.ChromeOptions`, as Yandex Browser is based on Chromium,
119
+ allowing for a clean state of browser options to be configured.
120
+
121
+ Returns:
122
+ Options: A new Selenium Yandex Browser options object, based on ChromeOptions.
123
+ """
124
+
125
+ return Options()
126
+
127
+ def set_arguments(self, arguments: YandexArguments):
128
+ """
129
+ Clears existing and sets new command-line arguments from a dictionary.
130
+
131
+ Args:
132
+ arguments (YandexArguments): A dictionary of arguments to set.
133
+
134
+ Raises:
135
+ ValueError: If an unknown argument key is provided.
136
+ """
137
+
138
+ super().set_arguments(arguments)
139
+
140
+ def set_attributes(self, attributes: YandexAttributes):
141
+ """
142
+ Clears existing and sets new browser attributes from a dictionary.
143
+
144
+ Args:
145
+ attributes (YandexAttributes): A dictionary of attributes to set.
146
+
147
+ Raises:
148
+ ValueError: If an unknown attribute key is provided.
149
+ """
150
+
151
+ super().set_attributes(attributes)
152
+
153
+ def set_blink_features(self, blink_features: BlinkFeatures):
154
+ """
155
+ Clears existing and sets new Yandex features from a dictionary.
156
+
157
+ Args:
158
+ blink_features (BlinkFeatures): A dictionary of Yandex features to set.
159
+
160
+ Raises:
161
+ ValueError: If an unknown Yandex feature key is provided.
162
+ """
163
+
164
+ super().set_blink_features(blink_features)
165
+
166
+ def set_experimental_options(self, experimental_options: YandexExperimentalOptions):
167
+ """
168
+ Clears existing and sets new experimental options from a dictionary.
169
+
170
+ Args:
171
+ experimental_options (YandexExperimentalOptions): A dictionary of experimental options to set.
172
+
173
+ Raises:
174
+ ValueError: If an unknown experimental option key is provided.
175
+ """
176
+
177
+ super().set_experimental_options(experimental_options)
178
+
179
+ def set_flags(self, flags: YandexFlags):
180
+ """
181
+ Clears all existing flags and sets new ones, including Yandex features.
182
+
183
+ This method delegates to the parent `set_flags` method, allowing it to handle
184
+ all flag types defined in this manager, including 'arguments', 'experimental_options',
185
+ 'attributes', and 'blink_features'.
186
+
187
+ Args:
188
+ flags (YandexFlags): A dictionary where keys are flag types
189
+ and values are dictionaries of flags to set for that type.
190
+ """
191
+
192
+ super().set_flags(flags)
193
+
194
+ def update_arguments(self, arguments: YandexArguments):
195
+ """
196
+ Updates command-line arguments from a dictionary without clearing existing ones.
197
+
198
+ Args:
199
+ arguments (YandexArguments): A dictionary of arguments to set or update.
200
+
201
+ Raises:
202
+ ValueError: If an unknown argument key is provided.
203
+ """
204
+
205
+ super().update_arguments(arguments)
206
+
207
+ def update_attributes(self, attributes: YandexAttributes):
208
+ """
209
+ Updates browser attributes from a dictionary without clearing existing ones.
210
+
211
+ Args:
212
+ attributes (YandexAttributes): A dictionary of attributes to set or update.
213
+
214
+ Raises:
215
+ ValueError: If an unknown attribute key is provided.
216
+ """
217
+
218
+ super().update_attributes(attributes)
219
+
220
+ def update_blink_features(self, blink_features: BlinkFeatures):
221
+ """
222
+ Updates Yandex features from a dictionary without clearing existing ones.
223
+
224
+ Args:
225
+ blink_features (BlinkFeatures): A dictionary of Yandex features to set or update.
226
+
227
+ Raises:
228
+ ValueError: If an unknown Yandex feature key is provided.
229
+ """
230
+
231
+ super().update_blink_features(blink_features)
232
+
233
+ def update_experimental_options(self, experimental_options: YandexExperimentalOptions):
234
+ """
235
+ Updates experimental options from a dictionary without clearing existing ones.
236
+
237
+ Args:
238
+ experimental_options (YandexExperimentalOptions): A dictionary of experimental options to set or update.
239
+
240
+ Raises:
241
+ ValueError: If an unknown experimental option key is provided.
242
+ """
243
+
244
+ super().update_experimental_options(experimental_options)
245
+
246
+ def update_flags(self, flags: YandexFlags):
247
+ """
248
+ Updates all flags, including Yandex features, without clearing existing ones.
249
+
250
+ This method delegates to the parent `update_flags` method, allowing it to handle
251
+ all flag types defined in this manager, including 'arguments', 'experimental_options',
252
+ 'attributes', and 'blink_features'.
253
+
254
+ Args:
255
+ flags (YandexFlags): A dictionary where keys are flag types
256
+ and values are dictionaries of flags to update for that type.
257
+ """
258
+
259
+ super().update_flags(flags)
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,242 @@
1
+ import math
2
+ from typing import List
3
+ from copy import deepcopy
4
+ from random import randint
5
+ from osn_selenium.models import Point
6
+ from osn_selenium.instances._utils import (
7
+ MoveOffset,
8
+ MovePart,
9
+ MoveStep,
10
+ ScrollDelta,
11
+ ScrollPart,
12
+ TextInputPart
13
+ )
14
+
15
+
16
+ __all__ = ["move_to_parts", "scroll_to_parts", "text_input_to_parts"]
17
+
18
+
19
+ def text_input_to_parts(text: str) -> List[TextInputPart]:
20
+ """
21
+ Breaks down a text string into smaller parts for simulating human-like typing.
22
+
23
+ Generates a List of `TextInputPart` objects, where each part contains a character
24
+ or sequence of characters and a calculated duration. The duration simulates pauses
25
+ between key presses, with potentially longer pauses between different consecutive
26
+ characters.
27
+
28
+ Args:
29
+ text (str): The input string to be broken down.
30
+
31
+ Returns:
32
+ List[TextInputPart]: A List of `TextInputPart` objects representing the sequence
33
+ of text segments and their associated durations for simulated typing.
34
+ """
35
+
36
+ parts = []
37
+ previous_sign = None
38
+
39
+ for sign in text:
40
+ if previous_sign is None or sign == previous_sign:
41
+ parts.append(TextInputPart(text=sign, duration=randint(50, 70)))
42
+ else:
43
+ parts.append(TextInputPart(text=sign, duration=randint(100, 200)))
44
+
45
+ previous_sign = sign
46
+
47
+ return parts
48
+
49
+
50
+ def scroll_to_parts(start_position: Point, end_position: Point) -> List[ScrollPart]:
51
+ """
52
+ Calculates a sequence of smaller scroll steps with durations for human-like scrolling.
53
+
54
+ Simulates scrolling by generating a series of vertical steps followed by horizontal steps
55
+ until the target coordinates are reached. Each step is represented by a `ScrollPart`
56
+ containing the scroll delta for that step and a random duration.
57
+
58
+ Args:
59
+ start_position (Point): The starting conceptual scroll position.
60
+ end_position (Point): The target conceptual scroll position.
61
+
62
+ Returns:
63
+ List[ScrollPart]: A List of `ScrollPart` objects representing the sequence of scroll
64
+ movements and their associated durations. The `delta` in each part
65
+ represents the scroll amount for that step, and the `point` represents
66
+ the conceptual position *after* applying that delta.
67
+ """
68
+
69
+ parts = []
70
+
71
+ current_position = deepcopy(start_position)
72
+
73
+ if start_position.y != end_position.y:
74
+ while current_position.y != end_position.y:
75
+ offset = randint(5, 20)
76
+
77
+ if start_position.y > end_position.y:
78
+ offset *= -1
79
+
80
+ if start_position.y < end_position.y:
81
+ if current_position.y + offset > end_position.y:
82
+ offset = end_position.y - current_position.y
83
+ elif start_position.y > end_position.y:
84
+ if current_position.y + offset < end_position.y:
85
+ offset = end_position.y - current_position.y
86
+
87
+ current_position.y += offset
88
+ parts.append(
89
+ ScrollPart(
90
+ point=deepcopy(current_position),
91
+ delta=ScrollDelta(x=0, y=offset),
92
+ duration=randint(1, 4)
93
+ )
94
+ )
95
+
96
+ if start_position.x != end_position.x:
97
+ while current_position.x != end_position.x:
98
+ offset = randint(5, 20)
99
+
100
+ if start_position.x > end_position.x:
101
+ offset *= -1
102
+
103
+ if start_position.x <= end_position.x:
104
+ if current_position.x + offset > end_position.x:
105
+ offset = end_position.x - current_position.x
106
+ elif start_position.x > end_position.x:
107
+ if current_position.x + offset < end_position.x:
108
+ offset = current_position.x - end_position.x
109
+
110
+ current_position.x += offset
111
+ parts.append(
112
+ ScrollPart(
113
+ point=deepcopy(current_position),
114
+ delta=ScrollDelta(x=offset, y=0),
115
+ duration=randint(1, 4)
116
+ )
117
+ )
118
+
119
+ return parts
120
+
121
+
122
+ def move_to_parts(start_position: Point, end_position: Point) -> List[MovePart]:
123
+ """
124
+ Calculates a sequence of smaller move steps with durations for human-like mouse movement.
125
+
126
+ Generates a path between a start and end point that deviates slightly from a
127
+ straight line using a sinusoidal function, simulating more natural mouse movement.
128
+ The path is broken into segments, each represented by a `MovePart` object specifying
129
+ the target point for that segment, the offset from the previous point, and a random duration.
130
+
131
+ Args:
132
+ start_position (Point): The starting coordinates for the movement.
133
+ end_position (Point): The target coordinates for the movement.
134
+
135
+ Returns:
136
+ List[MovePart]: A List of `MovePart` objects representing the sequence of mouse
137
+ movements and their associated durations. Each `MovePart` indicates
138
+ the `point` to move to, the `offset` from the previous point,
139
+ and the `duration` for that movement segment.
140
+ """
141
+
142
+ def get_new_position():
143
+ """Calculates random horizontal and vertical amplitudes for deviation."""
144
+
145
+ linear_progress = step.index / len(steps)
146
+
147
+ deviation_x = step.amplitude_x * math.sin(linear_progress * 2 * math.pi)
148
+ current_x_linear = start_position.x + (end_position.x - start_position.x) * linear_progress
149
+
150
+ deviation_y = step.amplitude_y * math.cos(linear_progress * 2 * math.pi)
151
+ current_y_linear = start_position.y + (end_position.y - start_position.y) * linear_progress
152
+
153
+ return Point(
154
+ x=int(current_x_linear + deviation_x),
155
+ y=int(current_y_linear + deviation_y)
156
+ )
157
+
158
+ def get_amplitude():
159
+ """Generates a sequence of internal _MoveStep objects."""
160
+
161
+ amplitude_x = randint(10, 20)
162
+ amplitude_y = randint(10, 20)
163
+
164
+ if start_position.x > end_position.x:
165
+ amplitude_x *= -1
166
+
167
+ if start_position.y > end_position.y:
168
+ amplitude_y *= -1
169
+
170
+ return amplitude_x, amplitude_y
171
+
172
+ def calculate_steps():
173
+ """Calculates the target point for a move step, including sinusoidal deviation."""
174
+
175
+ steps_ = []
176
+ current_point = deepcopy(start_position)
177
+ index = 0
178
+
179
+ while current_point != end_position:
180
+ amplitude_x, amplitude_y = get_amplitude()
181
+ steps_.append(MoveStep(amplitude_x=amplitude_x, amplitude_y=amplitude_y, index=index))
182
+
183
+ index += 1
184
+
185
+ if start_position.x <= end_position.x:
186
+ current_point.x += amplitude_x if current_point.x + amplitude_x <= end_position.x else end_position.x - current_point.x
187
+ else:
188
+ current_point.x += amplitude_x if current_point.x + amplitude_x >= end_position.x else end_position.x - current_point.x
189
+
190
+ if start_position.y <= end_position.y:
191
+ current_point.y += amplitude_y if current_point.y + amplitude_y <= end_position.y else end_position.y - current_point.y
192
+ else:
193
+ current_point.y += amplitude_y if current_point.y + amplitude_y >= end_position.y else end_position.y - current_point.y
194
+
195
+ return steps_
196
+
197
+ parts = []
198
+ steps = calculate_steps()
199
+ previous_position = deepcopy(start_position)
200
+
201
+ for step in steps:
202
+ new_position = get_new_position()
203
+
204
+ if start_position.x <= end_position.x:
205
+ new_position.x = int(new_position.x if new_position.x < end_position.x else end_position.x)
206
+ else:
207
+ new_position.x = int(new_position.x if new_position.x > end_position.x else end_position.x)
208
+
209
+ if start_position.y <= end_position.y:
210
+ new_position.y = int(new_position.y if new_position.y < end_position.y else end_position.y)
211
+ else:
212
+ new_position.y = int(new_position.y if new_position.y > end_position.y else end_position.y)
213
+
214
+ parts.append(
215
+ MovePart(
216
+ point=new_position,
217
+ offset=MoveOffset(
218
+ x=new_position.x - previous_position.x,
219
+ y=new_position.y - previous_position.y
220
+ ),
221
+ duration=randint(1, 4)
222
+ )
223
+ )
224
+
225
+ previous_position = deepcopy(new_position)
226
+
227
+ if parts[-1].point == end_position:
228
+ break
229
+
230
+ if parts[-1].point != end_position:
231
+ parts.append(
232
+ MovePart(
233
+ point=end_position,
234
+ offset=MoveOffset(
235
+ x=end_position.x - previous_position.x,
236
+ y=end_position.y - previous_position.y
237
+ ),
238
+ duration=randint(1, 4)
239
+ )
240
+ )
241
+
242
+ return parts