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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. osn_selenium/_functions.py +84 -0
  2. osn_selenium/_typehints.py +19 -0
  3. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  4. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  5. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  6. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  7. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  8. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  9. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  10. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  11. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  12. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  13. osn_selenium/abstract/executors/cdp/console.py +18 -0
  14. osn_selenium/abstract/executors/cdp/css.py +197 -0
  15. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  16. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  17. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  18. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  19. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  20. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  21. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  22. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  23. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  24. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  25. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  26. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  27. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  28. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  29. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  30. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  31. osn_selenium/abstract/executors/cdp/input.py +158 -0
  32. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  33. osn_selenium/abstract/executors/cdp/io.py +24 -0
  34. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  35. osn_selenium/abstract/executors/cdp/log.py +27 -0
  36. osn_selenium/abstract/executors/cdp/media.py +14 -0
  37. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  38. osn_selenium/abstract/executors/cdp/network.py +252 -0
  39. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  40. osn_selenium/abstract/executors/cdp/page.py +347 -0
  41. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  42. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  43. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  44. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  45. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  46. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  47. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  48. osn_selenium/abstract/executors/cdp/security.py +26 -0
  49. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  50. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  51. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  52. osn_selenium/abstract/executors/cdp/target.py +125 -0
  53. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  54. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  55. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  56. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  57. osn_selenium/abstract/executors/javascript.py +203 -0
  58. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  59. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  60. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  61. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  62. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  63. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  64. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  65. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  66. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  67. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  68. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  69. osn_selenium/abstract/instances/alert.py +67 -0
  70. osn_selenium/abstract/instances/browser.py +76 -0
  71. osn_selenium/abstract/instances/browsing_context.py +310 -0
  72. osn_selenium/abstract/instances/dialog.py +107 -0
  73. osn_selenium/abstract/instances/fedcm.py +133 -0
  74. osn_selenium/abstract/instances/mobile.py +79 -0
  75. osn_selenium/abstract/instances/network.py +100 -0
  76. osn_selenium/abstract/instances/permissions.py +52 -0
  77. osn_selenium/abstract/instances/script.py +109 -0
  78. osn_selenium/abstract/instances/shadow_root.py +81 -0
  79. osn_selenium/abstract/instances/storage.py +98 -0
  80. osn_selenium/abstract/instances/switch_to.py +104 -0
  81. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  82. osn_selenium/abstract/instances/web_element.py +395 -0
  83. osn_selenium/abstract/instances/web_extension.py +70 -0
  84. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  85. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  86. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  87. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  88. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  89. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  90. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  91. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  92. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  93. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  94. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  95. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  96. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  97. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  98. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  99. osn_selenium/abstract/webdriver/core/base.py +298 -0
  100. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  101. osn_selenium/abstract/webdriver/core/components.py +82 -0
  102. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  103. osn_selenium/abstract/webdriver/core/element.py +55 -0
  104. osn_selenium/abstract/webdriver/core/file.py +82 -0
  105. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  106. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  107. osn_selenium/abstract/webdriver/core/script.py +88 -0
  108. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  109. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  110. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  111. osn_selenium/abstract/webdriver/core/window.py +237 -0
  112. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  113. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  114. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  115. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  116. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  117. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  118. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  119. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  120. osn_selenium/base_mixin.py +122 -0
  121. osn_selenium/browsers_handler/__init__.py +47 -17
  122. osn_selenium/browsers_handler/_linux.py +226 -0
  123. osn_selenium/browsers_handler/_windows.py +21 -14
  124. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  125. osn_selenium/dev_tools/_decorators.py +140 -0
  126. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  127. osn_selenium/dev_tools/_functions.py +174 -0
  128. osn_selenium/dev_tools/_system_utils.py +35 -0
  129. osn_selenium/dev_tools/_typehints.py +32 -0
  130. osn_selenium/dev_tools/_validators.py +227 -0
  131. osn_selenium/dev_tools/_wrappers.py +95 -0
  132. osn_selenium/dev_tools/domains/__init__.py +7 -40
  133. osn_selenium/dev_tools/domains/abstract.py +98 -254
  134. osn_selenium/dev_tools/domains/fetch.py +229 -906
  135. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  136. osn_selenium/dev_tools/filters.py +40 -0
  137. osn_selenium/dev_tools/logger/main.py +226 -0
  138. osn_selenium/dev_tools/logger/models.py +232 -0
  139. osn_selenium/dev_tools/logger/target.py +258 -0
  140. osn_selenium/dev_tools/manager/__init__.py +16 -0
  141. osn_selenium/dev_tools/manager/base.py +147 -0
  142. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  143. osn_selenium/dev_tools/manager/logging.py +153 -0
  144. osn_selenium/dev_tools/manager/settings.py +89 -0
  145. osn_selenium/dev_tools/manager/targets.py +175 -0
  146. osn_selenium/dev_tools/models.py +49 -0
  147. osn_selenium/dev_tools/settings.py +135 -0
  148. osn_selenium/dev_tools/target/__init__.py +16 -0
  149. osn_selenium/dev_tools/target/base.py +438 -0
  150. osn_selenium/dev_tools/target/detach.py +54 -0
  151. osn_selenium/dev_tools/target/discovery.py +112 -0
  152. osn_selenium/dev_tools/target/events.py +120 -0
  153. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  154. osn_selenium/dev_tools/target/lifecycle.py +179 -0
  155. osn_selenium/dev_tools/target/logging.py +155 -0
  156. osn_selenium/exceptions/__init__.py +1 -0
  157. osn_selenium/exceptions/base.py +9 -0
  158. osn_selenium/exceptions/configuration.py +84 -0
  159. osn_selenium/exceptions/devtools.py +114 -0
  160. osn_selenium/exceptions/flags.py +45 -0
  161. osn_selenium/exceptions/instance.py +92 -0
  162. osn_selenium/exceptions/javascript.py +31 -0
  163. osn_selenium/exceptions/logic.py +31 -0
  164. osn_selenium/exceptions/path.py +77 -0
  165. osn_selenium/exceptions/platform.py +33 -0
  166. osn_selenium/exceptions/protocol.py +86 -0
  167. osn_selenium/exceptions/webdriver.py +44 -0
  168. osn_selenium/exceptions/window.py +63 -0
  169. osn_selenium/executors/__init__.py +1 -0
  170. osn_selenium/executors/sync/__init__.py +1 -0
  171. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  172. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  173. osn_selenium/executors/sync/cdp/animation.py +50 -0
  174. osn_selenium/executors/sync/cdp/audits.py +48 -0
  175. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  176. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  177. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  178. osn_selenium/executors/sync/cdp/browser.py +131 -0
  179. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  180. osn_selenium/executors/sync/cdp/cast.py +38 -0
  181. osn_selenium/executors/sync/cdp/console.py +24 -0
  182. osn_selenium/executors/sync/cdp/css.py +187 -0
  183. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  184. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  185. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  186. osn_selenium/executors/sync/cdp/dom.py +310 -0
  187. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  188. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  189. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  190. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  191. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  192. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  193. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  194. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  195. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  196. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  197. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  198. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  199. osn_selenium/executors/sync/cdp/input.py +233 -0
  200. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  201. osn_selenium/executors/sync/cdp/io.py +33 -0
  202. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  203. osn_selenium/executors/sync/cdp/log.py +35 -0
  204. osn_selenium/executors/sync/cdp/media.py +21 -0
  205. osn_selenium/executors/sync/cdp/memory.py +62 -0
  206. osn_selenium/executors/sync/cdp/network.py +287 -0
  207. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  208. osn_selenium/executors/sync/cdp/page.py +365 -0
  209. osn_selenium/executors/sync/cdp/performance.py +33 -0
  210. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  211. osn_selenium/executors/sync/cdp/preload.py +21 -0
  212. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  213. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  214. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  215. osn_selenium/executors/sync/cdp/schema.py +23 -0
  216. osn_selenium/executors/sync/cdp/security.py +30 -0
  217. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  218. osn_selenium/executors/sync/cdp/storage.py +151 -0
  219. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  220. osn_selenium/executors/sync/cdp/target.py +147 -0
  221. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  222. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  223. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  224. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  225. osn_selenium/executors/sync/javascript.py +79 -0
  226. osn_selenium/executors/trio_threads/__init__.py +1 -0
  227. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  228. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  229. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  230. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  231. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  232. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  233. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  234. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  235. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  236. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  237. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  238. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  239. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  240. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  241. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  242. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  243. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  244. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  245. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  246. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  247. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  248. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  249. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  250. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  251. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  252. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  253. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  254. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  255. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  256. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  257. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  258. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  259. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  260. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  261. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  262. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  263. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  264. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  265. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  266. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  267. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  268. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  269. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  270. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  271. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  272. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  273. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  274. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  275. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  276. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  277. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  278. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  279. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  280. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  281. osn_selenium/executors/trio_threads/javascript.py +90 -0
  282. osn_selenium/executors/unified/__init__.py +1 -0
  283. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  284. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  285. osn_selenium/executors/unified/cdp/animation.py +50 -0
  286. osn_selenium/executors/unified/cdp/audits.py +45 -0
  287. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  288. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  289. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  290. osn_selenium/executors/unified/cdp/browser.py +143 -0
  291. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  292. osn_selenium/executors/unified/cdp/cast.py +32 -0
  293. osn_selenium/executors/unified/cdp/console.py +18 -0
  294. osn_selenium/executors/unified/cdp/css.py +237 -0
  295. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  296. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  297. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  298. osn_selenium/executors/unified/cdp/dom.py +380 -0
  299. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  300. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  301. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  302. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  303. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  304. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  305. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  306. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  307. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  308. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  309. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  310. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  311. osn_selenium/executors/unified/cdp/input.py +254 -0
  312. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  313. osn_selenium/executors/unified/cdp/io.py +29 -0
  314. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  315. osn_selenium/executors/unified/cdp/log.py +29 -0
  316. osn_selenium/executors/unified/cdp/media.py +15 -0
  317. osn_selenium/executors/unified/cdp/memory.py +59 -0
  318. osn_selenium/executors/unified/cdp/network.py +323 -0
  319. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  320. osn_selenium/executors/unified/cdp/page.py +410 -0
  321. osn_selenium/executors/unified/cdp/performance.py +27 -0
  322. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  323. osn_selenium/executors/unified/cdp/preload.py +15 -0
  324. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  325. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  326. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  327. osn_selenium/executors/unified/cdp/schema.py +17 -0
  328. osn_selenium/executors/unified/cdp/security.py +27 -0
  329. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  330. osn_selenium/executors/unified/cdp/storage.py +178 -0
  331. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  332. osn_selenium/executors/unified/cdp/target.py +165 -0
  333. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  334. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  335. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  336. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  337. osn_selenium/executors/unified/javascript.py +108 -0
  338. osn_selenium/flags/__init__.py +1 -0
  339. osn_selenium/flags/_functions.py +45 -0
  340. osn_selenium/flags/_typehints.py +34 -0
  341. osn_selenium/flags/_validators.py +101 -0
  342. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +165 -243
  343. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +133 -371
  344. osn_selenium/flags/chrome.py +259 -0
  345. osn_selenium/flags/edge.py +259 -0
  346. osn_selenium/flags/models/__init__.py +1 -0
  347. osn_selenium/flags/models/base.py +130 -0
  348. osn_selenium/flags/models/blink.py +263 -0
  349. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  350. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  351. osn_selenium/flags/models/values.py +44 -0
  352. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  353. osn_selenium/flags/yandex.py +259 -0
  354. osn_selenium/instances/__init__.py +1 -0
  355. osn_selenium/instances/_functions.py +242 -0
  356. osn_selenium/instances/_typehints.py +148 -0
  357. osn_selenium/instances/_utils.py +143 -0
  358. osn_selenium/instances/convert.py +287 -0
  359. osn_selenium/instances/protocols.py +105 -0
  360. osn_selenium/instances/sync/__init__.py +1 -0
  361. osn_selenium/instances/sync/action_chains/__init__.py +26 -0
  362. osn_selenium/instances/sync/action_chains/base.py +74 -0
  363. osn_selenium/instances/sync/action_chains/click.py +61 -0
  364. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  365. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  366. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  367. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  368. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  369. osn_selenium/instances/sync/action_chains/move.py +46 -0
  370. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  371. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  372. osn_selenium/instances/sync/alert.py +69 -0
  373. osn_selenium/instances/sync/browser.py +72 -0
  374. osn_selenium/instances/sync/browsing_context.py +193 -0
  375. osn_selenium/instances/sync/dialog.py +81 -0
  376. osn_selenium/instances/sync/fedcm.py +92 -0
  377. osn_selenium/instances/sync/mobile.py +75 -0
  378. osn_selenium/instances/sync/network.py +90 -0
  379. osn_selenium/instances/sync/permissions.py +80 -0
  380. osn_selenium/instances/sync/script.py +77 -0
  381. osn_selenium/instances/sync/shadow_root.py +91 -0
  382. osn_selenium/instances/sync/storage.py +91 -0
  383. osn_selenium/instances/sync/switch_to.py +92 -0
  384. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  385. osn_selenium/instances/sync/web_element.py +179 -0
  386. osn_selenium/instances/sync/web_extension.py +77 -0
  387. osn_selenium/instances/trio_threads/__init__.py +1 -0
  388. osn_selenium/instances/trio_threads/action_chains/__init__.py +26 -0
  389. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  390. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  391. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  392. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  393. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  394. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  395. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  396. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  397. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  399. osn_selenium/instances/trio_threads/alert.py +87 -0
  400. osn_selenium/instances/trio_threads/browser.py +90 -0
  401. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  402. osn_selenium/instances/trio_threads/dialog.py +99 -0
  403. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  404. osn_selenium/instances/trio_threads/mobile.py +93 -0
  405. osn_selenium/instances/trio_threads/network.py +108 -0
  406. osn_selenium/instances/trio_threads/permissions.py +102 -0
  407. osn_selenium/instances/trio_threads/script.py +95 -0
  408. osn_selenium/instances/trio_threads/shadow_root.py +123 -0
  409. osn_selenium/instances/trio_threads/storage.py +109 -0
  410. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  411. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  412. osn_selenium/instances/trio_threads/web_element.py +217 -0
  413. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  414. osn_selenium/instances/unified/__init__.py +1 -0
  415. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  416. osn_selenium/instances/unified/action_chains/base.py +31 -0
  417. osn_selenium/instances/unified/action_chains/click.py +27 -0
  418. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  419. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  420. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  421. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  422. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  423. osn_selenium/instances/unified/action_chains/move.py +24 -0
  424. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  425. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  426. osn_selenium/instances/unified/alert.py +29 -0
  427. osn_selenium/instances/unified/browser.py +33 -0
  428. osn_selenium/instances/unified/browsing_context.py +151 -0
  429. osn_selenium/instances/unified/dialog.py +42 -0
  430. osn_selenium/instances/unified/fedcm.py +48 -0
  431. osn_selenium/instances/unified/mobile.py +36 -0
  432. osn_selenium/instances/unified/network.py +50 -0
  433. osn_selenium/instances/unified/permissions.py +43 -0
  434. osn_selenium/instances/unified/script.py +38 -0
  435. osn_selenium/instances/unified/shadow_root.py +46 -0
  436. osn_selenium/instances/unified/storage.py +48 -0
  437. osn_selenium/instances/unified/switch_to.py +49 -0
  438. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  439. osn_selenium/instances/unified/web_element.py +145 -0
  440. osn_selenium/instances/unified/web_extension.py +38 -0
  441. osn_selenium/javascript/__init__.py +1 -0
  442. osn_selenium/javascript/_functions.py +63 -0
  443. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  444. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  445. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  446. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  447. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  448. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  449. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  450. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  451. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  452. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  453. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  454. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  455. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  456. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  457. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  458. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  459. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  460. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  461. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  462. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  463. osn_selenium/javascript/functions.py +44 -0
  464. osn_selenium/javascript/models.py +35 -0
  465. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  466. osn_selenium/models.py +139 -0
  467. osn_selenium/webdrivers/_args_helpers.py +181 -0
  468. osn_selenium/webdrivers/_bridges.py +57 -0
  469. osn_selenium/webdrivers/_decorators.py +83 -0
  470. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  471. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  472. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  473. osn_selenium/webdrivers/_typehints.py +10 -0
  474. osn_selenium/webdrivers/protocols.py +50 -0
  475. osn_selenium/webdrivers/sync/__init__.py +1 -0
  476. osn_selenium/webdrivers/sync/blink/__init__.py +114 -0
  477. osn_selenium/webdrivers/sync/blink/base.py +128 -0
  478. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  479. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  480. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  481. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  482. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  483. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  484. osn_selenium/webdrivers/sync/chrome/__init__.py +67 -0
  485. osn_selenium/webdrivers/sync/chrome/base.py +106 -0
  486. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  487. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  488. osn_selenium/webdrivers/sync/core/__init__.py +91 -0
  489. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  490. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  491. osn_selenium/webdrivers/sync/core/base.py +167 -0
  492. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  493. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  494. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  495. osn_selenium/webdrivers/sync/core/element.py +42 -0
  496. osn_selenium/webdrivers/sync/core/file.py +40 -0
  497. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  498. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  499. osn_selenium/webdrivers/sync/core/script.py +53 -0
  500. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  501. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  502. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  503. osn_selenium/webdrivers/sync/core/window.py +99 -0
  504. osn_selenium/webdrivers/sync/edge/__init__.py +67 -0
  505. osn_selenium/webdrivers/sync/edge/base.py +102 -0
  506. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  507. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  508. osn_selenium/webdrivers/sync/yandex/__init__.py +67 -0
  509. osn_selenium/webdrivers/sync/yandex/base.py +99 -0
  510. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  511. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  512. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  513. osn_selenium/webdrivers/trio_threads/blink/__init__.py +124 -0
  514. osn_selenium/webdrivers/trio_threads/blink/base.py +133 -0
  515. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  516. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  517. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  518. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  519. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  520. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  521. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +81 -0
  522. osn_selenium/webdrivers/trio_threads/chrome/base.py +107 -0
  523. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  524. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  525. osn_selenium/webdrivers/trio_threads/core/__init__.py +109 -0
  526. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  527. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  528. osn_selenium/webdrivers/trio_threads/core/base.py +191 -0
  529. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  530. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  531. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  532. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  533. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  534. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  535. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  536. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  537. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  538. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  539. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  540. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  541. osn_selenium/webdrivers/trio_threads/edge/__init__.py +81 -0
  542. osn_selenium/webdrivers/trio_threads/edge/base.py +103 -0
  543. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  544. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  545. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +81 -0
  546. osn_selenium/webdrivers/trio_threads/yandex/base.py +100 -0
  547. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  548. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  549. osn_selenium/webdrivers/unified/__init__.py +1 -0
  550. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  551. osn_selenium/webdrivers/unified/blink/base.py +131 -0
  552. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  553. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  554. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  555. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  556. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  557. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  558. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  559. osn_selenium/webdrivers/unified/chrome/base.py +54 -0
  560. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  561. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  562. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  563. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  564. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  565. osn_selenium/webdrivers/unified/core/base.py +132 -0
  566. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  567. osn_selenium/webdrivers/unified/core/components.py +32 -0
  568. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  569. osn_selenium/webdrivers/unified/core/element.py +24 -0
  570. osn_selenium/webdrivers/unified/core/file.py +35 -0
  571. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  572. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  573. osn_selenium/webdrivers/unified/core/script.py +32 -0
  574. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  575. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  576. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  577. osn_selenium/webdrivers/unified/core/window.py +135 -0
  578. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  579. osn_selenium/webdrivers/unified/edge/base.py +52 -0
  580. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  581. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  582. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  583. osn_selenium/webdrivers/unified/yandex/base.py +54 -0
  584. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  585. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  586. osn_selenium-1.0.0.dist-info/METADATA +239 -0
  587. osn_selenium-1.0.0.dist-info/RECORD +608 -0
  588. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/WHEEL +1 -1
  589. osn_selenium/captcha_workers/__init__.py +0 -26
  590. osn_selenium/dev_tools/_types.py +0 -22
  591. osn_selenium/dev_tools/errors.py +0 -89
  592. osn_selenium/dev_tools/logger.py +0 -558
  593. osn_selenium/dev_tools/manager.py +0 -1551
  594. osn_selenium/dev_tools/utils.py +0 -509
  595. osn_selenium/errors.py +0 -16
  596. osn_selenium/types.py +0 -118
  597. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  598. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  599. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  600. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  601. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  602. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  603. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  604. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  605. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  606. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  607. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  608. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  609. osn_selenium/webdrivers/_functions.py +0 -504
  610. osn_selenium/webdrivers/types.py +0 -390
  611. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  612. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  613. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  614. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  615. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  616. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  617. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  618. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  619. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  620. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  621. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  622. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  623. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  624. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  628. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/top_level.txt +0 -0
@@ -1,509 +0,0 @@
1
- import trio
2
- import shutil
3
- import logging
4
- import warnings
5
- import traceback
6
- import functools
7
- from pathlib import Path
8
- from dataclasses import dataclass
9
- from osn_selenium.dev_tools.errors import cdp_end_exceptions
10
- from osn_selenium.dev_tools._types import (
11
- devtools_background_func_type
12
- )
13
- from typing import (
14
- Any,
15
- Callable,
16
- Iterable,
17
- Literal,
18
- Optional,
19
- TYPE_CHECKING,
20
- Union
21
- )
22
-
23
-
24
- if TYPE_CHECKING:
25
- from osn_selenium.dev_tools.logger import LoggerSettings
26
- from osn_selenium.dev_tools.manager import DevTools, DevToolsTarget
27
-
28
-
29
- def warn_if_active(func: Callable) -> Callable:
30
- """
31
- Decorator to warn if DevTools operations are attempted while DevTools is active.
32
-
33
- This decorator is used to wrap methods in the DevTools class that should not be called
34
- while the DevTools event handler context manager is active. It checks the `is_active` flag
35
- of the DevTools instance. If DevTools is active, it issues a warning; otherwise, it proceeds
36
- to execute the original method.
37
-
38
- Args:
39
- func (Callable): The function to be wrapped. This should be a method of the DevTools class.
40
-
41
- Returns:
42
- Callable: The wrapped function. When called, it will check if DevTools is active and either
43
- execute the original function or issue a warning.
44
- """
45
-
46
- @functools.wraps(func)
47
- def wrapper(self: "DevTools", *args: Any, **kwargs: Any) -> Any:
48
- if self.is_active:
49
- warnings.warn("DevTools is active. Exit dev_tools context before changing settings.")
50
-
51
- return func(self, *args, **kwargs)
52
-
53
- return wrapper
54
-
55
-
56
- async def wait_one(*events: trio.Event):
57
- """
58
- Waits for the first of multiple Trio events to be set.
59
-
60
- This function creates a nursery and starts a task for each provided event.
61
- As soon as any event is set, it receives a signal, cancels the nursery,
62
- and returns.
63
-
64
- Args:
65
- *events (trio.Event): One or more Trio Event objects to wait for.
66
- """
67
-
68
- async def waiter(event: trio.Event, send_chan_: trio.MemorySendChannel):
69
- """Internal helper to wait for an event and send a signal."""
70
-
71
- await event.wait()
72
- await send_chan_.send(0)
73
-
74
- send_chan, receive_chan = trio.open_memory_channel(0)
75
-
76
- async with trio.open_nursery() as nursery:
77
- for event_ in events:
78
- nursery.start_soon(waiter, event_, send_chan.clone())
79
-
80
- await receive_chan.receive()
81
- nursery.cancel_scope.cancel()
82
-
83
-
84
- def log_on_error(func: Callable) -> Callable:
85
- """
86
- Decorator that logs any `BaseException` raised by the decorated async function.
87
-
88
- If an exception occurs, it is logged using `log_exception`, and an `ExceptionThrown`
89
- object wrapping the exception is returned instead of re-raising it.
90
-
91
- Args:
92
- func (Callable): The asynchronous function to be wrapped.
93
-
94
- Returns:
95
- Callable: The wrapped asynchronous function.
96
- """
97
-
98
- @functools.wraps(func)
99
- async def wrapper(*args: Any, **kwargs: Any) -> Any:
100
- try:
101
- return await func(*args, **kwargs)
102
- except BaseException as exception:
103
- log_exception(exception)
104
- return ExceptionThrown(exception)
105
-
106
- return wrapper
107
-
108
-
109
- def extract_exception_trace(exception: BaseException) -> str:
110
- """
111
- Extracts a comprehensive traceback string for an exception, including handling for `ExceptionGroup`s.
112
-
113
- This function recursively flattens `ExceptionGroup`s to ensure all nested exceptions
114
- have their tracebacks included in the final output string.
115
-
116
- Args:
117
- exception (BaseException): The exception object to extract the trace from.
118
-
119
- Returns:
120
- str: A multi-line string containing the formatted traceback(s) for the given exception
121
- and any nested exceptions within an `ExceptionGroup`.
122
-
123
- EXAMPLES
124
- ________
125
- >>> try:
126
- ... raise ValueError("Simple error occurred")
127
- ... except ValueError as e:
128
- ... trace = extract_exception_trace(e)
129
- ... # The first line typically indicates the start of a traceback
130
- ... print(trace.splitlines()[0].strip())
131
- ...
132
- >>> try:
133
- ... raise ExceptionGroup(
134
- ... "Multiple issues",
135
- ... [
136
- ... TypeError("Invalid type provided"),
137
- ... ValueError("Value out of range")
138
- ... ]
139
- ... )
140
- ... except ExceptionGroup as eg:
141
- ... trace = extract_exception_trace(eg)
142
- ... # Check if tracebacks for both nested exceptions are present
143
- ... print("TypeError" in trace and "ValueError" in trace)
144
- ...
145
- """
146
-
147
- def flatten_exceptions(exception_: BaseException) -> list[BaseException]:
148
- """Recursively flattens an ExceptionGroup into a list of individual exceptions."""
149
-
150
- if isinstance(exception_, ExceptionGroup):
151
- inner_exceptions = exception_.exceptions
152
- else:
153
- return [exception_]
154
-
155
- result = []
156
- for exception__ in inner_exceptions:
157
- result.extend(flatten_exceptions(exception__))
158
-
159
- return result
160
-
161
- def format_exception(exception_: BaseException) -> str:
162
- """Formats a single exception's traceback into a string."""
163
-
164
- return "".join(
165
- traceback.format_exception(exception_.__class__, exception_, exception_.__traceback__)
166
- )
167
-
168
- return "\n".join(format_exception(exc) for exc in flatten_exceptions(exception))
169
-
170
-
171
- def log_exception(exception: BaseException):
172
- """
173
- Logs the full traceback of an exception at the ERROR level.
174
-
175
- This function uses `extract_exception_trace` to get a comprehensive traceback string
176
- and then logs it using the standard logging module.
177
-
178
- Args:
179
- exception (BaseException): The exception object to log.
180
- """
181
-
182
- logging.log(logging.ERROR, extract_exception_trace(exception))
183
-
184
-
185
- class ExceptionThrown:
186
- """
187
- A wrapper class to indicate that an exception was thrown during an operation.
188
-
189
- This is used in `execute_cdp_command` when `error_mode` is "log" or "pass"
190
- to return an object indicating an error occurred without re-raising it immediately.
191
-
192
- Attributes:
193
- exception (BaseException): The exception that was caught.
194
- traceback (str): The formatted traceback string of the exception.
195
- """
196
-
197
- def __init__(self, exception: BaseException):
198
- """
199
- Initializes the ExceptionThrown wrapper.
200
-
201
- Args:
202
- exception (BaseException): The exception to wrap.
203
- """
204
-
205
- self.exception = exception
206
- self.traceback = extract_exception_trace(exception)
207
-
208
-
209
- async def execute_cdp_command(
210
- self: "DevToolsTarget",
211
- error_mode: Literal["raise", "log", "pass"],
212
- function: Callable[..., Any],
213
- *args: Any,
214
- **kwargs: Any
215
- ) -> Union[Any, ExceptionThrown]:
216
- """
217
- Executes a Chrome DevTools Protocol (CDP) command with specified error handling.
218
-
219
- This function attempts to execute a CDP command via the `cdp_session`.
220
- It provides different behaviors based on the `error_mode` if an exception occurs:
221
- - "raise": Re-raises the exception immediately.
222
- - "log": Logs the exception using the target's logger and returns an `ExceptionThrown` object.
223
- - "pass": Returns an `ExceptionThrown` object without logging the exception.
224
-
225
- Args:
226
- self ("DevToolsTarget"): The `DevToolsTarget` instance through which the command is executed.
227
- error_mode (Literal["raise", "log", "pass"]): Defines how exceptions are handled.
228
- "raise": Re-raises the exception.
229
- "log": Logs the exception and returns `ExceptionThrown`.
230
- "pass": Returns `ExceptionThrown` without logging.
231
- function (Callable[..., Any]): The CDP command function to execute (e.g., `devtools.page.navigate`).
232
- *args (Any): Positional arguments to pass to the CDP command function.
233
- **kwargs (Any): Keyword arguments to pass to the CDP command function.
234
-
235
- Returns:
236
- Union[Any, ExceptionThrown]: The result of the CDP command if successful,
237
- or an `ExceptionThrown` object if an error occurred and `error_mode` is "log" or "pass".
238
-
239
- Raises:
240
- cdp_end_exceptions: If a CDP-related connection error occurs, these are always re-raised.
241
- BaseException: If `error_mode` is "raise" and any other exception occurs.
242
- ValueError: If an unknown `error_mode` is provided.
243
- """
244
-
245
- try:
246
- return await self.cdp_session.execute(function(*args, **kwargs))
247
- except cdp_end_exceptions as error:
248
- raise error
249
- except BaseException as error:
250
- if error_mode == "raise":
251
- raise error
252
- elif error_mode == "log":
253
- await self.log_error(error=error)
254
- return ExceptionThrown(exception=error)
255
- elif error_mode == "pass":
256
- return ExceptionThrown(exception=error)
257
- else:
258
- raise ValueError(f"Wrong error_mode: {error_mode}. Expected: 'raise', 'log', 'pass'.")
259
-
260
-
261
- def _validate_log_filter(
262
- filter_mode: Literal["include", "exclude"],
263
- log_filter: Optional[Union[Any, Iterable[Any]]]
264
- ) -> Callable[[Any], bool]:
265
- """
266
- Creates a callable filter function based on the specified filter mode and values.
267
-
268
- This function generates a lambda that can be used to check if a given log level
269
- or target type should be processed, based on whether the filter is set to
270
- "include" (only process items in the filter) or "exclude" (process all items
271
- except those in the filter).
272
-
273
- Args:
274
- filter_mode (Literal["include", "exclude"]): The mode of the filter.
275
- "include" means only items present in `log_filter` will pass.
276
- "exclude" means all items except those present in `log_filter` will pass.
277
- log_filter (Optional[Union[Any, Sequence[Any]]]):
278
- A single log filter item or a sequence of such items.
279
- If None:
280
- - In "include" mode, the generated filter will always return False (nothing is included).
281
- - In "exclude" mode, the generated filter will always return True (nothing is excluded).
282
-
283
- Returns:
284
- Callable[[Any], bool]: A callable function that takes a single argument (e.g., a log level or target type)
285
- and returns True if it passes the filter, False otherwise.
286
-
287
- Raises:
288
- ValueError: If `filter_mode` is invalid.
289
-
290
- EXAMPLES
291
- ________
292
- >>> # Example 1: Include only "INFO" logs
293
- ... info_only_filter = _validate_log_filter("include", "INFO")
294
- ... print(info_only_filter("INFO")) # True
295
- ... print(info_only_filter("ERROR")) # False
296
-
297
- >>> # Example 2: Exclude "DEBUG" and "WARNING" logs
298
- ... no_debug_warning_filter = _validate_log_filter("exclude", ["DEBUG", "WARNING"])
299
- ... print(no_debug_warning_filter("INFO")) # True
300
- ... print(no_debug_warning_filter("DEBUG")) # False
301
-
302
- >>> # Example 3: No filter (exclude mode, so everything passes)
303
- ... all_logs_filter = _validate_log_filter("exclude", None)
304
- ... print(all_logs_filter("INFO")) # True
305
- ... print(all_logs_filter("ERROR")) # True
306
-
307
- >>> # Example 4: No filter (include mode, so nothing passes)
308
- ... no_logs_filter = _validate_log_filter("include", None)
309
- ... print(no_logs_filter("INFO")) # False
310
- ... print(no_logs_filter("ERROR")) # False
311
- """
312
-
313
- if log_filter is None:
314
- if filter_mode == "include":
315
- return lambda x: False
316
- elif filter_mode == "exclude":
317
- return lambda x: True
318
-
319
- raise ValueError(f"Invalid log filter_mode ({filter_mode}).")
320
-
321
- if isinstance(log_filter, Iterable):
322
- if filter_mode == "include":
323
- return lambda x: x in log_filter
324
- elif filter_mode == "exclude":
325
- return lambda x: x not in log_filter
326
-
327
- raise ValueError(f"Invalid log filter_mode ({filter_mode}).")
328
-
329
- if filter_mode == "include":
330
- return lambda x: x == log_filter
331
- elif filter_mode == "exclude":
332
- return lambda x: x != log_filter
333
-
334
- raise ValueError(f"Invalid log filter_mode ({filter_mode}).")
335
-
336
-
337
- def _validate_type_filter(
338
- type_: str,
339
- filter_mode: Literal["include", "exclude"],
340
- filter_instances: Any
341
- ):
342
- """
343
- Validates a target type against a given filter mode and filter instances.
344
-
345
- This is a wrapper around `_validate_log_filter` specifically for target types.
346
-
347
- Args:
348
- type_ (str): The target type string to check (e.g., "page", "iframe").
349
- filter_mode (Literal["include", "exclude"]): The mode of the filter ("include" or "exclude").
350
- filter_instances (Any): The filter value(s) (e.g., a string or a sequence of strings).
351
-
352
- Returns:
353
- bool: True if the `type_` passes the filter, False otherwise.
354
- """
355
-
356
- return _validate_log_filter(filter_mode, filter_instances)(type_)
357
-
358
-
359
- def _prepare_log_dir(logger_settings: "LoggerSettings"):
360
- """
361
- Prepares the log directory based on the provided logger settings.
362
-
363
- If `log_dir_path` is specified:
364
- - Creates the directory if it doesn't exist.
365
- - If `renew_log` is True and the directory exists, it is cleared (recreated).
366
-
367
- Args:
368
- logger_settings ("LoggerSettings"): The settings object containing log directory configuration.
369
-
370
- Raises:
371
- ValueError: If `log_dir_path` is provided but is not a valid `Path` object
372
- or does not represent a directory.
373
- """
374
-
375
- if isinstance(logger_settings.log_dir_path, Path) and (
376
- logger_settings.log_dir_path.is_dir()
377
- or not logger_settings.log_dir_path.exists()
378
- ):
379
- if not logger_settings.log_dir_path.exists():
380
- logger_settings.log_dir_path.mkdir(parents=True)
381
- elif logger_settings.renew_log:
382
- shutil.rmtree(logger_settings.log_dir_path)
383
-
384
- logger_settings.log_dir_path.mkdir()
385
- elif logger_settings.log_dir_path is not None:
386
- raise ValueError(
387
- f"'log_dir_path' must be a pathlib.Path to directory or None, got {logger_settings.log_dir_path} (type: {type(logger_settings.log_dir_path)})"
388
- )
389
-
390
-
391
- def _background_task_decorator(func: devtools_background_func_type) -> devtools_background_func_type:
392
- """
393
- Decorator for DevToolsTarget background tasks to manage their lifecycle.
394
-
395
- This decorator wraps a target's background task function. It ensures that
396
- `target.background_task_ended` event is set when the function completes,
397
- allowing the `DevToolsTarget` to track the task's termination.
398
-
399
- Args:
400
- func (devtools_background_func_type): The asynchronous background task function
401
- to be wrapped. It should accept a `DevToolsTarget` instance.
402
-
403
- Returns:
404
- devtools_background_func_type: The wrapped function.
405
- """
406
-
407
- @functools.wraps(func)
408
- async def wrapper(target: "DevToolsTarget") -> Any:
409
- target.background_task_ended = trio.Event()
410
-
411
- await func(target)
412
-
413
- target.background_task_ended.set()
414
-
415
- return wrapper
416
-
417
-
418
- @dataclass
419
- class TargetFilter:
420
- """
421
- Dataclass to define a filter for discovering new browser targets.
422
-
423
- Used in `DevToolsSettings` to specify which types of targets (e.g., "page", "iframe")
424
- should be automatically attached to or excluded.
425
-
426
- Attributes:
427
- type_ (Optional[str]): The type of target to filter by (e.g., "page", "iframe").
428
- If None, this filter applies regardless of type.
429
- exclude (Optional[bool]): If True, targets matching `type_` will be excluded.
430
- If False or None, targets matching `type_` will be included.
431
- """
432
-
433
- type_: Optional[str] = None
434
- exclude: Optional[bool] = None
435
-
436
- def to_dict(self) -> dict[str, Any]:
437
- """
438
- Converts the target filter to a dictionary suitable for CDP command parameters.
439
-
440
- Returns:
441
- dict[str, Any]: A dictionary representation of the target filter.
442
- """
443
-
444
- dict_ = {}
445
-
446
- if self.type_ is not None:
447
- dict_["type"] = self.type_
448
-
449
- if self.exclude is not None:
450
- dict_["exclude"] = self.exclude
451
-
452
- return dict_
453
-
454
-
455
- @dataclass
456
- class TargetData:
457
- """
458
- Dataclass to hold essential information about a browser target (e.g., a tab, iframe, or worker).
459
-
460
- Attributes:
461
- target_id (Optional[str]): The unique identifier for the target.
462
- type_ (Optional[str]): The type of the target (e.g., "page", "iframe", "worker").
463
- title (Optional[str]): The title of the target (e.g., the page title).
464
- url (Optional[str]): The URL of the target.
465
- attached (Optional[bool]): Indicates if the DevTools session is currently attached to this target.
466
- """
467
-
468
- target_id: Optional[str] = None
469
- type_: Optional[str] = None
470
- title: Optional[str] = None
471
- url: Optional[str] = None
472
- attached: Optional[bool] = None
473
- can_access_opener: Optional[bool] = None
474
- opener_id: Optional[str] = None
475
- opener_frame_id: Optional[str] = None
476
- browser_context_id: Optional[str] = None
477
- subtype: Optional[str] = None
478
-
479
- def to_dict(self) -> dict[str, Any]:
480
- """
481
- Converts the target data to a dictionary.
482
-
483
- Returns:
484
- dict[str, Any]: A dictionary representation of the target data.
485
- """
486
-
487
- return {
488
- "target_id": self.target_id,
489
- "type": self.type_,
490
- "title": self.title,
491
- "url": self.url,
492
- }
493
-
494
- def to_json(self) -> dict[str, Any]:
495
- """
496
- Converts the target data to a JSON-serializable dictionary.
497
-
498
- Note: `cdp_session` is converted to its string representation as it's not directly JSON-serializable.
499
-
500
- Returns:
501
- dict[str, Any]: A JSON-serializable dictionary representation of the target data.
502
- """
503
-
504
- return {
505
- "target_id": self.target_id,
506
- "type": self.type_,
507
- "title": self.title,
508
- "url": self.url,
509
- }
osn_selenium/errors.py DELETED
@@ -1,16 +0,0 @@
1
- class PlatformNotSupportedError(Exception):
2
- """
3
- Custom exception raised when the current platform is not supported.
4
-
5
- This exception is intended to be raised when the script or application is run on a platform that is not explicitly supported by the program logic.
6
- """
7
-
8
- def __init__(self, platform: str):
9
- """
10
- Initializes a new instance of `PlatformNotSupportedError`.
11
-
12
- Args:
13
- platform (str): The name of the unsupported operating system.
14
- """
15
-
16
- super().__init__(f"Platform not supported: {platform}.")
osn_selenium/types.py DELETED
@@ -1,118 +0,0 @@
1
- from win32api import GetSystemMetrics
2
- from typing import Optional, TypedDict
3
-
4
-
5
- class WindowRect:
6
- """
7
- Represents a window rectangle with x, y, width, and height.
8
-
9
- Attributes:
10
- x (int): The x-coordinate of the top-left corner. Defaults to 1/4 of screen width.
11
- y (int): The y-coordinate of the top-left corner. Defaults to 10% of screen height.
12
- width (int): The width of the rectangle. Defaults to 1/2 of screen width.
13
- height (int): The height of the rectangle. Defaults to 80% of screen height.
14
- """
15
-
16
- def __init__(
17
- self,
18
- x: Optional[int] = None,
19
- y: Optional[int] = None,
20
- width: Optional[int] = None,
21
- height: Optional[int] = None
22
- ):
23
- """
24
- Initializes WindowRect with optional x, y, width, and height values.
25
-
26
- Args:
27
- x (Optional[int]): The x-coordinate. Defaults to None.
28
- y (Optional[int]): The y-coordinate. Defaults to None.
29
- width (Optional[int]): The width. Defaults to None.
30
- height (Optional[int]): The height. Defaults to None.
31
- """
32
-
33
- self.x = GetSystemMetrics(0) // 4
34
-
35
- self.y = int(GetSystemMetrics(1) * 0.1)
36
-
37
- self.width = GetSystemMetrics(0) // 2
38
-
39
- self.height = int(GetSystemMetrics(1) * 0.8)
40
-
41
- self.set_rect(x, y, width, height)
42
-
43
- def set_rect(
44
- self,
45
- x: Optional[int] = None,
46
- y: Optional[int] = None,
47
- width: Optional[int] = None,
48
- height: Optional[int] = None
49
- ) -> "WindowRect":
50
- """
51
- Sets the rectangle dimensions.
52
-
53
- Args:
54
- x (Optional[int]): The x-coordinate. Defaults to None.
55
- y (Optional[int]): The y-coordinate. Defaults to None.
56
- width (Optional[int]): The width. Defaults to None.
57
- height (Optional[int]): The height. Defaults to None.
58
-
59
- Returns:
60
- WindowRect: Returns the instance for method chaining.
61
- """
62
-
63
- if x is not None:
64
- self.x = x
65
-
66
- if y is not None:
67
- self.y = y
68
-
69
- if width is not None:
70
- self.width = width
71
-
72
- if height is not None:
73
- self.height = height
74
-
75
- return self
76
-
77
-
78
- class Size(TypedDict):
79
- """
80
- Represents a dictionary structure defining the size.
81
-
82
- Attributes:
83
- width (int): The width of the rectangle along the x-axis.
84
- height (int): The height of the rectangle along the y-axis.
85
- """
86
-
87
- width: int
88
- height: int
89
-
90
-
91
- class Rectangle(TypedDict):
92
- """
93
- Represents a dictionary structure defining the properties of a rectangle.
94
-
95
- Attributes:
96
- x (int): The x-coordinate of the top-left corner of the rectangle.
97
- y (int): The y-coordinate of the top-left corner of the rectangle.
98
- width (int): The width of the rectangle along the x-axis.
99
- height (int): The height of the rectangle along the y-axis.
100
- """
101
-
102
- x: int
103
- y: int
104
- width: int
105
- height: int
106
-
107
-
108
- class Position(TypedDict):
109
- """
110
- Represents a dictionary structure defining the position.
111
-
112
- Attributes:
113
- x (int): The x-coordinate of the top-left corner of the rectangle.
114
- y (int): The y-coordinate of the top-left corner of the rectangle.
115
- """
116
-
117
- x: int
118
- y: int
@@ -1,37 +0,0 @@
1
- import trio
2
- from trio import CapacityLimiter
3
- from functools import partial, wraps
4
- from typing import (
5
- Any,
6
- Callable,
7
- Coroutine,
8
- Optional,
9
- ParamSpec,
10
- TypeVar
11
- )
12
-
13
-
14
- TrioWrapInput = ParamSpec("TrioWrapInput")
15
- TrioWrapOutput = TypeVar("TrioWrapOutput")
16
-
17
-
18
- def trio_async_wrap(
19
- func: Callable[TrioWrapInput, TrioWrapOutput],
20
- trio_capacity_limiter: Optional[CapacityLimiter] = None
21
- ) -> Callable[TrioWrapInput, Coroutine[Any, Any, TrioWrapOutput]]:
22
- @wraps(func)
23
- def wrapper(*args: TrioWrapInput.args, **kwargs: TrioWrapInput.kwargs) -> Coroutine[Any, Any, TrioWrapOutput]:
24
- func_with_kwargs = partial(func, **kwargs)
25
- return trio.to_thread.run_sync(func_with_kwargs, *args, limiter=trio_capacity_limiter)
26
-
27
- return wrapper
28
-
29
-
30
- def build_cdp_kwargs(**kwargs):
31
- dict_ = {}
32
-
33
- for key, value in kwargs.items():
34
- if value is not None:
35
- dict_[key] = value
36
-
37
- return dict_