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,438 @@
1
+ import trio
2
+ from osn_selenium.dev_tools.models import TargetData
3
+ from selenium.webdriver.common.bidi.cdp import CdpSession
4
+ from osn_selenium.dev_tools._wrappers import DevToolsPackage
5
+ from osn_selenium.dev_tools.logger.target import TargetLogger
6
+ from typing import (
7
+ Any,
8
+ Callable,
9
+ Coroutine,
10
+ Dict,
11
+ Optional,
12
+ Sequence,
13
+ TYPE_CHECKING,
14
+ Tuple
15
+ )
16
+ from osn_selenium.dev_tools._validators import (
17
+ validate_target_event_filter,
18
+ validate_type_filter
19
+ )
20
+ from osn_selenium.dev_tools.logger.models import (
21
+ CDPLoggerChannelStats,
22
+ CDPTargetLogEntry,
23
+ FingerprintLoggerChannelStats,
24
+ FingerprintTargetLogEntry
25
+ )
26
+
27
+
28
+ __all__ = ["BaseMixin"]
29
+
30
+ if TYPE_CHECKING:
31
+ from osn_selenium.dev_tools.target import DevToolsTarget
32
+ from osn_selenium.dev_tools.domains import DomainsSettings
33
+ from osn_selenium.dev_tools.settings import LoggerSettings
34
+ from osn_selenium.dev_tools._typehints import DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT
35
+
36
+
37
+ class BaseMixin:
38
+ """
39
+ Base mixin for DevToolsTarget providing initialization, properties, and logging functionality.
40
+
41
+ This class handles the core state of a DevTools target, including its data, logging channels,
42
+ filter configurations, and synchronization primitives.
43
+
44
+ Attributes:
45
+ target_data (TargetData): The essential data identifying the target (id, type, url, etc.).
46
+ devtools_package (DevToolsPackage): The wrapper for the DevTools protocol module.
47
+ websocket_url (Optional[str]): The WebSocket URL used to connect to this target.
48
+ exit_event (trio.Event): Event to signal global exit.
49
+ started_event (trio.Event): Event set when the target handling has started.
50
+ about_to_stop_event (trio.Event): Event set when the target is about to stop.
51
+ stopped_event (trio.Event): Event set when the target handling has fully stopped.
52
+ background_task_ended (Optional[trio.Event]): Event set when the background task completes.
53
+ _is_main_target (bool): Whether this is the primary target.
54
+ _logger_settings ("LoggerSettings"): Configuration for logging.
55
+ _domains_settings (Optional["DomainsSettings"]): Configuration for enabled domains and handlers.
56
+ _new_targets_filter_list (Sequence[Mapping[str, Any]]): Filters for discovering new targets.
57
+ _new_targets_buffer_size (int): Buffer size for new target events.
58
+ _nursery_object (trio.Nursery): Trio nursery for background tasks.
59
+ _target_background_task (Optional[devtools_background_func_type]): Optional background task to run.
60
+ _add_target_func (Callable): Callback to add a new target.
61
+ _remove_target_func (Callable): Callback to remove this target.
62
+ _add_cdp_log_func (Callable): Callback to record a CDP log entry.
63
+ _add_fingerprint_log_func (Callable): Callback to record a fingerprint log entry.
64
+ _fingerprint_injection_script (Optional[str]): JS script to inject into the target.
65
+ _new_targets_events_filters (Any): Validated filters for target events.
66
+ _cdp_target_type_log_accepted (bool): Whether CDP logging is enabled for this target type.
67
+ _cdp_log_stats (CDPLoggerChannelStats): Statistics for CDP logs.
68
+ _fingerprint_log_stats (FingerprintLoggerChannelStats): Statistics for fingerprint logs.
69
+ _logger_cdp_send_channel (Optional[trio.MemorySendChannel]): Channel to send CDP logs to the logger.
70
+ _logger_fingerprint_send_channel (Optional[trio.MemorySendChannel]): Channel to send fingerprint logs.
71
+ _logger (Optional[TargetLogger]): The logger instance for this target.
72
+ _cdp_session (Optional[CdpSession]): The active CDP session.
73
+ _new_target_receive_channel (Optional[Tuple[trio.MemoryReceiveChannel, trio.Event]]): Channel for new target events.
74
+ _detached_receive_channel (Optional[trio.MemoryReceiveChannel]): Channel for detach events.
75
+ _events_receive_channels (Dict[str, Tuple[trio.MemoryReceiveChannel, trio.Event]]): Channels for domain events.
76
+ """
77
+
78
+ def __init__(
79
+ self,
80
+ target_data: TargetData,
81
+ is_main_target: bool,
82
+ logger_settings: "LoggerSettings",
83
+ domains_settings: Optional["DomainsSettings"],
84
+ devtools_package: DevToolsPackage,
85
+ websocket_url: Optional[str],
86
+ new_targets_filter_list: Sequence[Dict[str, Any]],
87
+ new_targets_buffer_size: int,
88
+ nursery: trio.Nursery,
89
+ exit_event: trio.Event,
90
+ fingerprint_injection_script: Optional[str],
91
+ target_background_task: Optional["DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT"],
92
+ add_target_func: Callable[[Any], Coroutine[Any, Any, bool]],
93
+ remove_target_func: Callable[["DevToolsTarget"], Coroutine[Any, Any, Optional[bool]]],
94
+ add_cdp_log_func: Callable[[CDPTargetLogEntry], Coroutine[Any, Any, None]],
95
+ add_fingerprint_log_func: Callable[[FingerprintTargetLogEntry], Coroutine[Any, Any, None]],
96
+ ):
97
+ """
98
+ Initializes the BaseMixin.
99
+
100
+ Args:
101
+ target_data (TargetData): Information about the target.
102
+ is_main_target (bool): Whether this is the primary target.
103
+ logger_settings ("LoggerSettings"): Configuration for logging.
104
+ domains_settings (Optional["DomainsSettings"]): Configuration for enabled domains and handlers.
105
+ devtools_package (DevToolsPackage): Access to CDP commands and events.
106
+ websocket_url (Optional[str]): The debugger URL.
107
+ new_targets_filter_list (Sequence[Mapping[str, Any]]): Filters for discovering new targets.
108
+ new_targets_buffer_size (int): Buffer size for new target events.
109
+ nursery (trio.Nursery): Trio nursery for background tasks.
110
+ exit_event (trio.Event): Signal to stop all operations.
111
+ fingerprint_injection_script (Optional[str]): JS script to inject into the target.
112
+ target_background_task (Optional[devtools_background_func_type]): Optional background task to run.
113
+ add_target_func (Callable[[Any], Coroutine[Any, Any, bool]]): Callback to add a new target.
114
+ remove_target_func (Callable[[DevToolsTarget], Coroutine[Any, Any, Optional[bool]]]): Callback to remove this target.
115
+ add_cdp_log_func (Callable[[CDPTargetLogEntry], Coroutine[Any, Any, None]]): Callback to record a CDP log entry.
116
+ add_fingerprint_log_func (Callable[[FingerprintTargetLogEntry], Coroutine[Any, Any, None]]): Callback to record a fingerprint log entry.
117
+ """
118
+
119
+ self.target_data = target_data
120
+ self._is_main_target = is_main_target
121
+ self._logger_settings = logger_settings
122
+ self._domains_settings = domains_settings
123
+ self.devtools_package = devtools_package
124
+ self.websocket_url = websocket_url
125
+ self._new_targets_filter_list = new_targets_filter_list
126
+ self._new_targets_buffer_size = new_targets_buffer_size
127
+ self._nursery_object = nursery
128
+ self.exit_event = exit_event
129
+ self._target_background_task = target_background_task
130
+ self._add_target_func = add_target_func
131
+ self._remove_target_func = remove_target_func
132
+ self._add_cdp_log_func = add_cdp_log_func
133
+ self._add_fingerprint_log_func = add_fingerprint_log_func
134
+ self._fingerprint_injection_script = fingerprint_injection_script
135
+
136
+ self._new_targets_events_filters = validate_target_event_filter(filter_=new_targets_filter_list)
137
+
138
+ self._cdp_target_type_log_accepted = validate_type_filter(
139
+ type_=self.type_,
140
+ filter_mode=self._logger_settings.cdp_settings.target_type_filter_mode,
141
+ filter_instances=self._logger_settings.cdp_settings.target_type_filter
142
+ )
143
+
144
+ self._cdp_log_stats = CDPLoggerChannelStats(
145
+ target_id=target_data.target_id,
146
+ title=target_data.title,
147
+ url=target_data.url,
148
+ )
149
+
150
+ self._fingerprint_log_stats = FingerprintLoggerChannelStats(
151
+ target_id=target_data.target_id,
152
+ title=target_data.title,
153
+ url=target_data.url,
154
+ )
155
+
156
+ self.started_event = trio.Event()
157
+ self.about_to_stop_event = trio.Event()
158
+ self.background_task_ended: Optional[trio.Event] = None
159
+ self.stopped_event = trio.Event()
160
+ self._logger_cdp_send_channel: Optional[trio.MemorySendChannel[CDPTargetLogEntry]] = None
161
+ self._logger_fingerprint_send_channel: Optional[trio.MemorySendChannel[FingerprintTargetLogEntry]] = None
162
+ self._logger: Optional[TargetLogger] = None
163
+ self._cdp_session: Optional[CdpSession] = None
164
+ self._new_target_receive_channel: Optional[Tuple[trio.MemoryReceiveChannel, trio.Event]] = None
165
+ self._detached_receive_channel: Optional[trio.MemoryReceiveChannel] = None
166
+ self._events_receive_channels: Dict[str, Tuple[trio.MemoryReceiveChannel, trio.Event]] = {}
167
+
168
+ @property
169
+ def type_(self) -> Optional[str]:
170
+ """
171
+ Gets the type of the target (e.g., 'page', 'iframe').
172
+
173
+ Returns:
174
+ Optional[str]: The target type.
175
+ """
176
+
177
+ return self.target_data.type_
178
+
179
+ @type_.setter
180
+ def type_(self, value: Optional[str]) -> None:
181
+ """
182
+ Sets the target type and re-evaluates log filtering.
183
+
184
+ Args:
185
+ value (Optional[str]): The new target type.
186
+ """
187
+
188
+ self._cdp_target_type_log_accepted = validate_type_filter(
189
+ type_=value,
190
+ filter_mode=self._logger_settings.cdp_settings.target_type_filter_mode,
191
+ filter_instances=self._logger_settings.cdp_settings.target_type_filter
192
+ )
193
+ self.target_data.type_ = value
194
+
195
+ @property
196
+ def attached(self) -> Optional[bool]:
197
+ """
198
+ Checks if the target is currently attached.
199
+
200
+ Returns:
201
+ Optional[bool]: True if attached, False otherwise.
202
+ """
203
+
204
+ return self.target_data.attached
205
+
206
+ @attached.setter
207
+ def attached(self, value: Optional[bool]) -> None:
208
+ """
209
+ Sets the attached status.
210
+
211
+ Args:
212
+ value (Optional[bool]): The new attached status.
213
+ """
214
+
215
+ self.target_data.attached = value
216
+
217
+ @property
218
+ def browser_context_id(self) -> Optional[str]:
219
+ """
220
+ Gets the browser context ID.
221
+
222
+ Returns:
223
+ Optional[str]: The browser context ID.
224
+ """
225
+
226
+ return self.target_data.browser_context_id
227
+
228
+ @browser_context_id.setter
229
+ def browser_context_id(self, value: Optional[str]) -> None:
230
+ """
231
+ Sets the browser context ID.
232
+
233
+ Args:
234
+ value (Optional[str]): The new browser context ID.
235
+ """
236
+
237
+ self.target_data.browser_context_id = value
238
+
239
+ @property
240
+ def can_access_opener(self) -> Optional[bool]:
241
+ """
242
+ Checks if the target can access its opener.
243
+
244
+ Returns:
245
+ Optional[bool]: True if accessible, False otherwise.
246
+ """
247
+
248
+ return self.target_data.can_access_opener
249
+
250
+ @can_access_opener.setter
251
+ def can_access_opener(self, value: Optional[bool]) -> None:
252
+ """
253
+ Sets whether the target can access its opener.
254
+
255
+ Args:
256
+ value (Optional[bool]): Access status.
257
+ """
258
+
259
+ self.target_data.can_access_opener = value
260
+
261
+ @property
262
+ def cdp_log_stats(self) -> CDPLoggerChannelStats:
263
+ """
264
+ Gets the CDP logging statistics for this target channel.
265
+
266
+ Returns:
267
+ CDPLoggerChannelStats: The statistics object.
268
+ """
269
+
270
+ return self._cdp_log_stats
271
+
272
+ @property
273
+ def cdp_session(self) -> CdpSession:
274
+ """
275
+ Gets the active CDP session for this target.
276
+
277
+ Returns:
278
+ CdpSession: The CDP session object.
279
+ """
280
+
281
+ return self._cdp_session
282
+
283
+ @property
284
+ def fingerprint_log_stats(self) -> FingerprintLoggerChannelStats:
285
+ """
286
+ Gets the fingerprint logging statistics for this target channel.
287
+
288
+ Returns:
289
+ FingerprintLoggerChannelStats: The statistics object.
290
+ """
291
+
292
+ return self._fingerprint_log_stats
293
+
294
+ @property
295
+ def opener_frame_id(self) -> Optional[str]:
296
+ """
297
+ Gets the ID of the opener frame.
298
+
299
+ Returns:
300
+ Optional[str]: The opener frame ID.
301
+ """
302
+
303
+ return self.target_data.opener_frame_id
304
+
305
+ @opener_frame_id.setter
306
+ def opener_frame_id(self, value: Optional[str]) -> None:
307
+ """
308
+ Sets the ID of the opener frame.
309
+
310
+ Args:
311
+ value (Optional[str]): The new opener frame ID.
312
+ """
313
+
314
+ self.target_data.opener_frame_id = value
315
+
316
+ @property
317
+ def opener_id(self) -> Optional[str]:
318
+ """
319
+ Gets the ID of the opener target.
320
+
321
+ Returns:
322
+ Optional[str]: The opener ID.
323
+ """
324
+
325
+ return self.target_data.opener_id
326
+
327
+ @opener_id.setter
328
+ def opener_id(self, value: Optional[str]) -> None:
329
+ """
330
+ Sets the ID of the opener target.
331
+
332
+ Args:
333
+ value (Optional[str]): The new opener ID.
334
+ """
335
+
336
+ self.target_data.opener_id = value
337
+
338
+ @property
339
+ def subtype(self) -> Optional[str]:
340
+ """
341
+ Gets the subtype of the target.
342
+
343
+ Returns:
344
+ Optional[str]: The subtype.
345
+ """
346
+
347
+ return self.target_data.subtype
348
+
349
+ @subtype.setter
350
+ def subtype(self, value: Optional[str]) -> None:
351
+ """
352
+ Sets the subtype of the target.
353
+
354
+ Args:
355
+ value (Optional[str]): The new subtype.
356
+ """
357
+
358
+ self.target_data.subtype = value
359
+
360
+ @property
361
+ def target_id(self) -> Optional[str]:
362
+ """
363
+ Gets the unique target ID.
364
+
365
+ Returns:
366
+ Optional[str]: The target ID.
367
+ """
368
+
369
+ return self.target_data.target_id
370
+
371
+ @target_id.setter
372
+ def target_id(self, value: Optional[str]) -> None:
373
+ """
374
+ Sets the target ID and updates log stats.
375
+
376
+ Args:
377
+ value (Optional[str]): The new target ID.
378
+ """
379
+
380
+ self._cdp_log_stats.target_id = value
381
+ self.target_data.target_id = value
382
+
383
+ @property
384
+ def target_type_log_accepted(self) -> bool:
385
+ """
386
+ Checks if logging is accepted for this target type.
387
+
388
+ Returns:
389
+ bool: True if logging is allowed, False otherwise.
390
+ """
391
+
392
+ return self._cdp_target_type_log_accepted
393
+
394
+ @property
395
+ def title(self) -> Optional[str]:
396
+ """
397
+ Gets the title of the target.
398
+
399
+ Returns:
400
+ Optional[str]: The title.
401
+ """
402
+
403
+ return self.target_data.title
404
+
405
+ @title.setter
406
+ def title(self, value: Optional[str]) -> None:
407
+ """
408
+ Sets the title of the target and updates log stats.
409
+
410
+ Args:
411
+ value (Optional[str]): The new title.
412
+ """
413
+
414
+ self._cdp_log_stats.title = value
415
+ self.target_data.title = value
416
+
417
+ @property
418
+ def url(self) -> Optional[str]:
419
+ """
420
+ Gets the URL of the target.
421
+
422
+ Returns:
423
+ Optional[str]: The URL.
424
+ """
425
+
426
+ return self.target_data.url
427
+
428
+ @url.setter
429
+ def url(self, value: Optional[str]) -> None:
430
+ """
431
+ Sets the URL of the target and updates log stats.
432
+
433
+ Args:
434
+ value (Optional[str]): The new URL.
435
+ """
436
+
437
+ self._cdp_log_stats.url = value
438
+ self.target_data.url = value
@@ -0,0 +1,54 @@
1
+ import trio
2
+ from osn_selenium.exceptions.devtools import CDPEndExceptions
3
+ from osn_selenium.dev_tools.target.logging import LoggingMixin
4
+
5
+
6
+ __all__ = ["DetachMixin"]
7
+
8
+
9
+ class DetachMixin(LoggingMixin):
10
+ """
11
+ Mixin for monitoring target detach, crash, or destruction events.
12
+ """
13
+
14
+ async def stop(self):
15
+ """
16
+ Signals the target to begin its shutdown process.
17
+
18
+ Sets the `about_to_stop_event` which allows the main loop to exit.
19
+ """
20
+
21
+ self.about_to_stop_event.set()
22
+
23
+ async def _run_detach_checking(self):
24
+ """
25
+ Continuously listens for CDP events indicating the target is no longer available.
26
+
27
+ Monitors `TargetCrashed`, `TargetDestroyed`, and `DetachedFromTarget` events.
28
+ If the target associated with this instance is affected, it triggers the stop sequence.
29
+ """
30
+
31
+ TargetCrashed = self.devtools_package.get("target.TargetCrashed")
32
+ TargetDestroyed = self.devtools_package.get("target.TargetDestroyed")
33
+ DetachedFromTarget = self.devtools_package.get("target.DetachedFromTarget")
34
+
35
+ self._detached_receive_channel: trio.MemoryReceiveChannel = self.cdp_session.listen(TargetCrashed, TargetDestroyed, DetachedFromTarget, buffer_size=10)
36
+
37
+ should_stop = False
38
+ break_ = False
39
+
40
+ while not should_stop and not break_:
41
+ try:
42
+ event = await self._detached_receive_channel.receive()
43
+
44
+ if isinstance(event, (TargetCrashed, TargetDestroyed, DetachedFromTarget,)):
45
+ if event.target_id == self.target_id:
46
+ should_stop = True
47
+ except* CDPEndExceptions:
48
+ break_ = True
49
+ except* BaseException as error:
50
+ await self.log_cdp_error(error=error)
51
+ break_ = True
52
+
53
+ if should_stop:
54
+ await self.stop()
@@ -0,0 +1,112 @@
1
+ import trio
2
+ from typing import Tuple
3
+ from osn_selenium.exceptions.devtools import CDPEndExceptions
4
+ from osn_selenium.dev_tools.target.logging import LoggingMixin
5
+ from osn_selenium.dev_tools._functions import execute_cdp_command
6
+ from osn_selenium.dev_tools._validators import (
7
+ validate_target_event
8
+ )
9
+
10
+
11
+ __all__ = ["DiscoveryMixin"]
12
+
13
+
14
+ class DiscoveryMixin(LoggingMixin):
15
+ """
16
+ Mixin for discovering and attaching to new DevTools targets.
17
+ """
18
+
19
+ async def _run_new_targets_listener(self, new_targets_listener_ready_event: trio.Event):
20
+ """
21
+ Listens for `TargetCreated` and `TargetInfoChanged` events to manage new targets.
22
+
23
+ Attaches to valid new targets and adds them to the management system.
24
+
25
+ Args:
26
+ new_targets_listener_ready_event (trio.Event): Event to signal that the listener is successfully started.
27
+
28
+ Raises:
29
+ CDPEndExceptions: If connection issues occur during initialization.
30
+ BaseException: If other errors occur during initialization.
31
+ """
32
+
33
+ await self.log_cdp_step(message="New Targets listener starting.")
34
+
35
+ try:
36
+ self._new_target_receive_channel: Tuple[trio.MemoryReceiveChannel, trio.Event] = (
37
+ self.cdp_session.listen(
38
+ self.devtools_package.get("target.TargetCreated"),
39
+ # self.devtools_package.get("target.AttachedToTarget"),
40
+ self.devtools_package.get("target.TargetInfoChanged"),
41
+ buffer_size=self._new_targets_buffer_size
42
+ ),
43
+ trio.Event()
44
+ )
45
+ new_targets_listener_ready_event.set()
46
+ except CDPEndExceptions as error:
47
+ raise error
48
+ except BaseException as error:
49
+ await self.log_cdp_error(error=error)
50
+ raise error
51
+
52
+ await self.log_cdp_step(message="New Targets listener started.")
53
+
54
+ keep_alive = True
55
+ while keep_alive:
56
+ try:
57
+ event = await self._new_target_receive_channel[0].receive()
58
+
59
+ if validate_target_event(event=event, filter_=self._new_targets_events_filters):
60
+ await execute_cdp_command(
61
+ self=self,
62
+ error_mode="log",
63
+ function=self.devtools_package.get("target.attach_to_target"),
64
+ target_id=event.target_info.target_id,
65
+ flatten=True
66
+ )
67
+
68
+ self._nursery_object.start_soon(self._add_target_func, event)
69
+ except* CDPEndExceptions:
70
+ keep_alive = False
71
+ except* BaseException as error:
72
+ await self.log_cdp_error(error=error)
73
+ keep_alive = False
74
+
75
+ self._new_target_receive_channel[1].set()
76
+
77
+ async def _setup_new_targets_attaching(self):
78
+ """
79
+ Configures the target to discover and auto-attach to new targets.
80
+
81
+ Executes CDP commands to set discovery mode and auto-attach behavior
82
+ based on the configured filters.
83
+
84
+ Raises:
85
+ CDPEndExceptions: If the connection closes during setup.
86
+ BaseException: If other errors occur.
87
+ """
88
+
89
+ try:
90
+ target_filter = self.devtools_package.get("target.TargetFilter")(self._new_targets_filter_list) if self._new_targets_filter_list is not None else None
91
+
92
+ await execute_cdp_command(
93
+ self=self,
94
+ error_mode="log",
95
+ function=self.devtools_package.get("target.set_discover_targets"),
96
+ discover=True,
97
+ filter_=target_filter,
98
+ )
99
+ await execute_cdp_command(
100
+ self=self,
101
+ error_mode="log",
102
+ function=self.devtools_package.get("target.set_auto_attach"),
103
+ auto_attach=True,
104
+ wait_for_debugger_on_start=True,
105
+ flatten=True,
106
+ filter_=target_filter,
107
+ )
108
+ except CDPEndExceptions as error:
109
+ raise error
110
+ except BaseException as error:
111
+ await self.log_cdp_error(error=error)
112
+ raise error