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
@@ -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,104 @@
1
+ import importlib
2
+ from typing import TYPE_CHECKING, Any, Dict, Callable
3
+
4
+ import trio
5
+
6
+ from osn_selenium.abstract.executors.cdp import AbstractCDPExecutor
7
+ from osn_selenium.exceptions.dependencies import CDPPackageError
8
+
9
+
10
+ __all__ = ["CDPExecutor"]
11
+
12
+ if TYPE_CHECKING:
13
+ from osn_selenium_cdp_v140.executors.trio_threads import CDP140Executor
14
+ from osn_selenium_cdp_v141.executors.trio_threads import CDP141Executor
15
+ from osn_selenium_cdp_v142.executors.trio_threads import CDP142Executor
16
+ from osn_selenium_cdp_v143.executors.trio_threads import CDP143Executor
17
+ from osn_selenium_cdp_v144.executors.trio_threads import CDP144Executor
18
+
19
+
20
+ class CDPExecutor(AbstractCDPExecutor):
21
+ """
22
+ Global CDP executor router.
23
+ Handles lazy loading and version-specific package validation.
24
+ """
25
+
26
+ def __init__(self, execute_function: Callable[[str, Dict[str, Any]], Any], lock: trio.Lock, limiter: trio.CapacityLimiter):
27
+ self._execute_function = execute_function
28
+ self._lock = lock
29
+ self._limiter = limiter
30
+ self._v140 = None
31
+ self._v141 = None
32
+ self._v142 = None
33
+ self._v143 = None
34
+ self._v144 = None
35
+
36
+ def get(self, version: int) -> Any:
37
+ """
38
+ Dynamically loads and returns the CDP executor for a specific version.
39
+
40
+ Args:
41
+ version (int): The CDP version number.
42
+
43
+ Returns:
44
+ Any: The version-specific executor instance.
45
+
46
+ Raises:
47
+ CDPPackageError: If the version-specific package is not installed.
48
+ """
49
+
50
+ try:
51
+ if getattr(self, f"_v{version}", None) is None:
52
+ module = importlib.import_module(f"osn_selenium_cdp_v{version}.executors.trio_threads")
53
+ executor_type = getattr(module, f"CDP{version}Executor")
54
+
55
+ setattr(self, f"_v{version}", executor_type(execute_function=self._execute_function, lock=self._lock, limiter=self._limiter))
56
+
57
+ return getattr(self, f"_v{version}", None)
58
+ except ImportError:
59
+ raise CDPPackageError(version=version)
60
+
61
+ @property
62
+ def v140(self) -> "CDP140Executor":
63
+ """
64
+ Get or initialize the executor for CDP version 140.
65
+ Raises CDPPackageError if the version-specific package is not installed.
66
+ """
67
+
68
+ return self.get(version=140)
69
+
70
+ @property
71
+ def v141(self) -> "CDP141Executor":
72
+ """
73
+ Get or initialize the executor for CDP version 141.
74
+ Raises CDPPackageError if the version-specific package is not installed.
75
+ """
76
+
77
+ return self.get(version=141)
78
+
79
+ @property
80
+ def v142(self) -> "CDP142Executor":
81
+ """
82
+ Get or initialize the executor for CDP version 142.
83
+ Raises CDPPackageError if the version-specific package is not installed.
84
+ """
85
+
86
+ return self.get(version=142)
87
+
88
+ @property
89
+ def v143(self) -> "CDP143Executor":
90
+ """
91
+ Get or initialize the executor for CDP version 143.
92
+ Raises CDPPackageError if the version-specific package is not installed.
93
+ """
94
+
95
+ return self.get(version=143)
96
+
97
+ @property
98
+ def v144(self) -> "CDP144Executor":
99
+ """
100
+ Get or initialize the executor for CDP version 144.
101
+ Raises CDPPackageError if the version-specific package is not installed.
102
+ """
103
+
104
+ return self.get(version=144)
@@ -0,0 +1,90 @@
1
+ import trio
2
+ from osn_selenium.trio_threads_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
+ )