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,156 @@
1
+ import trio
2
+ from osn_selenium.base_mixin import TrioThreadMixin
3
+ from typing import (
4
+ Any,
5
+ Callable,
6
+ Dict,
7
+ List,
8
+ Optional
9
+ )
10
+ from osn_selenium.executors.unified.cdp.target import (
11
+ UnifiedTargetCDPExecutor
12
+ )
13
+ from osn_selenium.abstract.executors.cdp.target import (
14
+ AbstractTargetCDPExecutor
15
+ )
16
+
17
+
18
+ __all__ = ["TargetCDPExecutor"]
19
+
20
+
21
+ class TargetCDPExecutor(UnifiedTargetCDPExecutor, TrioThreadMixin, AbstractTargetCDPExecutor):
22
+ def __init__(
23
+ self,
24
+ execute_function: Callable[[str, Dict[str, Any]], Any],
25
+ lock: trio.Lock,
26
+ limiter: trio.CapacityLimiter
27
+ ):
28
+ UnifiedTargetCDPExecutor.__init__(self, execute_function=execute_function)
29
+
30
+ TrioThreadMixin.__init__(self, lock=lock, limiter=limiter)
31
+
32
+ async def activate_target(self, target_id: str) -> None:
33
+ return await self.sync_to_trio(sync_function=self._activate_target_impl)(target_id=target_id)
34
+
35
+ async def attach_to_browser_target(self) -> str:
36
+ return await self.sync_to_trio(sync_function=self._attach_to_browser_target_impl)()
37
+
38
+ async def attach_to_target(self, target_id: str, flatten: Optional[bool] = None) -> str:
39
+ return await self.sync_to_trio(sync_function=self._attach_to_target_impl)(target_id=target_id, flatten=flatten)
40
+
41
+ async def auto_attach_related(
42
+ self,
43
+ target_id: str,
44
+ wait_for_debugger_on_start: bool,
45
+ filter_: Optional[List[Dict[str, Any]]] = None
46
+ ) -> None:
47
+ return await self.sync_to_trio(sync_function=self._auto_attach_related_impl)(
48
+ target_id=target_id,
49
+ wait_for_debugger_on_start=wait_for_debugger_on_start,
50
+ filter_=filter_
51
+ )
52
+
53
+ async def close_target(self, target_id: str) -> bool:
54
+ return await self.sync_to_trio(sync_function=self._close_target_impl)(target_id=target_id)
55
+
56
+ async def create_browser_context(
57
+ self,
58
+ dispose_on_detach: Optional[bool] = None,
59
+ proxy_server: Optional[str] = None,
60
+ proxy_bypass_list: Optional[str] = None,
61
+ origins_with_universal_network_access: Optional[List[str]] = None
62
+ ) -> str:
63
+ return await self.sync_to_trio(sync_function=self._create_browser_context_impl)(
64
+ dispose_on_detach=dispose_on_detach,
65
+ proxy_server=proxy_server,
66
+ proxy_bypass_list=proxy_bypass_list,
67
+ origins_with_universal_network_access=origins_with_universal_network_access
68
+ )
69
+
70
+ async def create_target(
71
+ self,
72
+ url: str,
73
+ left: Optional[int] = None,
74
+ top: Optional[int] = None,
75
+ width: Optional[int] = None,
76
+ height: Optional[int] = None,
77
+ window_state: Optional[str] = None,
78
+ browser_context_id: Optional[str] = None,
79
+ enable_begin_frame_control: Optional[bool] = None,
80
+ new_window: Optional[bool] = None,
81
+ background: Optional[bool] = None,
82
+ for_tab: Optional[bool] = None,
83
+ hidden: Optional[bool] = None
84
+ ) -> str:
85
+ return await self.sync_to_trio(sync_function=self._create_target_impl)(
86
+ url=url,
87
+ left=left,
88
+ top=top,
89
+ width=width,
90
+ height=height,
91
+ window_state=window_state,
92
+ browser_context_id=browser_context_id,
93
+ enable_begin_frame_control=enable_begin_frame_control,
94
+ new_window=new_window,
95
+ background=background,
96
+ for_tab=for_tab,
97
+ hidden=hidden
98
+ )
99
+
100
+ async def detach_from_target(self, session_id: Optional[str] = None, target_id: Optional[str] = None) -> None:
101
+ return await self.sync_to_trio(sync_function=self._detach_from_target_impl)(session_id=session_id, target_id=target_id)
102
+
103
+ async def dispose_browser_context(self, browser_context_id: str) -> None:
104
+ return await self.sync_to_trio(sync_function=self._dispose_browser_context_impl)(browser_context_id=browser_context_id)
105
+
106
+ async def expose_dev_tools_protocol(
107
+ self,
108
+ target_id: str,
109
+ binding_name: Optional[str] = None,
110
+ inherit_permissions: Optional[bool] = None
111
+ ) -> None:
112
+ return await self.sync_to_trio(sync_function=self._expose_dev_tools_protocol_impl)(
113
+ target_id=target_id,
114
+ binding_name=binding_name,
115
+ inherit_permissions=inherit_permissions
116
+ )
117
+
118
+ async def get_browser_contexts(self) -> List[str]:
119
+ return await self.sync_to_trio(sync_function=self._get_browser_contexts_impl)()
120
+
121
+ async def get_target_info(self, target_id: Optional[str] = None) -> Dict[str, Any]:
122
+ return await self.sync_to_trio(sync_function=self._get_target_info_impl)(target_id=target_id)
123
+
124
+ async def get_targets(self, filter_: Optional[List[Dict[str, Any]]] = None) -> List[Dict[str, Any]]:
125
+ return await self.sync_to_trio(sync_function=self._get_targets_impl)(filter_=filter_)
126
+
127
+ async def open_dev_tools(self, target_id: str) -> str:
128
+ return await self.sync_to_trio(sync_function=self._open_dev_tools_impl)(target_id=target_id)
129
+
130
+ async def send_message_to_target(
131
+ self,
132
+ message: str,
133
+ session_id: Optional[str] = None,
134
+ target_id: Optional[str] = None
135
+ ) -> None:
136
+ return await self.sync_to_trio(sync_function=self._send_message_to_target_impl)(message=message, session_id=session_id, target_id=target_id)
137
+
138
+ async def set_auto_attach(
139
+ self,
140
+ auto_attach: bool,
141
+ wait_for_debugger_on_start: bool,
142
+ flatten: Optional[bool] = None,
143
+ filter_: Optional[List[Dict[str, Any]]] = None
144
+ ) -> None:
145
+ return await self.sync_to_trio(sync_function=self._set_auto_attach_impl)(
146
+ auto_attach=auto_attach,
147
+ wait_for_debugger_on_start=wait_for_debugger_on_start,
148
+ flatten=flatten,
149
+ filter_=filter_
150
+ )
151
+
152
+ async def set_discover_targets(self, discover: bool, filter_: Optional[List[Dict[str, Any]]] = None) -> None:
153
+ return await self.sync_to_trio(sync_function=self._set_discover_targets_impl)(discover=discover, filter_=filter_)
154
+
155
+ async def set_remote_locations(self, locations: List[Dict[str, Any]]) -> None:
156
+ return await self.sync_to_trio(sync_function=self._set_remote_locations_impl)(locations=locations)
@@ -0,0 +1,34 @@
1
+ import trio
2
+ from typing import Any, Callable, Dict
3
+ from osn_selenium.base_mixin import TrioThreadMixin
4
+ from osn_selenium.executors.unified.cdp.tethering import (
5
+ UnifiedTetheringCDPExecutor
6
+ )
7
+ from osn_selenium.abstract.executors.cdp.tethering import (
8
+ AbstractTetheringCDPExecutor
9
+ )
10
+
11
+
12
+ __all__ = ["TetheringCDPExecutor"]
13
+
14
+
15
+ class TetheringCDPExecutor(
16
+ UnifiedTetheringCDPExecutor,
17
+ TrioThreadMixin,
18
+ AbstractTetheringCDPExecutor
19
+ ):
20
+ def __init__(
21
+ self,
22
+ execute_function: Callable[[str, Dict[str, Any]], Any],
23
+ lock: trio.Lock,
24
+ limiter: trio.CapacityLimiter
25
+ ):
26
+ UnifiedTetheringCDPExecutor.__init__(self, execute_function=execute_function)
27
+
28
+ TrioThreadMixin.__init__(self, lock=lock, limiter=limiter)
29
+
30
+ async def bind(self, port: int) -> None:
31
+ return await self.sync_to_trio(sync_function=self._bind_impl)(port=port)
32
+
33
+ async def unbind(self, port: int) -> None:
34
+ return await self.sync_to_trio(sync_function=self._unbind_impl)(port=port)
@@ -0,0 +1,71 @@
1
+ import trio
2
+ from osn_selenium.base_mixin import TrioThreadMixin
3
+ from typing import (
4
+ Any,
5
+ Callable,
6
+ Dict,
7
+ List,
8
+ Optional,
9
+ Tuple
10
+ )
11
+ from osn_selenium.executors.unified.cdp.tracing import (
12
+ UnifiedTracingCDPExecutor
13
+ )
14
+ from osn_selenium.abstract.executors.cdp.tracing import (
15
+ AbstractTracingCDPExecutor
16
+ )
17
+
18
+
19
+ __all__ = ["TracingCDPExecutor"]
20
+
21
+
22
+ class TracingCDPExecutor(UnifiedTracingCDPExecutor, TrioThreadMixin, AbstractTracingCDPExecutor):
23
+ def __init__(
24
+ self,
25
+ execute_function: Callable[[str, Dict[str, Any]], Any],
26
+ lock: trio.Lock,
27
+ limiter: trio.CapacityLimiter
28
+ ):
29
+ UnifiedTracingCDPExecutor.__init__(self, execute_function=execute_function)
30
+
31
+ TrioThreadMixin.__init__(self, lock=lock, limiter=limiter)
32
+
33
+ async def end(self) -> None:
34
+ return await self.sync_to_trio(sync_function=self._end_impl)()
35
+
36
+ async def get_categories(self) -> List[str]:
37
+ return await self.sync_to_trio(sync_function=self._get_categories_impl)()
38
+
39
+ async def record_clock_sync_marker(self, sync_id: str) -> None:
40
+ return await self.sync_to_trio(sync_function=self._record_clock_sync_marker_impl)(sync_id=sync_id)
41
+
42
+ async def request_memory_dump(
43
+ self,
44
+ deterministic: Optional[bool] = None,
45
+ level_of_detail: Optional[str] = None
46
+ ) -> Tuple[str, bool]:
47
+ return await self.sync_to_trio(sync_function=self._request_memory_dump_impl)(deterministic=deterministic, level_of_detail=level_of_detail)
48
+
49
+ async def start(
50
+ self,
51
+ categories: Optional[str] = None,
52
+ options: Optional[str] = None,
53
+ buffer_usage_reporting_interval: Optional[float] = None,
54
+ transfer_mode: Optional[str] = None,
55
+ stream_format: Optional[str] = None,
56
+ stream_compression: Optional[str] = None,
57
+ trace_config: Optional[Dict[str, Any]] = None,
58
+ perfetto_config: Optional[str] = None,
59
+ tracing_backend: Optional[str] = None
60
+ ) -> None:
61
+ return await self.sync_to_trio(sync_function=self._start_impl)(
62
+ categories=categories,
63
+ options=options,
64
+ buffer_usage_reporting_interval=buffer_usage_reporting_interval,
65
+ transfer_mode=transfer_mode,
66
+ stream_format=stream_format,
67
+ stream_compression=stream_compression,
68
+ trace_config=trace_config,
69
+ perfetto_config=perfetto_config,
70
+ tracing_backend=tracing_backend
71
+ )
@@ -0,0 +1,37 @@
1
+ import trio
2
+ from typing import Any, Callable, Dict
3
+ from osn_selenium.base_mixin import TrioThreadMixin
4
+ from osn_selenium.executors.unified.cdp.web_audio import (
5
+ UnifiedWebAudioCDPExecutor
6
+ )
7
+ from osn_selenium.abstract.executors.cdp.web_audio import (
8
+ AbstractWebAudioCDPExecutor
9
+ )
10
+
11
+
12
+ __all__ = ["WebAudioCDPExecutor"]
13
+
14
+
15
+ class WebAudioCDPExecutor(
16
+ UnifiedWebAudioCDPExecutor,
17
+ TrioThreadMixin,
18
+ AbstractWebAudioCDPExecutor
19
+ ):
20
+ def __init__(
21
+ self,
22
+ execute_function: Callable[[str, Dict[str, Any]], Any],
23
+ lock: trio.Lock,
24
+ limiter: trio.CapacityLimiter
25
+ ):
26
+ UnifiedWebAudioCDPExecutor.__init__(self, execute_function=execute_function)
27
+
28
+ TrioThreadMixin.__init__(self, lock=lock, limiter=limiter)
29
+
30
+ async def disable(self) -> None:
31
+ return await self.sync_to_trio(sync_function=self._disable_impl)()
32
+
33
+ async def enable(self) -> None:
34
+ return await self.sync_to_trio(sync_function=self._enable_impl)()
35
+
36
+ async def get_realtime_data(self, context_id: str) -> Dict[str, Any]:
37
+ return await self.sync_to_trio(sync_function=self._get_realtime_data_impl)(context_id=context_id)
@@ -0,0 +1,95 @@
1
+ import trio
2
+ from osn_selenium.base_mixin import TrioThreadMixin
3
+ from typing import (
4
+ Any,
5
+ Callable,
6
+ Dict,
7
+ List,
8
+ Optional
9
+ )
10
+ from osn_selenium.executors.unified.cdp.web_authn import (
11
+ UnifiedWebAuthnCDPExecutor
12
+ )
13
+ from osn_selenium.abstract.executors.cdp.web_authn import (
14
+ AbstractWebAuthnCDPExecutor
15
+ )
16
+
17
+
18
+ __all__ = ["WebAuthnCDPExecutor"]
19
+
20
+
21
+ class WebAuthnCDPExecutor(
22
+ UnifiedWebAuthnCDPExecutor,
23
+ TrioThreadMixin,
24
+ AbstractWebAuthnCDPExecutor
25
+ ):
26
+ def __init__(
27
+ self,
28
+ execute_function: Callable[[str, Dict[str, Any]], Any],
29
+ lock: trio.Lock,
30
+ limiter: trio.CapacityLimiter
31
+ ):
32
+ UnifiedWebAuthnCDPExecutor.__init__(self, execute_function=execute_function)
33
+
34
+ TrioThreadMixin.__init__(self, lock=lock, limiter=limiter)
35
+
36
+ async def add_credential(self, authenticator_id: str, credential: Dict[str, Any]) -> None:
37
+ return await self.sync_to_trio(sync_function=self._add_credential_impl)(authenticator_id=authenticator_id, credential=credential)
38
+
39
+ async def add_virtual_authenticator(self, options: Dict[str, Any]) -> str:
40
+ return await self.sync_to_trio(sync_function=self._add_virtual_authenticator_impl)(options=options)
41
+
42
+ async def clear_credentials(self, authenticator_id: str) -> None:
43
+ return await self.sync_to_trio(sync_function=self._clear_credentials_impl)(authenticator_id=authenticator_id)
44
+
45
+ async def disable(self) -> None:
46
+ return await self.sync_to_trio(sync_function=self._disable_impl)()
47
+
48
+ async def enable(self, enable_ui: Optional[bool] = None) -> None:
49
+ return await self.sync_to_trio(sync_function=self._enable_impl)(enable_ui=enable_ui)
50
+
51
+ async def get_credential(self, authenticator_id: str, credential_id: str) -> Dict[str, Any]:
52
+ return await self.sync_to_trio(sync_function=self._get_credential_impl)(authenticator_id=authenticator_id, credential_id=credential_id)
53
+
54
+ async def get_credentials(self, authenticator_id: str) -> List[Dict[str, Any]]:
55
+ return await self.sync_to_trio(sync_function=self._get_credentials_impl)(authenticator_id=authenticator_id)
56
+
57
+ async def remove_credential(self, authenticator_id: str, credential_id: str) -> None:
58
+ return await self.sync_to_trio(sync_function=self._remove_credential_impl)(authenticator_id=authenticator_id, credential_id=credential_id)
59
+
60
+ async def remove_virtual_authenticator(self, authenticator_id: str) -> None:
61
+ return await self.sync_to_trio(sync_function=self._remove_virtual_authenticator_impl)(authenticator_id=authenticator_id)
62
+
63
+ async def set_automatic_presence_simulation(self, authenticator_id: str, enabled: bool) -> None:
64
+ return await self.sync_to_trio(sync_function=self._set_automatic_presence_simulation_impl)(authenticator_id=authenticator_id, enabled=enabled)
65
+
66
+ async def set_credential_properties(
67
+ self,
68
+ authenticator_id: str,
69
+ credential_id: str,
70
+ backup_eligibility: Optional[bool] = None,
71
+ backup_state: Optional[bool] = None
72
+ ) -> None:
73
+ return await self.sync_to_trio(sync_function=self._set_credential_properties_impl)(
74
+ authenticator_id=authenticator_id,
75
+ credential_id=credential_id,
76
+ backup_eligibility=backup_eligibility,
77
+ backup_state=backup_state
78
+ )
79
+
80
+ async def set_response_override_bits(
81
+ self,
82
+ authenticator_id: str,
83
+ is_bogus_signature: Optional[bool] = None,
84
+ is_bad_uv: Optional[bool] = None,
85
+ is_bad_up: Optional[bool] = None
86
+ ) -> None:
87
+ return await self.sync_to_trio(sync_function=self._set_response_override_bits_impl)(
88
+ authenticator_id=authenticator_id,
89
+ is_bogus_signature=is_bogus_signature,
90
+ is_bad_uv=is_bad_uv,
91
+ is_bad_up=is_bad_up
92
+ )
93
+
94
+ async def set_user_verified(self, authenticator_id: str, is_user_verified: bool) -> None:
95
+ return await self.sync_to_trio(sync_function=self._set_user_verified_impl)(authenticator_id=authenticator_id, is_user_verified=is_user_verified)
@@ -0,0 +1,90 @@
1
+ import trio
2
+ from osn_selenium.base_mixin import TrioThreadMixin
3
+ from osn_selenium.javascript.models import JS_Scripts
4
+ from typing import (
5
+ Any,
6
+ Callable,
7
+ Dict,
8
+ Optional
9
+ )
10
+ from osn_selenium.javascript.fingerprint import FingerprintSettings
11
+ from osn_selenium.instances.trio_threads.web_element import WebElement
12
+ from osn_selenium.executors.unified.javascript import UnifiedJSExecutor
13
+ from osn_selenium.models import (
14
+ Point,
15
+ Position,
16
+ Rectangle,
17
+ Size
18
+ )
19
+ from osn_selenium.abstract.executors.javascript import AbstractJSExecutor
20
+
21
+
22
+ __all__ = ["JSExecutor"]
23
+
24
+
25
+ class JSExecutor(UnifiedJSExecutor, TrioThreadMixin, AbstractJSExecutor):
26
+ """
27
+ An asynchronous JavaScript executor that integrates Trio's threading mixin for thread-safe operations.
28
+ """
29
+
30
+ def __init__(
31
+ self,
32
+ execute_function: Callable[[str, Any], Any],
33
+ lock: trio.Lock,
34
+ limiter: trio.CapacityLimiter
35
+ ):
36
+ """
37
+ Initialize the JSExecutor with Trio synchronization primitives and execution logic.
38
+
39
+ Args:
40
+ execute_function (Callable[[str, Any], Any]): The function used to run JavaScript code.
41
+ lock (trio.Lock): Trio lock for synchronizing access.
42
+ limiter (trio.CapacityLimiter): Trio limiter for controlling concurrency.
43
+ """
44
+
45
+ UnifiedJSExecutor.__init__(self, execute_function=execute_function)
46
+
47
+ TrioThreadMixin.__init__(self, lock=lock, limiter=limiter)
48
+
49
+ async def check_element_in_viewport(self, element: WebElement) -> bool:
50
+ return await self.sync_to_trio(sync_function=self._check_element_in_viewport_impl)(element=element)
51
+
52
+ async def execute(self, script: str, *args: Any) -> Any:
53
+ return await self.sync_to_trio(sync_function=self._execute_impl)(script, *args)
54
+
55
+ async def get_document_scroll_size(self) -> Size:
56
+ return await self.sync_to_trio(sync_function=self._get_document_scroll_size_impl)()
57
+
58
+ async def get_element_css_style(self, element: WebElement) -> Dict[str, str]:
59
+ return await self.sync_to_trio(sync_function=self._get_element_css_style_impl)(element=element)
60
+
61
+ async def get_element_rect_in_viewport(self, element: WebElement) -> Optional[Rectangle]:
62
+ return await self.sync_to_trio(sync_function=self._get_element_rect_in_viewport_impl)(element=element)
63
+
64
+ async def get_random_element_point(self, element: WebElement) -> Optional[Point]:
65
+ return await self.sync_to_trio(sync_function=self._get_random_element_point_impl)(element=element)
66
+
67
+ async def get_random_element_point_in_viewport(self, element: WebElement, step: int = 1) -> Optional[Position]:
68
+ return await self.sync_to_trio(sync_function=self._get_random_element_point_in_viewport_impl)(element=element, step=step)
69
+
70
+ async def get_viewport_position(self) -> Position:
71
+ return await self.sync_to_trio(sync_function=self._get_viewport_position_impl)()
72
+
73
+ async def get_viewport_rect(self) -> Rectangle:
74
+ return await self.sync_to_trio(sync_function=self._get_viewport_rect_impl)()
75
+
76
+ async def get_viewport_size(self) -> Size:
77
+ return await self.sync_to_trio(sync_function=self._get_viewport_size_impl)()
78
+
79
+ async def open_new_tab(self, link: str = "") -> None:
80
+ await self.sync_to_trio(sync_function=self._open_new_tab_impl)(link=link)
81
+
82
+ @property
83
+ def scripts(self) -> JS_Scripts:
84
+ return self._scripts_impl
85
+
86
+ async def start_fingerprint_detection(self, fingerprint_settings: FingerprintSettings) -> None:
87
+ await self.sync_to_trio(sync_function=self._start_fingerprint_detection_impl)(fingerprint_settings=fingerprint_settings)
88
+
89
+ async def stop_window_loading(self) -> None:
90
+ await self.sync_to_trio(sync_function=self._stop_window_loading_impl)()
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,81 @@
1
+ from typing import (
2
+ Any,
3
+ Callable,
4
+ Dict,
5
+ List,
6
+ Optional
7
+ )
8
+
9
+
10
+ __all__ = ["UnifiedAccessibilityCDPExecutor"]
11
+
12
+
13
+ class UnifiedAccessibilityCDPExecutor:
14
+ def __init__(self, execute_function: Callable[[str, Dict[str, Any]], Any]):
15
+ self._execute_function = execute_function
16
+
17
+ def _disable_impl(self) -> None:
18
+ return self._execute_function("Accessibility.disable", {})
19
+
20
+ def _enable_impl(self) -> None:
21
+ return self._execute_function("Accessibility.enable", {})
22
+
23
+ def _get_ax_node_and_ancestors_impl(
24
+ self,
25
+ node_id: Optional[int] = None,
26
+ backend_node_id: Optional[int] = None,
27
+ object_id: Optional[str] = None
28
+ ) -> List[Dict[str, Any]]:
29
+ return self._execute_function(
30
+ "Accessibility.getAXNodeAndAncestors",
31
+ {
32
+ "node_id": node_id,
33
+ "backend_node_id": backend_node_id,
34
+ "object_id": object_id
35
+ }
36
+ )
37
+
38
+ def _get_child_ax_nodes_impl(self, id_: str, frame_id: Optional[str] = None) -> List[Dict[str, Any]]:
39
+ return self._execute_function("Accessibility.getChildAXNodes", {"id_": id_, "frame_id": frame_id})
40
+
41
+ def _get_full_ax_tree_impl(self, depth: Optional[int] = None, frame_id: Optional[str] = None) -> List[Dict[str, Any]]:
42
+ return self._execute_function("Accessibility.getFullAXTree", {"depth": depth, "frame_id": frame_id})
43
+
44
+ def _get_partial_ax_tree_impl(
45
+ self,
46
+ node_id: Optional[int] = None,
47
+ backend_node_id: Optional[int] = None,
48
+ object_id: Optional[str] = None,
49
+ fetch_relatives: Optional[bool] = None
50
+ ) -> List[Dict[str, Any]]:
51
+ return self._execute_function(
52
+ "Accessibility.getPartialAXTree",
53
+ {
54
+ "node_id": node_id,
55
+ "backend_node_id": backend_node_id,
56
+ "object_id": object_id,
57
+ "fetch_relatives": fetch_relatives
58
+ }
59
+ )
60
+
61
+ def _get_root_ax_node_impl(self, frame_id: Optional[str] = None) -> Dict[str, Any]:
62
+ return self._execute_function("Accessibility.getRootAXNode", {"frame_id": frame_id})
63
+
64
+ def _query_ax_tree_impl(
65
+ self,
66
+ node_id: Optional[int] = None,
67
+ backend_node_id: Optional[int] = None,
68
+ object_id: Optional[str] = None,
69
+ accessible_name: Optional[str] = None,
70
+ role: Optional[str] = None
71
+ ) -> List[Dict[str, Any]]:
72
+ return self._execute_function(
73
+ "Accessibility.queryAXTree",
74
+ {
75
+ "node_id": node_id,
76
+ "backend_node_id": backend_node_id,
77
+ "object_id": object_id,
78
+ "accessible_name": accessible_name,
79
+ "role": role
80
+ }
81
+ )
@@ -0,0 +1,50 @@
1
+ from typing import (
2
+ Any,
3
+ Callable,
4
+ Dict,
5
+ List
6
+ )
7
+
8
+
9
+ __all__ = ["UnifiedAnimationCDPExecutor"]
10
+
11
+
12
+ class UnifiedAnimationCDPExecutor:
13
+ def __init__(self, execute_function: Callable[[str, Dict[str, Any]], Any]):
14
+ self._execute_function = execute_function
15
+
16
+ def _disable_impl(self) -> None:
17
+ return self._execute_function("Animation.disable", {})
18
+
19
+ def _enable_impl(self) -> None:
20
+ return self._execute_function("Animation.enable", {})
21
+
22
+ def _get_current_time_impl(self, id_: str) -> float:
23
+ return self._execute_function("Animation.getCurrentTime", {"id_": id_})
24
+
25
+ def _get_playback_rate_impl(self) -> float:
26
+ return self._execute_function("Animation.getPlaybackRate", {})
27
+
28
+ def _release_animations_impl(self, animations: List[str]) -> None:
29
+ return self._execute_function("Animation.releaseAnimations", {"animations": animations})
30
+
31
+ def _resolve_animation_impl(self, animation_id: str) -> Dict[str, Any]:
32
+ return self._execute_function("Animation.resolveAnimation", {"animation_id": animation_id})
33
+
34
+ def _seek_animations_impl(self, animations: List[str], current_time: float) -> None:
35
+ return self._execute_function(
36
+ "Animation.seekAnimations",
37
+ {"animations": animations, "current_time": current_time}
38
+ )
39
+
40
+ def _set_paused_impl(self, animations: List[str], paused: bool) -> None:
41
+ return self._execute_function("Animation.setPaused", {"animations": animations, "paused": paused})
42
+
43
+ def _set_playback_rate_impl(self, playback_rate: float) -> None:
44
+ return self._execute_function("Animation.setPlaybackRate", {"playback_rate": playback_rate})
45
+
46
+ def _set_timing_impl(self, animation_id: str, duration: float, delay: float) -> None:
47
+ return self._execute_function(
48
+ "Animation.setTiming",
49
+ {"animation_id": animation_id, "duration": duration, "delay": delay}
50
+ )
@@ -0,0 +1,45 @@
1
+ from typing import (
2
+ Any,
3
+ Callable,
4
+ Dict,
5
+ List,
6
+ Optional,
7
+ Tuple
8
+ )
9
+
10
+
11
+ __all__ = ["UnifiedAuditsCDPExecutor"]
12
+
13
+
14
+ class UnifiedAuditsCDPExecutor:
15
+ def __init__(self, execute_function: Callable[[str, Dict[str, Any]], Any]):
16
+ self._execute_function = execute_function
17
+
18
+ def _check_contrast_impl(self, report_aaa: Optional[bool] = None) -> None:
19
+ return self._execute_function("Audits.checkContrast", {"report_aaa": report_aaa})
20
+
21
+ def _check_forms_issues_impl(self) -> List[Dict[str, Any]]:
22
+ return self._execute_function("Audits.checkFormsIssues", {})
23
+
24
+ def _disable_impl(self) -> None:
25
+ return self._execute_function("Audits.disable", {})
26
+
27
+ def _enable_impl(self) -> None:
28
+ return self._execute_function("Audits.enable", {})
29
+
30
+ def _get_encoded_response_impl(
31
+ self,
32
+ request_id: str,
33
+ encoding: str,
34
+ quality: Optional[float] = None,
35
+ size_only: Optional[bool] = None
36
+ ) -> Tuple[Optional[str], int, int]:
37
+ return self._execute_function(
38
+ "Audits.getEncodedResponse",
39
+ {
40
+ "request_id": request_id,
41
+ "encoding": encoding,
42
+ "quality": quality,
43
+ "size_only": size_only
44
+ }
45
+ )