osn-selenium 0.0.0__py3-none-any.whl → 1.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. osn_selenium/_base_models.py +41 -0
  2. osn_selenium/_cdp_import.py +253 -0
  3. osn_selenium/_functions.py +84 -0
  4. osn_selenium/_typehints.py +19 -0
  5. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  6. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  7. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  8. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  9. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  10. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  11. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  12. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  13. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  14. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  15. osn_selenium/abstract/executors/cdp/console.py +18 -0
  16. osn_selenium/abstract/executors/cdp/css.py +197 -0
  17. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  18. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  19. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  20. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  21. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  22. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  23. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  24. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  25. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  26. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  27. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  28. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  29. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  30. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  31. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  32. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  33. osn_selenium/abstract/executors/cdp/input.py +158 -0
  34. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  35. osn_selenium/abstract/executors/cdp/io.py +24 -0
  36. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  37. osn_selenium/abstract/executors/cdp/log.py +27 -0
  38. osn_selenium/abstract/executors/cdp/media.py +14 -0
  39. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  40. osn_selenium/abstract/executors/cdp/network.py +252 -0
  41. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  42. osn_selenium/abstract/executors/cdp/page.py +347 -0
  43. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  44. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  45. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  46. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  47. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  48. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  49. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  50. osn_selenium/abstract/executors/cdp/security.py +26 -0
  51. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  52. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  53. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  54. osn_selenium/abstract/executors/cdp/target.py +125 -0
  55. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  56. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  57. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  58. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  59. osn_selenium/abstract/executors/cdp.py +63 -0
  60. osn_selenium/abstract/executors/javascript.py +203 -0
  61. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  62. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  63. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  64. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  65. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  66. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  67. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  68. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  69. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  70. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  71. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  72. osn_selenium/abstract/instances/alert.py +67 -0
  73. osn_selenium/abstract/instances/browser.py +76 -0
  74. osn_selenium/abstract/instances/browsing_context.py +310 -0
  75. osn_selenium/abstract/instances/dialog.py +107 -0
  76. osn_selenium/abstract/instances/fedcm.py +133 -0
  77. osn_selenium/abstract/instances/mobile.py +79 -0
  78. osn_selenium/abstract/instances/network.py +100 -0
  79. osn_selenium/abstract/instances/permissions.py +52 -0
  80. osn_selenium/abstract/instances/script.py +109 -0
  81. osn_selenium/abstract/instances/shadow_root.py +81 -0
  82. osn_selenium/abstract/instances/storage.py +98 -0
  83. osn_selenium/abstract/instances/switch_to.py +104 -0
  84. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  85. osn_selenium/abstract/instances/web_element.py +395 -0
  86. osn_selenium/abstract/instances/web_extension.py +70 -0
  87. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  88. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  89. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  90. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  91. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  92. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  93. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  94. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  95. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  96. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  97. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  98. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  99. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  100. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  101. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  102. osn_selenium/abstract/webdriver/core/base.py +298 -0
  103. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  104. osn_selenium/abstract/webdriver/core/components.py +82 -0
  105. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  106. osn_selenium/abstract/webdriver/core/element.py +55 -0
  107. osn_selenium/abstract/webdriver/core/file.py +82 -0
  108. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  109. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  110. osn_selenium/abstract/webdriver/core/script.py +88 -0
  111. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  112. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  113. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  114. osn_selenium/abstract/webdriver/core/window.py +237 -0
  115. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  116. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  117. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  118. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  119. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  120. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  121. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  122. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  123. osn_selenium/base_mixin.py +122 -0
  124. osn_selenium/browsers_handler/__init__.py +47 -17
  125. osn_selenium/browsers_handler/_linux.py +226 -0
  126. osn_selenium/browsers_handler/_windows.py +21 -14
  127. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  128. osn_selenium/dev_tools/_decorators.py +149 -0
  129. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  130. osn_selenium/dev_tools/_functions.py +174 -0
  131. osn_selenium/dev_tools/_system_utils.py +35 -0
  132. osn_selenium/dev_tools/_typehints.py +35 -0
  133. osn_selenium/dev_tools/_validators.py +227 -0
  134. osn_selenium/dev_tools/_wrappers.py +92 -0
  135. osn_selenium/dev_tools/domains/__init__.py +7 -40
  136. osn_selenium/dev_tools/domains/abstract.py +98 -254
  137. osn_selenium/dev_tools/domains/fetch.py +229 -906
  138. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  139. osn_selenium/dev_tools/filters.py +40 -0
  140. osn_selenium/dev_tools/logger/main.py +214 -0
  141. osn_selenium/dev_tools/logger/models.py +232 -0
  142. osn_selenium/dev_tools/logger/target.py +278 -0
  143. osn_selenium/dev_tools/manager/__init__.py +16 -0
  144. osn_selenium/dev_tools/manager/base.py +124 -0
  145. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  146. osn_selenium/dev_tools/manager/logging.py +153 -0
  147. osn_selenium/dev_tools/manager/settings.py +89 -0
  148. osn_selenium/dev_tools/manager/targets.py +175 -0
  149. osn_selenium/dev_tools/models.py +49 -0
  150. osn_selenium/dev_tools/settings.py +139 -0
  151. osn_selenium/dev_tools/target/__init__.py +16 -0
  152. osn_selenium/dev_tools/target/base.py +427 -0
  153. osn_selenium/dev_tools/target/detach.py +54 -0
  154. osn_selenium/dev_tools/target/discovery.py +112 -0
  155. osn_selenium/dev_tools/target/events.py +120 -0
  156. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  157. osn_selenium/dev_tools/target/lifecycle.py +184 -0
  158. osn_selenium/dev_tools/target/logging.py +163 -0
  159. osn_selenium/exceptions/__init__.py +1 -0
  160. osn_selenium/exceptions/base.py +9 -0
  161. osn_selenium/exceptions/configuration.py +84 -0
  162. osn_selenium/exceptions/dependencies.py +60 -0
  163. osn_selenium/exceptions/devtools.py +114 -0
  164. osn_selenium/exceptions/flags.py +45 -0
  165. osn_selenium/exceptions/instance.py +92 -0
  166. osn_selenium/exceptions/javascript.py +31 -0
  167. osn_selenium/exceptions/logic.py +31 -0
  168. osn_selenium/exceptions/path.py +77 -0
  169. osn_selenium/exceptions/platform.py +33 -0
  170. osn_selenium/exceptions/protocol.py +86 -0
  171. osn_selenium/exceptions/webdriver.py +44 -0
  172. osn_selenium/exceptions/window.py +63 -0
  173. osn_selenium/executors/__init__.py +1 -0
  174. osn_selenium/executors/sync/__init__.py +1 -0
  175. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  176. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  177. osn_selenium/executors/sync/cdp/animation.py +50 -0
  178. osn_selenium/executors/sync/cdp/audits.py +48 -0
  179. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  180. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  181. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  182. osn_selenium/executors/sync/cdp/browser.py +131 -0
  183. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  184. osn_selenium/executors/sync/cdp/cast.py +38 -0
  185. osn_selenium/executors/sync/cdp/console.py +24 -0
  186. osn_selenium/executors/sync/cdp/css.py +187 -0
  187. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  188. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  189. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  190. osn_selenium/executors/sync/cdp/dom.py +310 -0
  191. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  192. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  193. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  194. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  195. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  196. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  197. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  198. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  199. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  200. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  201. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  202. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  203. osn_selenium/executors/sync/cdp/input.py +233 -0
  204. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  205. osn_selenium/executors/sync/cdp/io.py +33 -0
  206. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  207. osn_selenium/executors/sync/cdp/log.py +35 -0
  208. osn_selenium/executors/sync/cdp/media.py +21 -0
  209. osn_selenium/executors/sync/cdp/memory.py +62 -0
  210. osn_selenium/executors/sync/cdp/network.py +287 -0
  211. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  212. osn_selenium/executors/sync/cdp/page.py +365 -0
  213. osn_selenium/executors/sync/cdp/performance.py +33 -0
  214. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  215. osn_selenium/executors/sync/cdp/preload.py +21 -0
  216. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  217. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  218. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  219. osn_selenium/executors/sync/cdp/schema.py +23 -0
  220. osn_selenium/executors/sync/cdp/security.py +30 -0
  221. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  222. osn_selenium/executors/sync/cdp/storage.py +151 -0
  223. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  224. osn_selenium/executors/sync/cdp/target.py +147 -0
  225. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  226. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  227. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  228. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  229. osn_selenium/executors/sync/cdp.py +100 -0
  230. osn_selenium/executors/sync/javascript.py +79 -0
  231. osn_selenium/executors/trio_threads/__init__.py +1 -0
  232. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  233. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  234. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  235. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  236. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  237. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  238. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  239. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  240. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  241. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  242. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  243. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  244. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  245. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  246. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  247. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  248. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  249. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  250. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  251. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  252. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  253. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  254. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  255. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  256. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  257. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  258. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  259. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  260. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  261. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  262. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  263. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  264. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  265. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  266. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  267. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  268. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  269. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  270. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  271. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  272. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  273. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  274. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  275. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  276. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  277. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  278. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  279. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  280. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  281. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  282. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  283. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  284. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  285. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  286. osn_selenium/executors/trio_threads/cdp.py +104 -0
  287. osn_selenium/executors/trio_threads/javascript.py +90 -0
  288. osn_selenium/executors/unified/__init__.py +1 -0
  289. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  290. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  291. osn_selenium/executors/unified/cdp/animation.py +50 -0
  292. osn_selenium/executors/unified/cdp/audits.py +45 -0
  293. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  294. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  295. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  296. osn_selenium/executors/unified/cdp/browser.py +143 -0
  297. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  298. osn_selenium/executors/unified/cdp/cast.py +32 -0
  299. osn_selenium/executors/unified/cdp/console.py +18 -0
  300. osn_selenium/executors/unified/cdp/css.py +237 -0
  301. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  302. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  303. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  304. osn_selenium/executors/unified/cdp/dom.py +380 -0
  305. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  306. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  307. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  308. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  309. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  310. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  311. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  312. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  313. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  314. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  315. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  316. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  317. osn_selenium/executors/unified/cdp/input.py +254 -0
  318. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  319. osn_selenium/executors/unified/cdp/io.py +29 -0
  320. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  321. osn_selenium/executors/unified/cdp/log.py +29 -0
  322. osn_selenium/executors/unified/cdp/media.py +15 -0
  323. osn_selenium/executors/unified/cdp/memory.py +59 -0
  324. osn_selenium/executors/unified/cdp/network.py +323 -0
  325. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  326. osn_selenium/executors/unified/cdp/page.py +410 -0
  327. osn_selenium/executors/unified/cdp/performance.py +27 -0
  328. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  329. osn_selenium/executors/unified/cdp/preload.py +15 -0
  330. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  331. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  332. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  333. osn_selenium/executors/unified/cdp/schema.py +17 -0
  334. osn_selenium/executors/unified/cdp/security.py +27 -0
  335. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  336. osn_selenium/executors/unified/cdp/storage.py +178 -0
  337. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  338. osn_selenium/executors/unified/cdp/target.py +165 -0
  339. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  340. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  341. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  342. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  343. osn_selenium/executors/unified/javascript.py +104 -0
  344. osn_selenium/flags/__init__.py +1 -0
  345. osn_selenium/flags/_functions.py +45 -0
  346. osn_selenium/flags/_typehints.py +34 -0
  347. osn_selenium/flags/_validators.py +101 -0
  348. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +159 -245
  349. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +130 -374
  350. osn_selenium/flags/chrome.py +259 -0
  351. osn_selenium/flags/edge.py +259 -0
  352. osn_selenium/flags/models/__init__.py +1 -0
  353. osn_selenium/flags/models/base.py +130 -0
  354. osn_selenium/flags/models/blink.py +263 -0
  355. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  356. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  357. osn_selenium/flags/models/values.py +44 -0
  358. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  359. osn_selenium/flags/yandex.py +259 -0
  360. osn_selenium/instances/__init__.py +1 -0
  361. osn_selenium/instances/_functions.py +242 -0
  362. osn_selenium/instances/_typehints.py +148 -0
  363. osn_selenium/instances/_utils.py +143 -0
  364. osn_selenium/instances/convert.py +287 -0
  365. osn_selenium/instances/protocols.py +105 -0
  366. osn_selenium/instances/sync/__init__.py +1 -0
  367. osn_selenium/instances/sync/action_chains/__init__.py +32 -0
  368. osn_selenium/instances/sync/action_chains/base.py +74 -0
  369. osn_selenium/instances/sync/action_chains/click.py +61 -0
  370. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  371. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  372. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  373. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  374. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  375. osn_selenium/instances/sync/action_chains/move.py +46 -0
  376. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  377. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  378. osn_selenium/instances/sync/alert.py +69 -0
  379. osn_selenium/instances/sync/browser.py +72 -0
  380. osn_selenium/instances/sync/browsing_context.py +193 -0
  381. osn_selenium/instances/sync/dialog.py +81 -0
  382. osn_selenium/instances/sync/fedcm.py +92 -0
  383. osn_selenium/instances/sync/mobile.py +75 -0
  384. osn_selenium/instances/sync/network.py +90 -0
  385. osn_selenium/instances/sync/permissions.py +80 -0
  386. osn_selenium/instances/sync/script.py +77 -0
  387. osn_selenium/instances/sync/shadow_root.py +113 -0
  388. osn_selenium/instances/sync/storage.py +91 -0
  389. osn_selenium/instances/sync/switch_to.py +92 -0
  390. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  391. osn_selenium/instances/sync/web_element.py +179 -0
  392. osn_selenium/instances/sync/web_extension.py +77 -0
  393. osn_selenium/instances/trio_threads/__init__.py +1 -0
  394. osn_selenium/instances/trio_threads/action_chains/__init__.py +32 -0
  395. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  396. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  397. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  399. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  400. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  401. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  402. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  403. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  404. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  405. osn_selenium/instances/trio_threads/alert.py +87 -0
  406. osn_selenium/instances/trio_threads/browser.py +90 -0
  407. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  408. osn_selenium/instances/trio_threads/dialog.py +99 -0
  409. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  410. osn_selenium/instances/trio_threads/mobile.py +93 -0
  411. osn_selenium/instances/trio_threads/network.py +108 -0
  412. osn_selenium/instances/trio_threads/permissions.py +102 -0
  413. osn_selenium/instances/trio_threads/script.py +95 -0
  414. osn_selenium/instances/trio_threads/shadow_root.py +154 -0
  415. osn_selenium/instances/trio_threads/storage.py +109 -0
  416. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  417. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  418. osn_selenium/instances/trio_threads/web_element.py +217 -0
  419. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  420. osn_selenium/instances/unified/__init__.py +1 -0
  421. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  422. osn_selenium/instances/unified/action_chains/base.py +31 -0
  423. osn_selenium/instances/unified/action_chains/click.py +27 -0
  424. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  425. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  426. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  427. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  428. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  429. osn_selenium/instances/unified/action_chains/move.py +24 -0
  430. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  431. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  432. osn_selenium/instances/unified/alert.py +29 -0
  433. osn_selenium/instances/unified/browser.py +33 -0
  434. osn_selenium/instances/unified/browsing_context.py +151 -0
  435. osn_selenium/instances/unified/dialog.py +42 -0
  436. osn_selenium/instances/unified/fedcm.py +48 -0
  437. osn_selenium/instances/unified/mobile.py +36 -0
  438. osn_selenium/instances/unified/network.py +50 -0
  439. osn_selenium/instances/unified/permissions.py +43 -0
  440. osn_selenium/instances/unified/script.py +38 -0
  441. osn_selenium/instances/unified/shadow_root.py +46 -0
  442. osn_selenium/instances/unified/storage.py +48 -0
  443. osn_selenium/instances/unified/switch_to.py +49 -0
  444. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  445. osn_selenium/instances/unified/web_element.py +145 -0
  446. osn_selenium/instances/unified/web_extension.py +38 -0
  447. osn_selenium/javascript/__init__.py +1 -0
  448. osn_selenium/javascript/_functions.py +63 -0
  449. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  450. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  451. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  452. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  453. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  454. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  455. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  456. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  457. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  458. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  459. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  460. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  461. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  462. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  463. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  464. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  465. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  466. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  467. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  468. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  469. osn_selenium/javascript/functions.py +44 -0
  470. osn_selenium/javascript/models.py +35 -0
  471. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  472. osn_selenium/models.py +94 -0
  473. osn_selenium/trio_threads_mixin.py +159 -0
  474. osn_selenium/webdrivers/_args_helpers.py +181 -0
  475. osn_selenium/webdrivers/_bridges.py +57 -0
  476. osn_selenium/webdrivers/_decorators.py +83 -0
  477. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  478. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  479. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  480. osn_selenium/webdrivers/_typehints.py +10 -0
  481. osn_selenium/webdrivers/protocols.py +50 -0
  482. osn_selenium/webdrivers/sync/__init__.py +1 -0
  483. osn_selenium/webdrivers/sync/blink/__init__.py +124 -0
  484. osn_selenium/webdrivers/sync/blink/base.py +140 -0
  485. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  486. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  487. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  488. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  489. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  490. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  491. osn_selenium/webdrivers/sync/chrome/__init__.py +102 -0
  492. osn_selenium/webdrivers/sync/chrome/base.py +118 -0
  493. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  494. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  495. osn_selenium/webdrivers/sync/core/__init__.py +100 -0
  496. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  497. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  498. osn_selenium/webdrivers/sync/core/base.py +175 -0
  499. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  500. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  501. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  502. osn_selenium/webdrivers/sync/core/element.py +42 -0
  503. osn_selenium/webdrivers/sync/core/file.py +40 -0
  504. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  505. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  506. osn_selenium/webdrivers/sync/core/script.py +53 -0
  507. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  508. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  509. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  510. osn_selenium/webdrivers/sync/core/window.py +99 -0
  511. osn_selenium/webdrivers/sync/edge/__init__.py +102 -0
  512. osn_selenium/webdrivers/sync/edge/base.py +114 -0
  513. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  514. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  515. osn_selenium/webdrivers/sync/yandex/__init__.py +102 -0
  516. osn_selenium/webdrivers/sync/yandex/base.py +111 -0
  517. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  518. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  519. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  520. osn_selenium/webdrivers/trio_threads/blink/__init__.py +134 -0
  521. osn_selenium/webdrivers/trio_threads/blink/base.py +143 -0
  522. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  523. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  524. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  525. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  526. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  527. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  528. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +114 -0
  529. osn_selenium/webdrivers/trio_threads/chrome/base.py +119 -0
  530. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  531. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  532. osn_selenium/webdrivers/trio_threads/core/__init__.py +115 -0
  533. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  534. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  535. osn_selenium/webdrivers/trio_threads/core/base.py +199 -0
  536. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  537. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  538. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  539. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  540. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  541. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  542. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  543. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  544. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  545. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  546. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  547. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  548. osn_selenium/webdrivers/trio_threads/edge/__init__.py +114 -0
  549. osn_selenium/webdrivers/trio_threads/edge/base.py +115 -0
  550. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  551. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  552. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +114 -0
  553. osn_selenium/webdrivers/trio_threads/yandex/base.py +112 -0
  554. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  555. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  556. osn_selenium/webdrivers/unified/__init__.py +1 -0
  557. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  558. osn_selenium/webdrivers/unified/blink/base.py +135 -0
  559. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  560. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  561. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  562. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  563. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  564. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  565. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  566. osn_selenium/webdrivers/unified/chrome/base.py +58 -0
  567. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  568. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  569. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  570. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  571. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  572. osn_selenium/webdrivers/unified/core/base.py +139 -0
  573. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  574. osn_selenium/webdrivers/unified/core/components.py +32 -0
  575. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  576. osn_selenium/webdrivers/unified/core/element.py +24 -0
  577. osn_selenium/webdrivers/unified/core/file.py +35 -0
  578. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  579. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  580. osn_selenium/webdrivers/unified/core/script.py +32 -0
  581. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  582. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  583. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  584. osn_selenium/webdrivers/unified/core/window.py +135 -0
  585. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  586. osn_selenium/webdrivers/unified/edge/base.py +56 -0
  587. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  588. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  589. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  590. osn_selenium/webdrivers/unified/yandex/base.py +58 -0
  591. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  592. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  593. osn_selenium-1.1.0.dist-info/METADATA +252 -0
  594. osn_selenium-1.1.0.dist-info/RECORD +615 -0
  595. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/WHEEL +1 -1
  596. osn_selenium/captcha_workers/__init__.py +0 -26
  597. osn_selenium/dev_tools/_types.py +0 -22
  598. osn_selenium/dev_tools/errors.py +0 -89
  599. osn_selenium/dev_tools/logger.py +0 -558
  600. osn_selenium/dev_tools/manager.py +0 -1551
  601. osn_selenium/dev_tools/utils.py +0 -509
  602. osn_selenium/errors.py +0 -16
  603. osn_selenium/types.py +0 -118
  604. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  605. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  606. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  607. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  608. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  609. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  610. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  611. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  612. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  613. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  614. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  615. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  616. osn_selenium/webdrivers/_functions.py +0 -504
  617. osn_selenium/webdrivers/types.py +0 -390
  618. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  619. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  620. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  621. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  622. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  623. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  624. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  628. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  629. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  630. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  631. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  632. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  633. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  634. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  635. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/top_level.txt +0 -0
@@ -1,34 +1,32 @@
1
1
  import trio
2
- from dataclasses import dataclass
3
- from osn_selenium.dev_tools.utils import (
4
- cdp_end_exceptions,
5
- execute_cdp_command
6
- )
7
- from osn_selenium.dev_tools.domains_default.fetch import (
8
- auth_required_choose_func,
9
- request_paused_choose_func
2
+ from pydantic import Field
3
+ from osn_selenium._base_models import DictModel
4
+ from osn_selenium.dev_tools._functions import execute_cdp_command
5
+ from osn_selenium.exceptions.devtools import (
6
+ CDPEndExceptions,
7
+ ExceptionThrown
10
8
  )
11
9
  from typing import (
12
10
  Any,
13
- Awaitable,
14
11
  Callable,
12
+ Coroutine,
13
+ List,
15
14
  Literal,
16
15
  Mapping,
17
16
  Optional,
18
17
  Sequence,
19
- TYPE_CHECKING,
20
- TypedDict
18
+ TYPE_CHECKING
19
+ )
20
+ from osn_selenium.dev_tools.domains_default.fetch import (
21
+ auth_required_choose_func,
22
+ request_paused_choose_func
21
23
  )
22
24
  from osn_selenium.dev_tools.domains.abstract import (
23
- AbstractAction,
24
25
  AbstractActionParametersHandlersSettings,
25
26
  AbstractActionSettings,
26
- AbstractDomain,
27
27
  AbstractDomainEnableKwargsSettings,
28
28
  AbstractDomainHandlersSettings,
29
29
  AbstractDomainSettings,
30
- AbstractEvent,
31
- AbstractEventActionsHandler,
32
30
  AbstractEventActionsHandlerSettings,
33
31
  AbstractEventActionsSettings,
34
32
  AbstractEventSettings,
@@ -40,26 +38,54 @@ from osn_selenium.dev_tools.domains.abstract import (
40
38
  )
41
39
 
42
40
 
41
+ __all__ = [
42
+ "AuthRequiredActionsHandlerSettings",
43
+ "AuthRequiredActionsSettings",
44
+ "AuthRequiredSettings",
45
+ "ContinueRequestHandlersSettings",
46
+ "ContinueRequestSettings",
47
+ "ContinueResponseHandlersSettings",
48
+ "ContinueResponseSettings",
49
+ "ContinueWithAuthParameterHandlersSettings",
50
+ "ContinueWithAuthSettings",
51
+ "FailRequestHandlersSettings",
52
+ "FailRequestSettings",
53
+ "FetchEnableKwargsSettings",
54
+ "FetchHandlersSettings",
55
+ "FetchSettings",
56
+ "FulfillRequestHandlersSettings",
57
+ "FulfillRequestSettings",
58
+ "RequestPausedActionsHandlerSettings",
59
+ "RequestPausedActionsSettings",
60
+ "RequestPausedSettings",
61
+ "auth_required_actions_literal",
62
+ "auth_required_choose_action_func_type",
63
+ "handle_auth_required_func_type",
64
+ "handle_request_paused_func_type",
65
+ "request_paused_actions_literal",
66
+ "request_paused_choose_action_func_type"
67
+ ]
68
+
43
69
  if TYPE_CHECKING:
44
- from osn_selenium.dev_tools.manager import DevToolsTarget
70
+ from osn_selenium.dev_tools.target import DevToolsTarget
71
+ else:
72
+ DevToolsTarget = Any
45
73
 
74
+ request_paused_actions_literal = Literal[
75
+ "continue_request",
76
+ "fail_request",
77
+ "fulfill_request",
78
+ "continue_response"
79
+ ]
80
+ auth_required_actions_literal = Literal["continue_with_auth"]
46
81
 
47
- class _ContinueWithAuthParametersHandlers(TypedDict):
48
- """
49
- Internal TypedDict for handlers related to the 'continueWithAuth' action.
82
+ request_paused_choose_action_func_type = Callable[[DevToolsTarget, Any], Sequence[request_paused_actions_literal]]
83
+ handle_request_paused_func_type = Callable[[DevToolsTarget, "RequestPausedSettings", Any], Coroutine[Any, Any, None]]
50
84
 
51
- Attributes:
52
- response (ParameterHandler): Handler for the auth challenge response.
53
- username (Optional[ParameterHandler]): Handler for providing the username.
54
- password (Optional[ParameterHandler]): Handler for providing the password.
55
- """
56
-
57
- response: ParameterHandler
58
- username: Optional[ParameterHandler]
59
- password: Optional[ParameterHandler]
85
+ auth_required_choose_action_func_type = Callable[[DevToolsTarget, Any], Sequence[auth_required_actions_literal]]
86
+ handle_auth_required_func_type = Callable[[DevToolsTarget, "AuthRequiredSettings", Any], Coroutine[Any, Any, None]]
60
87
 
61
88
 
62
- @dataclass
63
89
  class ContinueWithAuthParameterHandlersSettings(AbstractActionParametersHandlersSettings):
64
90
  """
65
91
  Settings for the handlers that provide authentication credentials when required.
@@ -73,27 +99,9 @@ class ContinueWithAuthParameterHandlersSettings(AbstractActionParametersHandlers
73
99
  response: ParameterHandler
74
100
  username: Optional[ParameterHandler] = None
75
101
  password: Optional[ParameterHandler] = None
76
-
77
- def to_dict(self) -> _ContinueWithAuthParametersHandlers:
78
- """
79
- Converts the settings object to its dictionary representation.
80
-
81
- Returns:
82
- _ContinueWithAuthParametersHandlers: The dictionary representation suitable for internal use.
83
- """
84
-
85
- return _ContinueWithAuthParametersHandlers(
86
- response=self.response,
87
- username=self.username,
88
- password=self.password,
89
- )
90
-
91
-
92
- async def _build_kwargs_from_handlers_func(
93
- self: "DevToolsTarget",
94
- handlers: Mapping[str, Optional[ParameterHandler]],
95
- event: Any
96
- ) -> kwargs_type:
102
+
103
+
104
+ async def _build_kwargs_from_handlers_func(self: DevToolsTarget, handlers: DictModel, event: Any) -> kwargs_type:
97
105
  """
98
106
  Asynchronously builds keyword arguments for a CDP command by executing parameter handlers.
99
107
 
@@ -114,23 +122,23 @@ async def _build_kwargs_from_handlers_func(
114
122
  BaseException: If any error occurs during the execution of parameter handlers or the process.
115
123
  """
116
124
 
117
- await self.log(level="INFO", message=f"Started to build kwargs for '{event}'")
125
+ await self.log_cdp(level="INFO", message=f"Started to build kwargs for '{event}'")
118
126
 
119
127
  try:
120
128
  kwargs = {"request_id": event.request_id}
121
129
 
122
- kwargs_ready_events: list[trio.Event] = []
130
+ kwargs_ready_events: List[trio.Event] = []
123
131
 
124
- for handler_name, handler_settings in handlers.items():
132
+ for handler_name, handler_settings in handlers:
125
133
  if handler_settings is not None:
126
134
  kwargs_ready_event = trio.Event()
127
135
  kwargs_ready_events.append(kwargs_ready_event)
128
136
 
129
137
  self._nursery_object.start_soon(
130
- handler_settings["func"],
138
+ handler_settings.func,
131
139
  self,
132
140
  kwargs_ready_event,
133
- handler_settings["instances"],
141
+ handler_settings.instances,
134
142
  event,
135
143
  kwargs
136
144
  )
@@ -139,79 +147,28 @@ async def _build_kwargs_from_handlers_func(
139
147
  await kwargs_ready_event.wait()
140
148
 
141
149
  return kwargs
142
- except* cdp_end_exceptions as error:
150
+ except* CDPEndExceptions as error:
143
151
  raise error
144
152
  except* BaseException as error:
145
- await self.log_error(error=error)
153
+ await self.log_cdp_error(error=error)
146
154
  raise error
147
155
 
148
156
 
149
- class _ContinueWithAuth(TypedDict):
150
- """
151
- Internal TypedDict for the 'continueWithAuth' action configuration.
152
-
153
- Attributes:
154
- kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments for the `continueWithAuth` CDP command.
155
- response_handle_func (response_handle_func_type): A function to process the response from the CDP command.
156
- parameters_handlers (_ContinueWithAuthParametersHandlers): Handlers for authentication parameters.
157
- """
158
-
159
- kwargs_func: build_kwargs_from_handlers_func_type
160
- response_handle_func: response_handle_func_type
161
- parameters_handlers: _ContinueWithAuthParametersHandlers
162
-
163
-
164
- @dataclass
165
157
  class ContinueWithAuthSettings(AbstractActionSettings):
166
158
  """
167
159
  Settings for continuing a request that requires authentication using the `fetch.continueWithAuth` CDP command.
168
160
 
169
161
  Attributes:
162
+ kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments from handlers. Defaults to internal builder.
170
163
  parameters_handlers (ContinueWithAuthParameterHandlersSettings): Settings for the handlers that provide authentication credentials.
171
164
  response_handle_func (response_handle_func_type): An optional awaitable function to process the response from the `fetch.continueWithAuth` CDP command. Defaults to None.
172
165
  """
173
166
 
167
+ kwargs_func: build_kwargs_from_handlers_func_type = _build_kwargs_from_handlers_func
174
168
  parameters_handlers: ContinueWithAuthParameterHandlersSettings
175
169
  response_handle_func: response_handle_func_type = None
176
-
177
- @property
178
- def kwargs_func(self) -> build_kwargs_from_handlers_func_type:
179
- """
180
- Returns the function used to build keyword arguments for the `continueWithAuth` command.
181
-
182
- Returns:
183
- build_kwargs_from_handlers_func_type: The internal function `_build_kwargs_from_handlers_func`.
184
- """
185
-
186
- return _build_kwargs_from_handlers_func
187
-
188
- def to_dict(self) -> _ContinueWithAuth:
189
- """
190
- Converts the settings object to its dictionary representation.
191
-
192
- Returns:
193
- _ContinueWithAuth: The dictionary representation suitable for internal use.
194
- """
195
-
196
- return _ContinueWithAuth(
197
- kwargs_func=self.kwargs_func,
198
- response_handle_func=self.response_handle_func,
199
- parameters_handlers=self.parameters_handlers.to_dict(),
200
- )
201
-
202
-
203
- class _AuthRequiredActions(TypedDict):
204
- """
205
- Internal TypedDict mapping action names for AuthRequired event to their configurations.
206
-
207
- Attributes:
208
- continue_with_auth (Optional[_ContinueWithAuth]): Configuration for the 'continueWithAuth' action.
209
- """
210
-
211
- continue_with_auth: Optional[_ContinueWithAuth]
212
170
 
213
171
 
214
- @dataclass
215
172
  class AuthRequiredActionsSettings(AbstractEventActionsSettings):
216
173
  """
217
174
  Container for configurations of possible actions to take when authentication is required.
@@ -221,97 +178,28 @@ class AuthRequiredActionsSettings(AbstractEventActionsSettings):
221
178
  """
222
179
 
223
180
  continue_with_auth: Optional[ContinueWithAuthSettings] = None
224
-
225
- def to_dict(self) -> _AuthRequiredActions:
226
- """
227
- Converts the settings object to its dictionary representation.
228
-
229
- Returns:
230
- _AuthRequiredActions: The dictionary representation suitable for internal use.
231
- """
232
-
233
- return _AuthRequiredActions(
234
- continue_with_auth=self.continue_with_auth.to_dict()
235
- if self.continue_with_auth is not None
236
- else None,
237
- )
238
-
239
-
240
- class _AuthRequiredActionsHandler(AbstractEventActionsHandler):
241
- """
242
- Internal TypedDict for the actions handler configuration for the 'AuthRequired' event.
243
-
244
- Attributes:
245
- choose_action_func (auth_required_choose_action_func_type): A function that determines which actions (by name) should be executed for a given 'AuthRequired' event.
246
- actions (_AuthRequiredActions): A dictionary mapping action names to their full configurations.
247
- """
248
-
249
- choose_action_func: "auth_required_choose_action_func_type"
250
- actions: _AuthRequiredActions
251
181
 
252
182
 
253
- @dataclass
254
183
  class AuthRequiredActionsHandlerSettings(AbstractEventActionsHandlerSettings):
255
184
  """
256
185
  Settings for handling the 'fetch.AuthRequired' event by choosing and executing specific actions.
257
186
 
258
187
  Attributes:
259
- choose_action_func (auth_required_choose_action_func_type): A function that takes the DevTools instance and the event object and returns a list of action names (Literals) to execute. Defaults to `auth_required_choose_func`.
188
+ kwargs_func (build_kwargs_from_handlers_func_type): Helper function for keyword argument building. Defaults to internal builder.
189
+ choose_action_func (auth_required_choose_action_func_type): A function that takes the DevTools instance and the event object and returns a List of action names (Literals) to execute. Defaults to `auth_required_choose_func`.
260
190
  actions (Optional[AuthRequiredActionsSettings]): Container for the configuration of the available actions. Defaults to None.
261
191
  """
262
192
 
263
- choose_action_func: "auth_required_choose_action_func_type" = auth_required_choose_func
193
+ kwargs_func: build_kwargs_from_handlers_func_type = _build_kwargs_from_handlers_func
194
+ choose_action_func: auth_required_choose_action_func_type = auth_required_choose_func
264
195
  actions: Optional[AuthRequiredActionsSettings] = None
265
-
266
- @property
267
- def kwargs_func(self) -> build_kwargs_from_handlers_func_type:
268
- """
269
- Returns the function used to build keyword arguments for the actions.
270
-
271
- Returns:
272
- build_kwargs_from_handlers_func_type: The internal function `_build_kwargs_from_handlers_func`.
273
- """
274
-
275
- return _build_kwargs_from_handlers_func
276
-
277
- def to_dict(self) -> _AuthRequiredActionsHandler:
278
- """
279
- Converts the settings object to its dictionary representation.
280
-
281
- Returns:
282
- _AuthRequiredActionsHandler: The dictionary representation suitable for internal use.
283
- """
284
-
285
- return _AuthRequiredActionsHandler(
286
- choose_action_func=self.choose_action_func,
287
- actions=self.actions.to_dict()
288
- if self.actions is not None
289
- else AuthRequiredActionsSettings().to_dict(),
290
- )
291
-
292
-
293
- class _AuthRequired(AbstractEvent):
294
- """
295
- Internal TypedDict representing the complete configuration for an 'AuthRequired' event listener.
296
196
 
297
- This structure extends `AbstractEvent` with specifics for the Fetch.AuthRequired domain event.
298
197
 
299
- Attributes:
300
- class_to_use_path (str): Path to the CDP event class ("fetch.AuthRequired").
301
- listen_buffer_size (int): Buffer size for the listener channel.
302
- handle_function (handle_auth_required_func_type): The main handler function for the event (_handle_auth_required).
303
- actions_handler (_AuthRequiredActionsHandler): Callbacks and configurations for choosing and executing actions based on the event.
304
- on_error_func (on_error_func_type): Function to call on error during event handling.
305
- """
306
-
307
- class_to_use_path: str
308
- listen_buffer_size: int
309
- handle_function: "handle_auth_required_func_type"
310
- actions_handler: _AuthRequiredActionsHandler
311
- on_error_func: on_error_func_type
312
-
313
-
314
- async def _handle_auth_required(self: "DevToolsTarget", handler_settings: _AuthRequired, event: Any):
198
+ async def _handle_auth_required(
199
+ self: DevToolsTarget,
200
+ handler_settings: "AuthRequiredSettings",
201
+ event: Any
202
+ ):
315
203
  """
316
204
  Handles the 'fetch.AuthRequired' CDP event.
317
205
 
@@ -322,56 +210,54 @@ async def _handle_auth_required(self: "DevToolsTarget", handler_settings: _AuthR
322
210
 
323
211
  Args:
324
212
  self (DevToolsTarget): The DevToolsTarget instance.
325
- handler_settings (_AuthRequired): The configuration settings for handling the 'AuthRequired' event.
213
+ handler_settings (AuthRequiredSettings): The configuration settings for handling the 'AuthRequired' event.
326
214
  event (Any): The 'AuthRequired' event object received from the CDP.
327
215
 
328
216
  Raises:
329
217
  BaseException: If a critical error occurs during the event handling process.
330
218
  """
331
219
 
332
- await self.log(level="INFO", message=f"Started to handle for '{event}'")
220
+ await self.log_cdp(level="INFO", message=f"Started to handle for '{event}'")
333
221
 
334
222
  try:
335
- chosen_actions_func_names = handler_settings["actions_handler"]["choose_action_func"](self, event)
336
- await self.log(level="INFO", message=f"Chosen actions: '{chosen_actions_func_names}'")
223
+ chosen_actions_func_names = handler_settings.actions_handler.choose_action_func(self, event)
224
+ await self.log_cdp(level="INFO", message=f"Chosen actions: '{chosen_actions_func_names}'")
337
225
 
338
226
  for action_func_name in chosen_actions_func_names:
339
- chosen_func = handler_settings["actions_handler"]["actions"][action_func_name]
340
- kwargs = await chosen_func["kwargs_func"](self, chosen_func["parameters_handlers"], event)
341
- await self.log(level="INFO", message=f"Kwargs for '{action_func_name}': '{kwargs}'")
342
- response_handle_func = chosen_func["response_handle_func"]
227
+ chosen_func = getattr(handler_settings.actions_handler.actions, action_func_name)
228
+ kwargs = await chosen_func.kwargs_func(self, chosen_func.parameters_handlers, event)
229
+
230
+ await self.log_cdp(level="INFO", message=f"Kwargs for '{action_func_name}': '{kwargs}'")
231
+ response_handle_func = chosen_func.response_handle_func
343
232
 
344
233
  try:
345
234
  response = await execute_cdp_command(
346
- self,
347
- "raise",
348
- await self.get_devtools_object(f"fetch.{action_func_name}"),
235
+ self=self,
236
+ error_mode="raise",
237
+ function=self.devtools_package.get(["fetch", action_func_name]),
349
238
  **kwargs
350
239
  )
351
- await self.log(
240
+ await self.log_cdp(
352
241
  level="AuthRequired",
353
242
  message=f"Function '{action_func_name}' response: '{response}'"
354
243
  )
355
244
 
356
245
  if response_handle_func is not None:
357
246
  self._nursery_object.start_soon(response_handle_func, self, response)
358
- except* cdp_end_exceptions:
247
+ except* CDPEndExceptions:
359
248
  pass
360
249
  except* BaseException as error:
361
- await self.log_error(error=error)
362
-
363
- on_error = handler_settings["on_error_func"]
250
+ await self.log_cdp_error(error=error)
364
251
 
365
- if on_error is not None:
366
- on_error(self, event, error)
367
- except* cdp_end_exceptions as error:
252
+ if handler_settings.on_error_func is not None:
253
+ handler_settings.on_error_func(self, event, error)
254
+ except* CDPEndExceptions as error:
368
255
  raise error
369
256
  except* BaseException as error:
370
- await self.log_error(error=error)
257
+ await self.log_cdp_error(error=error)
371
258
  raise error
372
259
 
373
260
 
374
- @dataclass
375
261
  class AuthRequiredSettings(AbstractEventSettings):
376
262
  """
377
263
  Settings for handling the 'fetch.AuthRequired' event.
@@ -380,294 +266,20 @@ class AuthRequiredSettings(AbstractEventSettings):
380
266
  including buffer size, the actions to take, and error handling.
381
267
 
382
268
  Attributes:
269
+ class_to_use_path (str): The CDP event class path ("fetch.AuthRequired").
270
+ handle_function (handle_auth_required_func_type): The function responsible for processing the event.
383
271
  actions_handler (AuthRequiredActionsHandlerSettings): Configuration for the event's actions handler, determining which action to take (e.g., continueWithAuth) and how to build its parameters.
384
272
  listen_buffer_size (int): The buffer size for the event listener channel. Defaults to 10.
385
273
  on_error_func (on_error_func_type): An optional function to call if an error occurs during event handling. Defaults to None.
386
274
  """
387
275
 
276
+ class_to_use_path: str = "fetch.AuthRequired"
277
+ handle_function: handle_auth_required_func_type = _handle_auth_required
388
278
  actions_handler: AuthRequiredActionsHandlerSettings
389
279
  listen_buffer_size: int = 10
390
280
  on_error_func: on_error_func_type = None
391
-
392
- @property
393
- def handle_function(self) -> "handle_auth_required_func_type":
394
- """
395
- Returns the main handler function for the 'fetch.AuthRequired' event.
396
-
397
- Returns:
398
- handle_auth_required_func_type: The internal function `_handle_auth_required`.
399
- """
400
-
401
- return _handle_auth_required
402
-
403
- @property
404
- def class_to_use_path(self) -> str:
405
- """
406
- Returns the path to the CDP event class for 'fetch.AuthRequired'.
407
-
408
- Returns:
409
- str: The string "fetch.AuthRequired".
410
- """
411
-
412
- return "fetch.AuthRequired"
413
-
414
- def to_dict(self) -> _AuthRequired:
415
- """
416
- Converts the settings object to its dictionary representation.
417
-
418
- Returns:
419
- _AuthRequired: The dictionary representation suitable for internal use.
420
- """
421
-
422
- return _AuthRequired(
423
- class_to_use_path=self.class_to_use_path,
424
- listen_buffer_size=self.listen_buffer_size,
425
- handle_function=self.handle_function,
426
- actions_handler=self.actions_handler.to_dict(),
427
- on_error_func=self.on_error_func,
428
- )
429
-
430
-
431
- class _ContinueResponseParametersHandlers(TypedDict):
432
- """
433
- Internal TypedDict for handlers related to the 'continueResponse' action parameters.
434
-
435
- Attributes:
436
- response_code (Optional[ParameterHandler]): Handler for the HTTP response code.
437
- response_phrase (Optional[ParameterHandler]): Handler for the HTTP response phrase.
438
- response_headers (Optional[ParameterHandler]): Handler for the response headers.
439
- binary_response_headers (Optional[ParameterHandler]): Handler for binary response headers (base64 encoded).
440
- """
441
-
442
- response_code: Optional[ParameterHandler]
443
- response_phrase: Optional[ParameterHandler]
444
- response_headers: Optional[ParameterHandler]
445
- binary_response_headers: Optional[ParameterHandler]
446
-
447
-
448
- class _ContinueResponseAction(AbstractAction):
449
- """
450
- Internal TypedDict for the 'continueResponse' action configuration within RequestPaused.
451
-
452
- Attributes:
453
- kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments for the `continueResponse` CDP command.
454
- response_handle_func (response_handle_func_type): A function to process the response from the CDP command.
455
- parameters_handlers (_ContinueResponseParametersHandlers): Handlers for modifying response parameters.
456
- """
457
-
458
- kwargs_func: build_kwargs_from_handlers_func_type
459
- response_handle_func: response_handle_func_type
460
- parameters_handlers: _ContinueResponseParametersHandlers
461
-
462
-
463
- class _FulfillRequestParametersHandlers(TypedDict):
464
- """
465
- Internal TypedDict for handlers related to the 'fulfillRequest' action parameters.
466
-
467
- Attributes:
468
- response_code (ParameterHandler): Required handler for the HTTP response code (e.g., 200).
469
- response_headers (Optional[ParameterHandler]): Handler for the response headers.
470
- binary_response_headers (Optional[ParameterHandler]): Handler for binary response headers (base64 encoded).
471
- body (Optional[ParameterHandler]): Handler for the response body (base64 encoded string).
472
- response_phrase (Optional[ParameterHandler]): Handler for the HTTP response phrase (e.g., "OK").
473
- """
474
-
475
- response_code: ParameterHandler
476
- response_headers: Optional[ParameterHandler]
477
- binary_response_headers: Optional[ParameterHandler]
478
- body: Optional[ParameterHandler]
479
- response_phrase: Optional[ParameterHandler]
480
-
481
-
482
- class _FulfillRequestAction(AbstractAction):
483
- """
484
- Internal TypedDict for the 'fulfillRequest' action configuration within RequestPaused.
485
-
486
- Attributes:
487
- kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments for the `fulfillRequest` CDP command.
488
- response_handle_func (response_handle_func_type): A function to process the response from the CDP command.
489
- parameters_handlers (_FulfillRequestParametersHandlers): Handlers for mock response parameters.
490
- """
491
-
492
- kwargs_func: build_kwargs_from_handlers_func_type
493
- response_handle_func: response_handle_func_type
494
- parameters_handlers: _FulfillRequestParametersHandlers
495
-
496
-
497
- class _FailRequestParametersHandlers(TypedDict):
498
- """
499
- Internal TypedDict for handlers related to the 'failRequest' action parameters.
500
-
501
- Attributes:
502
- error_reason (ParameterHandler): Required handler for providing the network error reason (a string from Network.ErrorReason enum).
503
- """
504
-
505
- error_reason: ParameterHandler
506
-
507
-
508
- class _FailRequestAction(AbstractAction):
509
- """
510
- Internal TypedDict for the 'failRequest' action configuration within RequestPaused.
511
-
512
- Attributes:
513
- kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments for the `failRequest` CDP command.
514
- response_handle_func (response_handle_func_type): A function to process the response from the CDP command.
515
- parameters_handlers (_FailRequestParametersHandlers): Handlers for the error reason parameter.
516
- """
517
-
518
- kwargs_func: build_kwargs_from_handlers_func_type
519
- response_handle_func: response_handle_func_type
520
- parameters_handlers: _FailRequestParametersHandlers
521
-
522
-
523
- class _ContinueRequestParametersHandlers(TypedDict):
524
- """
525
- Internal TypedDict for handlers related to the 'continueRequest' action parameters.
526
-
527
- Attributes:
528
- url (Optional[ParameterHandler]): Handler for modifying the request URL.
529
- method (Optional[ParameterHandler]): Handler for modifying the HTTP method.
530
- post_data (Optional[ParameterHandler]): Handler for modifying the request's post data (base64 encoded string).
531
- headers (Optional[ParameterHandler]): Handler for modifying the request headers.
532
- intercept_response (Optional[ParameterHandler]): Handler for setting response interception behavior for this request.
533
- """
534
-
535
- url: Optional[ParameterHandler]
536
- method: Optional[ParameterHandler]
537
- post_data: Optional[ParameterHandler]
538
- headers: Optional[ParameterHandler]
539
- intercept_response: Optional[ParameterHandler]
540
-
541
-
542
- class _ContinueRequestAction(AbstractAction):
543
- """
544
- Internal TypedDict for the 'continueRequest' action configuration within RequestPaused.
545
-
546
- Attributes:
547
- kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments for the `continueRequest` CDP command.
548
- response_handle_func (response_handle_func_type): A function to process the response from the CDP command.
549
- parameters_handlers (_ContinueRequestParametersHandlers): Handlers for modifying request parameters.
550
- """
551
-
552
- kwargs_func: build_kwargs_from_handlers_func_type
553
- response_handle_func: response_handle_func_type
554
- parameters_handlers: _ContinueRequestParametersHandlers
555
-
556
-
557
- class _RequestPausedActions(TypedDict):
558
- """
559
- Internal TypedDict mapping action names for RequestPaused event to their configurations.
560
-
561
- Attributes:
562
- continue_request (Optional[_ContinueRequestAction]): Configuration for the 'continueRequest' action.
563
- fail_request (Optional[_FailRequestAction]): Configuration for the 'failRequest' action.
564
- fulfill_request (Optional[_FulfillRequestAction]): Configuration for the 'fulfillRequest' action.
565
- continue_response (Optional[_ContinueResponseAction]): Configuration for the 'continueResponse' action.
566
- """
567
-
568
- continue_request: Optional[_ContinueRequestAction]
569
- fail_request: Optional[_FailRequestAction]
570
- fulfill_request: Optional[_FulfillRequestAction]
571
- continue_response: Optional[_ContinueResponseAction]
572
-
573
-
574
- class _RequestPausedActionsHandler(AbstractEventActionsHandler):
575
- """
576
- Internal TypedDict for the actions handler configuration for the 'RequestPaused' event.
577
-
578
- Attributes:
579
- choose_action_func (request_paused_choose_action_func_type): A function that determines which actions (by name) should be executed for a given 'RequestPaused' event.
580
- actions (_RequestPausedActions): A dictionary mapping action names to their full configurations.
581
- """
582
-
583
- choose_action_func: "request_paused_choose_action_func_type"
584
- actions: _RequestPausedActions
585
-
586
-
587
- class _RequestPaused(AbstractEvent):
588
- """
589
- Internal TypedDict representing the complete configuration for a 'RequestPaused' event listener.
590
-
591
- This structure extends `AbstractEvent` with specifics for the Fetch.RequestPaused domain event.
592
-
593
- Attributes:
594
- class_to_use_path (str): Path to the CDP event class ("fetch.RequestPaused").
595
- listen_buffer_size (int): Buffer size for the listener channel.
596
- handle_function (handle_request_paused_func_type): The main handler function for the event (_handle_request_paused).
597
- actions_handler (_RequestPausedActionsHandler): Callbacks and configurations for choosing and executing actions based on the event.
598
- on_error_func (on_error_func_type): Function to call on error during event handling.
599
- """
600
-
601
- class_to_use_path: str
602
- listen_buffer_size: int
603
- handle_function: "handle_request_paused_func_type"
604
- actions_handler: _RequestPausedActionsHandler
605
- on_error_func: on_error_func_type
606
-
607
-
608
- async def _handle_request_paused(self: "DevToolsTarget", handler_settings: _RequestPaused, event: Any):
609
- """
610
- Handles the 'fetch.RequestPaused' CDP event.
611
-
612
- This function determines which actions to take based on the `choose_action_func`
613
- defined in the handler settings, builds the necessary keyword arguments for the
614
- chosen actions using their respective parameter handlers, executes the CDP commands,
615
- and processes their responses.
616
-
617
- Args:
618
- self (DevToolsTarget): The DevToolsTarget instance.
619
- handler_settings (_RequestPaused): The configuration settings for handling the 'RequestPaused' event.
620
- event (Any): The 'RequestPaused' event object received from the CDP.
621
281
 
622
- Raises:
623
- BaseException: If a critical error occurs during the event handling process.
624
- """
625
-
626
- await self.log(level="INFO", message=f"Started to handle for '{event}'")
627
-
628
- try:
629
- chosen_actions_func_names = handler_settings["actions_handler"]["choose_action_func"](self, event)
630
- await self.log(level="INFO", message=f"Chosen actions: '{chosen_actions_func_names}'")
631
-
632
- for action_func_name in chosen_actions_func_names:
633
- chosen_action_func = handler_settings["actions_handler"]["actions"][action_func_name]
634
-
635
- kwargs = await chosen_action_func["kwargs_func"](self, chosen_action_func["parameters_handlers"], event)
636
- await self.log(level="INFO", message=f"Kwargs for '{action_func_name}': '{kwargs}'")
637
-
638
- response_handle_func = chosen_action_func["response_handle_func"]
639
-
640
- try:
641
- response = await execute_cdp_command(
642
- self,
643
- "raise",
644
- await self.get_devtools_object(f"fetch.{action_func_name}"),
645
- **kwargs
646
- )
647
- await self.log(
648
- level="RequestPaused",
649
- message=f"Function '{action_func_name}' response: '{response}'"
650
- )
651
-
652
- if response_handle_func is not None:
653
- self._nursery_object.start_soon(response_handle_func, self, response)
654
- except* cdp_end_exceptions:
655
- pass
656
- except* BaseException as error:
657
- await self.log_error(error=error)
658
-
659
- on_error = handler_settings["on_error_func"]
660
-
661
- if on_error is not None:
662
- on_error(self, event, error)
663
- except* cdp_end_exceptions as error:
664
- raise error
665
- except* BaseException as error:
666
- await self.log_error(error=error)
667
- raise error
668
282
 
669
-
670
- @dataclass
671
283
  class ContinueResponseHandlersSettings(AbstractActionParametersHandlersSettings):
672
284
  """
673
285
  Configuration for handlers that modify a response before it continues using `fetch.continueResponse`.
@@ -685,24 +297,8 @@ class ContinueResponseHandlersSettings(AbstractActionParametersHandlersSettings)
685
297
  response_phrase: Optional[ParameterHandler] = None
686
298
  response_headers: Optional[ParameterHandler] = None
687
299
  binary_response_headers: Optional[ParameterHandler] = None
688
-
689
- def to_dict(self) -> _ContinueResponseParametersHandlers:
690
- """
691
- Converts the settings object to its dictionary representation.
692
-
693
- Returns:
694
- _ContinueResponseParametersHandlers: The dictionary representation suitable for internal use.
695
- """
696
-
697
- return _ContinueResponseParametersHandlers(
698
- response_code=self.response_code,
699
- response_phrase=self.response_phrase,
700
- response_headers=self.response_headers,
701
- binary_response_headers=self.binary_response_headers
702
- )
703
-
704
-
705
- @dataclass
300
+
301
+
706
302
  class ContinueResponseSettings(AbstractActionSettings):
707
303
  """
708
304
  Settings for the 'continueResponse' action for a paused request (from RequestPaused event).
@@ -710,42 +306,16 @@ class ContinueResponseSettings(AbstractActionSettings):
710
306
  This action is used to modify and continue a request *after* the response has been received but before it is processed by the browser.
711
307
 
712
308
  Attributes:
309
+ kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments from handlers.
713
310
  response_handle_func (response_handle_func_type): An optional awaitable function to process the response from the `fetch.continueResponse` CDP command. Defaults to None.
714
311
  parameters_handlers (Optional[ContinueResponseHandlersSettings]): Configuration for the response parameter handlers that provide modified response details. Defaults to None.
715
312
  """
716
313
 
314
+ kwargs_func: build_kwargs_from_handlers_func_type = _build_kwargs_from_handlers_func
717
315
  response_handle_func: response_handle_func_type = None
718
316
  parameters_handlers: Optional[ContinueResponseHandlersSettings] = None
719
-
720
- @property
721
- def kwargs_func(self) -> build_kwargs_from_handlers_func_type:
722
- """
723
- Returns the function used to build keyword arguments for the `continueResponse` command.
724
-
725
- Returns:
726
- build_kwargs_from_handlers_func_type: The internal function `_build_kwargs_from_handlers_func`.
727
- """
728
-
729
- return _build_kwargs_from_handlers_func
730
-
731
- def to_dict(self) -> _ContinueResponseAction:
732
- """
733
- Converts the settings object to its dictionary representation.
734
-
735
- Returns:
736
- _ContinueResponseAction: The dictionary representation suitable for internal use.
737
- """
738
-
739
- return _ContinueResponseAction(
740
- kwargs_func=self.kwargs_func,
741
- response_handle_func=self.response_handle_func,
742
- parameters_handlers=self.parameters_handlers.to_dict()
743
- if self.parameters_handlers is not None
744
- else ContinueResponseHandlersSettings().to_dict(),
745
- )
746
-
747
-
748
- @dataclass
317
+
318
+
749
319
  class FulfillRequestHandlersSettings(AbstractActionParametersHandlersSettings):
750
320
  """
751
321
  Configuration for handlers that provide a mock response to a request using `fetch.fulfillRequest`.
@@ -765,25 +335,8 @@ class FulfillRequestHandlersSettings(AbstractActionParametersHandlersSettings):
765
335
  binary_response_headers: Optional[ParameterHandler] = None
766
336
  body: Optional[ParameterHandler] = None
767
337
  response_phrase: Optional[ParameterHandler] = None
768
-
769
- def to_dict(self) -> _FulfillRequestParametersHandlers:
770
- """
771
- Converts the settings object to its dictionary representation.
772
-
773
- Returns:
774
- _FulfillRequestParametersHandlers: The dictionary representation suitable for internal use.
775
- """
776
-
777
- return _FulfillRequestParametersHandlers(
778
- response_code=self.response_code,
779
- response_headers=self.response_headers,
780
- binary_response_headers=self.binary_response_headers,
781
- body=self.body,
782
- response_phrase=self.response_phrase,
783
- )
784
-
785
-
786
- @dataclass
338
+
339
+
787
340
  class FulfillRequestSettings(AbstractActionSettings):
788
341
  """
789
342
  Settings for the 'fulfillRequest' action for a paused request (from RequestPaused event).
@@ -791,40 +344,16 @@ class FulfillRequestSettings(AbstractActionSettings):
791
344
  This action is used to provide a completely mock response for a request, preventing the browser from sending it to the network.
792
345
 
793
346
  Attributes:
347
+ kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments from handlers.
794
348
  parameters_handlers (FulfillRequestHandlersSettings): Configuration for the mock response parameter handlers.
795
349
  response_handle_func (response_handle_func_type): An optional awaitable function to process the response from the `fetch.fulfillRequest` CDP command. Defaults to None.
796
350
  """
797
351
 
352
+ kwargs_func: build_kwargs_from_handlers_func_type = _build_kwargs_from_handlers_func
798
353
  parameters_handlers: FulfillRequestHandlersSettings
799
354
  response_handle_func: response_handle_func_type = None
800
-
801
- @property
802
- def kwargs_func(self) -> build_kwargs_from_handlers_func_type:
803
- """
804
- Returns the function used to build keyword arguments for the `fulfillRequest` command.
805
-
806
- Returns:
807
- build_kwargs_from_handlers_func_type: The internal function `_build_kwargs_from_handlers_func`.
808
- """
809
-
810
- return _build_kwargs_from_handlers_func
811
-
812
- def to_dict(self) -> _FulfillRequestAction:
813
- """
814
- Converts the settings object to its dictionary representation.
815
-
816
- Returns:
817
- _FulfillRequestAction: The dictionary representation suitable for internal use.
818
- """
819
-
820
- return _FulfillRequestAction(
821
- kwargs_func=self.kwargs_func,
822
- response_handle_func=self.response_handle_func,
823
- parameters_handlers=self.parameters_handlers.to_dict(),
824
- )
825
-
826
-
827
- @dataclass
355
+
356
+
828
357
  class FailRequestHandlersSettings(AbstractActionParametersHandlersSettings):
829
358
  """
830
359
  Configuration for handlers that specify the reason for failing a request using `fetch.failRequest`.
@@ -836,19 +365,8 @@ class FailRequestHandlersSettings(AbstractActionParametersHandlersSettings):
836
365
  """
837
366
 
838
367
  error_reason: ParameterHandler
839
-
840
- def to_dict(self) -> _FailRequestParametersHandlers:
841
- """
842
- Converts the settings object to its dictionary representation.
843
368
 
844
- Returns:
845
- _FailRequestParametersHandlers: The dictionary representation suitable for internal use.
846
- """
847
-
848
- return _FailRequestParametersHandlers(error_reason=self.error_reason)
849
369
 
850
-
851
- @dataclass
852
370
  class FailRequestSettings(AbstractActionSettings):
853
371
  """
854
372
  Settings for the 'failRequest' action for a paused request (from RequestPaused event).
@@ -856,40 +374,16 @@ class FailRequestSettings(AbstractActionSettings):
856
374
  This action is used to cause the request to fail with a specific network error reason.
857
375
 
858
376
  Attributes:
377
+ kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments from handlers.
859
378
  parameters_handlers (FailRequestHandlersSettings): Configuration for the error reason handler.
860
379
  response_handle_func (response_handle_func_type): An optional awaitable function to process the response from the `fetch.failRequest` CDP command. Defaults to None.
861
380
  """
862
381
 
382
+ kwargs_func: build_kwargs_from_handlers_func_type = _build_kwargs_from_handlers_func
863
383
  parameters_handlers: FailRequestHandlersSettings
864
384
  response_handle_func: response_handle_func_type = None
865
-
866
- @property
867
- def kwargs_func(self) -> build_kwargs_from_handlers_func_type:
868
- """
869
- Returns the function used to build keyword arguments for the `failRequest` command.
870
-
871
- Returns:
872
- build_kwargs_from_handlers_func_type: The internal function `_build_kwargs_from_handlers_func`.
873
- """
874
-
875
- return _build_kwargs_from_handlers_func
876
-
877
- def to_dict(self) -> _FailRequestAction:
878
- """
879
- Converts the settings object to its dictionary representation.
880
-
881
- Returns:
882
- _FailRequestAction: The dictionary representation suitable for internal use.
883
- """
884
-
885
- return _FailRequestAction(
886
- kwargs_func=self.kwargs_func,
887
- response_handle_func=self.response_handle_func,
888
- parameters_handlers=self.parameters_handlers.to_dict(),
889
- )
890
-
891
-
892
- @dataclass
385
+
386
+
893
387
  class ContinueRequestHandlersSettings(AbstractActionParametersHandlersSettings):
894
388
  """
895
389
  Configuration for handlers that modify a request before it continues using `fetch.continueRequest`.
@@ -909,25 +403,8 @@ class ContinueRequestHandlersSettings(AbstractActionParametersHandlersSettings):
909
403
  post_data: Optional[ParameterHandler] = None
910
404
  headers: Optional[ParameterHandler] = None
911
405
  intercept_response: Optional[ParameterHandler] = None
912
-
913
- def to_dict(self) -> _ContinueRequestParametersHandlers:
914
- """
915
- Converts the settings object to its dictionary representation.
916
-
917
- Returns:
918
- _ContinueRequestParametersHandlers: The dictionary representation suitable for internal use.
919
- """
920
-
921
- return _ContinueRequestParametersHandlers(
922
- url=self.url,
923
- method=self.method,
924
- post_data=self.post_data,
925
- headers=self.headers,
926
- intercept_response=self.intercept_response,
927
- )
928
-
929
-
930
- @dataclass
406
+
407
+
931
408
  class ContinueRequestSettings(AbstractActionSettings):
932
409
  """
933
410
  Settings for the 'continueRequest' action for a paused request (from RequestPaused event).
@@ -935,42 +412,16 @@ class ContinueRequestSettings(AbstractActionSettings):
935
412
  This action is used to allow the request to proceed, optionally after modifying it.
936
413
 
937
414
  Attributes:
415
+ kwargs_func (build_kwargs_from_handlers_func_type): Function to build keyword arguments from handlers.
938
416
  response_handle_func (response_handle_func_type): An optional awaitable function to process the response from the `fetch.continueRequest` CDP command. Defaults to None.
939
417
  parameters_handlers (Optional[ContinueRequestHandlersSettings]): Configuration for the request parameter handlers that provide modified request details. Defaults to None.
940
418
  """
941
419
 
420
+ kwargs_func: build_kwargs_from_handlers_func_type = _build_kwargs_from_handlers_func
942
421
  response_handle_func: response_handle_func_type = None
943
422
  parameters_handlers: Optional[ContinueRequestHandlersSettings] = None
944
-
945
- @property
946
- def kwargs_func(self) -> build_kwargs_from_handlers_func_type:
947
- """
948
- Returns the function used to build keyword arguments for the `continueRequest` command.
949
-
950
- Returns:
951
- build_kwargs_from_handlers_func_type: The internal function `_build_kwargs_from_handlers_func`.
952
- """
953
-
954
- return _build_kwargs_from_handlers_func
955
-
956
- def to_dict(self) -> _ContinueRequestAction:
957
- """
958
- Converts the settings object to its dictionary representation.
959
-
960
- Returns:
961
- _ContinueRequestAction: The dictionary representation suitable for internal use.
962
- """
963
-
964
- return _ContinueRequestAction(
965
- kwargs_func=self.kwargs_func,
966
- response_handle_func=self.response_handle_func,
967
- parameters_handlers=self.parameters_handlers.to_dict()
968
- if self.parameters_handlers is not None
969
- else ContinueRequestHandlersSettings().to_dict(),
970
- )
971
-
972
-
973
- @dataclass
423
+
424
+
974
425
  class RequestPausedActionsSettings(AbstractEventActionsSettings):
975
426
  """
976
427
  Container for configurations of possible actions to take when a request is paused.
@@ -986,61 +437,89 @@ class RequestPausedActionsSettings(AbstractEventActionsSettings):
986
437
  fail_request: Optional[FailRequestSettings] = None
987
438
  fulfill_request: Optional[FulfillRequestSettings] = None
988
439
  continue_response: Optional[ContinueResponseSettings] = None
989
-
990
- def to_dict(self) -> _RequestPausedActions:
991
- """
992
- Converts the settings object to its dictionary representation.
993
-
994
- Returns:
995
- _RequestPausedActions: The dictionary representation suitable for internal use.
996
- """
997
-
998
- return _RequestPausedActions(
999
- continue_request=self.continue_request.to_dict()
1000
- if self.continue_request
1001
- else None,
1002
- fail_request=self.fail_request.to_dict()
1003
- if self.fail_request
1004
- else None,
1005
- fulfill_request=self.fulfill_request.to_dict()
1006
- if self.fulfill_request
1007
- else None,
1008
- continue_response=self.continue_response.to_dict()
1009
- if self.continue_response
1010
- else None,
1011
- )
1012
-
1013
-
1014
- @dataclass
440
+
441
+
1015
442
  class RequestPausedActionsHandlerSettings(AbstractEventActionsHandlerSettings):
1016
443
  """
1017
444
  Settings for handling the 'fetch.RequestPaused' event by choosing and executing specific actions.
1018
445
 
1019
446
  Attributes:
1020
- choose_action_func (request_paused_choose_action_func_type): A function that takes the DevTools instance and the event object and returns a list of action names (Literals) to execute. Defaults to `request_paused_choose_func`.
447
+ choose_action_func (request_paused_choose_action_func_type): A function that takes the DevTools instance and the event object and returns a List of action names (Literals) to execute. Defaults to `request_paused_choose_func`.
1021
448
  actions (Optional[RequestPausedActionsSettings]): Container for the configuration of the available actions. Defaults to None.
1022
449
  """
1023
450
 
1024
- choose_action_func: "request_paused_choose_action_func_type" = request_paused_choose_func
451
+ choose_action_func: request_paused_choose_action_func_type = request_paused_choose_func
1025
452
  actions: Optional[RequestPausedActionsSettings] = None
453
+
454
+
455
+ async def _handle_request_paused(
456
+ self: DevToolsTarget,
457
+ handler_settings: "RequestPausedSettings",
458
+ event: Any
459
+ ):
460
+ """
461
+ Handles the 'fetch.RequestPaused' CDP event.
462
+
463
+ This function determines which actions to take based on the `choose_action_func`
464
+ defined in the handler settings, builds the necessary keyword arguments for the
465
+ chosen actions using their respective parameter handlers, executes the CDP commands,
466
+ and processes their responses.
467
+
468
+ Args:
469
+ self (DevToolsTarget): The DevToolsTarget instance.
470
+ handler_settings (RequestPausedSettings): The configuration settings for handling the 'RequestPaused' event.
471
+ event (Any): The 'RequestPaused' event object received from the CDP.
472
+
473
+ Raises:
474
+ BaseException: If a critical error occurs during the event handling process.
475
+ """
476
+
477
+ await self.log_cdp(level="INFO", message=f"Started to handle for '{event}'")
478
+
479
+ try:
480
+ chosen_actions_func_names = handler_settings.actions_handler.choose_action_func(self, event)
481
+ await self.log_cdp(level="INFO", message=f"Chosen actions: '{chosen_actions_func_names}'")
482
+
483
+ for action_func_name in chosen_actions_func_names:
484
+ chosen_action_func = getattr(handler_settings.actions_handler.actions, action_func_name)
1026
485
 
1027
- def to_dict(self) -> _RequestPausedActionsHandler:
1028
- """
1029
- Converts the settings object to its dictionary representation.
1030
-
1031
- Returns:
1032
- _RequestPausedActionsHandler: The dictionary representation suitable for internal use.
1033
- """
1034
-
1035
- return _RequestPausedActionsHandler(
1036
- choose_action_func=self.choose_action_func,
1037
- actions=self.actions.to_dict()
1038
- if self.actions is not None
1039
- else RequestPausedActionsSettings().to_dict(),
1040
- )
1041
-
1042
-
1043
- @dataclass
486
+ kwargs = await chosen_action_func.kwargs_func(self, chosen_action_func.parameters_handlers, event)
487
+ await self.log_cdp(level="INFO", message=f"Kwargs for '{action_func_name}': '{kwargs}'")
488
+
489
+ response_handle_func = chosen_action_func.response_handle_func
490
+
491
+ try:
492
+ response = await execute_cdp_command(
493
+ self=self,
494
+ error_mode="log",
495
+ function=self.devtools_package.get(["fetch", action_func_name]),
496
+ **kwargs
497
+ )
498
+
499
+ if isinstance(response, ExceptionThrown):
500
+ raise response.exception
501
+
502
+ await self.log_cdp(
503
+ level="RequestPaused",
504
+ message=f"Function '{action_func_name}' response: '{response}'"
505
+ )
506
+
507
+ if response_handle_func is not None:
508
+ self._nursery_object.start_soon(response_handle_func, self, response)
509
+ except* CDPEndExceptions:
510
+ pass
511
+ except* BaseException as error:
512
+ await self.log_cdp_error(error=error)
513
+
514
+ if handler_settings.on_error_func is not None:
515
+ handler_settings.on_error_func(self, event, error)
516
+ except* CDPEndExceptions as error:
517
+ raise error
518
+ except* BaseException as error:
519
+ await self.log_cdp_error(error=error)
520
+ raise error
521
+
522
+
1044
523
  class RequestPausedSettings(AbstractEventSettings):
1045
524
  """
1046
525
  Settings for handling the 'fetch.RequestPaused' event.
@@ -1049,70 +528,20 @@ class RequestPausedSettings(AbstractEventSettings):
1049
528
  including buffer size, the actions to take, and error handling.
1050
529
 
1051
530
  Attributes:
531
+ handle_function (handle_request_paused_func_type): The function responsible for processing the event.
532
+ class_to_use_path (str): The CDP event class path ("fetch.RequestPaused").
1052
533
  listen_buffer_size (int): The buffer size for the event listener channel. Defaults to 100.
1053
534
  actions_handler (Optional[RequestPausedActionsHandlerSettings]): Configuration for the event's actions handler, determining which action(s) to take (e.g., continueRequest, fulfillRequest) and how to build their parameters. Defaults to None.
1054
535
  on_error_func (on_error_func_type): An optional function to call if an error occurs during event handling. Defaults to None.
1055
536
  """
1056
537
 
538
+ handle_function: handle_request_paused_func_type = _handle_request_paused
539
+ class_to_use_path: str = "fetch.RequestPaused"
1057
540
  listen_buffer_size: int = 100
1058
541
  actions_handler: Optional[RequestPausedActionsHandlerSettings] = None
1059
542
  on_error_func: on_error_func_type = None
1060
-
1061
- @property
1062
- def handle_function(self) -> "handle_request_paused_func_type":
1063
- """
1064
- Returns the main handler function for the 'fetch.RequestPaused' event.
1065
-
1066
- Returns:
1067
- handle_request_paused_func_type: The internal function `_handle_request_paused`.
1068
- """
1069
-
1070
- return _handle_request_paused
1071
-
1072
- @property
1073
- def class_to_use_path(self) -> str:
1074
- """
1075
- Returns the path to the CDP event class for 'fetch.RequestPaused'.
1076
-
1077
- Returns:
1078
- str: The string "fetch.RequestPaused".
1079
- """
1080
-
1081
- return "fetch.RequestPaused"
1082
-
1083
- def to_dict(self) -> _RequestPaused:
1084
- """
1085
- Converts the settings object to its dictionary representation.
1086
-
1087
- Returns:
1088
- _RequestPaused: The dictionary representation suitable for internal use.
1089
- """
1090
-
1091
- return _RequestPaused(
1092
- class_to_use_path=self.class_to_use_path,
1093
- listen_buffer_size=self.listen_buffer_size,
1094
- handle_function=self.handle_function,
1095
- actions_handler=self.actions_handler.to_dict()
1096
- if self.actions_handler is not None
1097
- else RequestPausedActionsHandlerSettings().to_dict(),
1098
- on_error_func=self.on_error_func,
1099
- )
1100
-
1101
-
1102
- class _FetchHandlers(TypedDict):
1103
- """
1104
- Internal TypedDict for all event handlers within the Fetch domain.
1105
-
1106
- Attributes:
1107
- request_paused (Optional[_RequestPaused]): Configuration for the 'RequestPaused' event handler.
1108
- auth_required (Optional[_AuthRequired]): Configuration for the 'AuthRequired' event handler.
1109
- """
1110
-
1111
- request_paused: Optional[_RequestPaused]
1112
- auth_required: Optional[_AuthRequired]
1113
543
 
1114
544
 
1115
- @dataclass
1116
545
  class FetchHandlersSettings(AbstractDomainHandlersSettings):
1117
546
  """
1118
547
  Container for all handler settings within the Fetch domain.
@@ -1124,39 +553,8 @@ class FetchHandlersSettings(AbstractDomainHandlersSettings):
1124
553
 
1125
554
  request_paused: Optional[RequestPausedSettings] = None
1126
555
  auth_required: Optional[AuthRequiredSettings] = None
1127
-
1128
- def to_dict(self) -> _FetchHandlers:
1129
- """
1130
- Converts the settings object to its dictionary representation.
1131
-
1132
- Returns:
1133
- _FetchHandlers: The dictionary representation suitable for internal use.
1134
- """
1135
-
1136
- return _FetchHandlers(
1137
- request_paused=self.request_paused.to_dict()
1138
- if self.request_paused is not None
1139
- else None,
1140
- auth_required=self.auth_required.to_dict()
1141
- if self.auth_required is not None
1142
- else None,
1143
- )
1144
-
1145
-
1146
- class _FetchEnableKwargs(TypedDict, total=False):
1147
- """
1148
- Internal TypedDict for keyword arguments to enable the Fetch domain.
1149
-
1150
- Attributes:
1151
- patterns (Optional[Sequence[Any]]): A list of request patterns to intercept.
1152
- handle_auth_requests (Optional[bool]): Whether to intercept authentication requests.
1153
- """
1154
-
1155
- patterns: Optional[Sequence[Any]]
1156
- handle_auth_requests: Optional[bool]
1157
556
 
1158
557
 
1159
- @dataclass
1160
558
  class FetchEnableKwargsSettings(AbstractDomainEnableKwargsSettings):
1161
559
  """
1162
560
  Keyword arguments for enabling the Fetch domain using `fetch.enable`.
@@ -1164,55 +562,14 @@ class FetchEnableKwargsSettings(AbstractDomainEnableKwargsSettings):
1164
562
  These settings are passed to the `fetch.enable` CDP command when the Fetch domain is activated.
1165
563
 
1166
564
  Attributes:
1167
- patterns (Optional[Sequence[Any]]): A list of request patterns to intercept. Each pattern is typically a dictionary matching the CDP `Fetch.RequestPattern` type. If None, all requests are intercepted. Defaults to None.
565
+ patterns (Optional[Sequence[Any]]): A List of request patterns to intercept. Each pattern is typically a dictionary matching the CDP `Fetch.RequestPattern` type. If None, all requests are intercepted. Defaults to None.
1168
566
  handle_auth_requests (Optional[bool]): Whether to intercept authentication requests (`fetch.AuthRequired` events). If True, `auth_required` events will be emitted. Defaults to None.
1169
567
  """
1170
568
 
1171
569
  patterns: Optional[Sequence[Any]] = None
1172
570
  handle_auth_requests: Optional[bool] = None
1173
-
1174
- def to_dict(self) -> _FetchEnableKwargs:
1175
- """
1176
- Converts the settings object to its dictionary representation.
1177
-
1178
- Returns:
1179
- _FetchEnableKwargs: The dictionary representation suitable for internal use.
1180
- """
1181
-
1182
- kwargs = {}
1183
-
1184
- if self.patterns is not None:
1185
- kwargs["patterns"] = self.patterns
1186
-
1187
- if self.handle_auth_requests is not None:
1188
- kwargs["handle_auth_requests"] = self.handle_auth_requests
1189
-
1190
- return _FetchEnableKwargs(**kwargs)
1191
-
1192
-
1193
- class _Fetch(AbstractDomain):
1194
- """
1195
- Internal TypedDict for the complete Fetch domain configuration.
1196
571
 
1197
- This structure is used internally by the DevTools manager to configure the
1198
- Fetch domain, including how to enable/disable it and what event handlers to use.
1199
572
 
1200
- Attributes:
1201
- name (str): The name of the domain ('fetch').
1202
- enable_func_path (str): The path to the function to enable the domain ("fetch.enable").
1203
- enable_func_kwargs (Optional[_FetchEnableKwargs]): Keyword arguments for the enable function.
1204
- disable_func_path (str): The path to the function to disable the domain ("fetch.disable").
1205
- handlers (_FetchHandlers): The configured event handlers for the domain.
1206
- """
1207
-
1208
- name: str
1209
- enable_func_path: str
1210
- enable_func_kwargs: Optional[_FetchEnableKwargs]
1211
- disable_func_path: str
1212
- handlers: _FetchHandlers
1213
-
1214
-
1215
- @dataclass
1216
573
  class FetchSettings(AbstractDomainSettings):
1217
574
  """
1218
575
  Top-level configuration for the Fetch domain.
@@ -1221,75 +578,41 @@ class FetchSettings(AbstractDomainSettings):
1221
578
  including its enabling parameters and event handlers.
1222
579
 
1223
580
  Attributes:
581
+ name (str): The name of the domain ("fetch").
582
+ disable_func_path (str): Path to disable command ("fetch.disable").
583
+ enable_func_path (str): Path to enable command ("fetch.enable").
584
+ exclude_target_types (Sequence[str]): List of target types to exclude.
585
+ include_target_types (Sequence[str]): List of target types to include.
1224
586
  enable_func_kwargs (Optional[FetchEnableKwargsSettings]): Keyword arguments for enabling the Fetch domain using `fetch.enable`. Defaults to None.
1225
587
  handlers (FetchHandlersSettings): Container for all handler settings within the Fetch domain (e.g., RequestPaused, AuthRequired). Defaults to None.
1226
588
  """
1227
589
 
590
+ name: str = "fetch"
591
+ disable_func_path: str = "fetch.disable"
592
+ enable_func_path: str = "fetch.enable"
593
+ exclude_target_types: Sequence[str] = Field(default_factory=list)
594
+ include_target_types: Sequence[str] = Field(default_factory=list)
1228
595
  enable_func_kwargs: Optional[FetchEnableKwargsSettings] = None
1229
596
  handlers: Optional[FetchHandlersSettings] = None
1230
-
1231
- @property
1232
- def disable_func_path(self) -> str:
1233
- """
1234
- Returns the path to the function to disable the domain.
1235
-
1236
- Returns:
1237
- str: The string "fetch.disable".
1238
- """
1239
-
1240
- return "fetch.disable"
1241
-
1242
- @property
1243
- def enable_func_path(self) -> str:
1244
- """
1245
- Returns the path to the function to enable the domain.
1246
-
1247
- Returns:
1248
- str: The string "fetch.enable".
1249
- """
1250
-
1251
- return "fetch.enable"
1252
-
1253
- @property
1254
- def name(self) -> str:
1255
- """
1256
- Returns the name of the domain.
1257
-
1258
- Returns:
1259
- str: The string "fetch".
1260
- """
1261
-
1262
- return "fetch"
1263
-
1264
- def to_dict(self) -> _Fetch:
1265
- """
1266
- Converts the settings object to its dictionary representation.
1267
-
1268
- Returns:
1269
- _Fetch: The dictionary representation suitable for internal use.
1270
- """
1271
-
1272
- return _Fetch(
1273
- name=self.name,
1274
- enable_func_path=self.enable_func_path,
1275
- enable_func_kwargs=self.enable_func_kwargs.to_dict()
1276
- if self.enable_func_kwargs is not None
1277
- else FetchEnableKwargsSettings().to_dict(),
1278
- disable_func_path=self.disable_func_path,
1279
- handlers=self.handlers.to_dict()
1280
- if self.handlers is not None
1281
- else FetchHandlersSettings().to_dict(),
1282
- )
1283
597
 
1284
598
 
1285
- request_paused_actions_literal = Literal[
1286
- "continue_request",
1287
- "fail_request",
1288
- "fulfill_request",
1289
- "continue_response"
1290
- ]
1291
- auth_required_actions_literal = Literal["continue_with_auth"]
1292
- request_paused_choose_action_func_type = Callable[["DevToolsTarget", Any], Sequence[request_paused_actions_literal]]
1293
- auth_required_choose_action_func_type = Callable[["DevToolsTarget", Any], Sequence[auth_required_actions_literal]]
1294
- handle_request_paused_func_type = Callable[["DevToolsTarget", _RequestPaused, Any], Awaitable[None]]
1295
- handle_auth_required_func_type = Callable[["DevToolsTarget", _AuthRequired, Any], Awaitable[None]]
599
+ ContinueWithAuthParameterHandlersSettings.model_rebuild()
600
+ ContinueWithAuthParameterHandlersSettings.model_rebuild()
601
+ ContinueWithAuthSettings.model_rebuild()
602
+ AuthRequiredActionsSettings.model_rebuild()
603
+ AuthRequiredActionsHandlerSettings.model_rebuild()
604
+ AuthRequiredSettings.model_rebuild()
605
+ ContinueResponseHandlersSettings.model_rebuild()
606
+ ContinueResponseSettings.model_rebuild()
607
+ FulfillRequestHandlersSettings.model_rebuild()
608
+ FulfillRequestSettings.model_rebuild()
609
+ FailRequestHandlersSettings.model_rebuild()
610
+ FailRequestSettings.model_rebuild()
611
+ ContinueRequestHandlersSettings.model_rebuild()
612
+ ContinueRequestSettings.model_rebuild()
613
+ RequestPausedActionsSettings.model_rebuild()
614
+ RequestPausedActionsHandlerSettings.model_rebuild()
615
+ RequestPausedSettings.model_rebuild()
616
+ FetchHandlersSettings.model_rebuild()
617
+ FetchEnableKwargsSettings.model_rebuild()
618
+ FetchSettings.model_rebuild()