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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. osn_selenium/_base_models.py +41 -0
  2. osn_selenium/_cdp_import.py +253 -0
  3. osn_selenium/_functions.py +84 -0
  4. osn_selenium/_typehints.py +19 -0
  5. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  6. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  7. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  8. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  9. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  10. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  11. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  12. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  13. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  14. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  15. osn_selenium/abstract/executors/cdp/console.py +18 -0
  16. osn_selenium/abstract/executors/cdp/css.py +197 -0
  17. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  18. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  19. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  20. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  21. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  22. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  23. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  24. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  25. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  26. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  27. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  28. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  29. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  30. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  31. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  32. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  33. osn_selenium/abstract/executors/cdp/input.py +158 -0
  34. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  35. osn_selenium/abstract/executors/cdp/io.py +24 -0
  36. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  37. osn_selenium/abstract/executors/cdp/log.py +27 -0
  38. osn_selenium/abstract/executors/cdp/media.py +14 -0
  39. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  40. osn_selenium/abstract/executors/cdp/network.py +252 -0
  41. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  42. osn_selenium/abstract/executors/cdp/page.py +347 -0
  43. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  44. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  45. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  46. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  47. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  48. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  49. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  50. osn_selenium/abstract/executors/cdp/security.py +26 -0
  51. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  52. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  53. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  54. osn_selenium/abstract/executors/cdp/target.py +125 -0
  55. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  56. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  57. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  58. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  59. osn_selenium/abstract/executors/cdp.py +63 -0
  60. osn_selenium/abstract/executors/javascript.py +203 -0
  61. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  62. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  63. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  64. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  65. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  66. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  67. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  68. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  69. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  70. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  71. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  72. osn_selenium/abstract/instances/alert.py +67 -0
  73. osn_selenium/abstract/instances/browser.py +76 -0
  74. osn_selenium/abstract/instances/browsing_context.py +310 -0
  75. osn_selenium/abstract/instances/dialog.py +107 -0
  76. osn_selenium/abstract/instances/fedcm.py +133 -0
  77. osn_selenium/abstract/instances/mobile.py +79 -0
  78. osn_selenium/abstract/instances/network.py +100 -0
  79. osn_selenium/abstract/instances/permissions.py +52 -0
  80. osn_selenium/abstract/instances/script.py +109 -0
  81. osn_selenium/abstract/instances/shadow_root.py +81 -0
  82. osn_selenium/abstract/instances/storage.py +98 -0
  83. osn_selenium/abstract/instances/switch_to.py +104 -0
  84. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  85. osn_selenium/abstract/instances/web_element.py +395 -0
  86. osn_selenium/abstract/instances/web_extension.py +70 -0
  87. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  88. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  89. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  90. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  91. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  92. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  93. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  94. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  95. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  96. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  97. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  98. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  99. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  100. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  101. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  102. osn_selenium/abstract/webdriver/core/base.py +298 -0
  103. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  104. osn_selenium/abstract/webdriver/core/components.py +82 -0
  105. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  106. osn_selenium/abstract/webdriver/core/element.py +55 -0
  107. osn_selenium/abstract/webdriver/core/file.py +82 -0
  108. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  109. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  110. osn_selenium/abstract/webdriver/core/script.py +88 -0
  111. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  112. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  113. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  114. osn_selenium/abstract/webdriver/core/window.py +237 -0
  115. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  116. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  117. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  118. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  119. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  120. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  121. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  122. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  123. osn_selenium/base_mixin.py +122 -0
  124. osn_selenium/browsers_handler/__init__.py +47 -17
  125. osn_selenium/browsers_handler/_linux.py +226 -0
  126. osn_selenium/browsers_handler/_windows.py +21 -14
  127. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  128. osn_selenium/dev_tools/_decorators.py +149 -0
  129. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  130. osn_selenium/dev_tools/_functions.py +174 -0
  131. osn_selenium/dev_tools/_system_utils.py +35 -0
  132. osn_selenium/dev_tools/_typehints.py +35 -0
  133. osn_selenium/dev_tools/_validators.py +227 -0
  134. osn_selenium/dev_tools/_wrappers.py +92 -0
  135. osn_selenium/dev_tools/domains/__init__.py +7 -40
  136. osn_selenium/dev_tools/domains/abstract.py +98 -254
  137. osn_selenium/dev_tools/domains/fetch.py +229 -906
  138. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  139. osn_selenium/dev_tools/filters.py +40 -0
  140. osn_selenium/dev_tools/logger/main.py +214 -0
  141. osn_selenium/dev_tools/logger/models.py +232 -0
  142. osn_selenium/dev_tools/logger/target.py +278 -0
  143. osn_selenium/dev_tools/manager/__init__.py +16 -0
  144. osn_selenium/dev_tools/manager/base.py +124 -0
  145. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  146. osn_selenium/dev_tools/manager/logging.py +153 -0
  147. osn_selenium/dev_tools/manager/settings.py +89 -0
  148. osn_selenium/dev_tools/manager/targets.py +175 -0
  149. osn_selenium/dev_tools/models.py +49 -0
  150. osn_selenium/dev_tools/settings.py +139 -0
  151. osn_selenium/dev_tools/target/__init__.py +16 -0
  152. osn_selenium/dev_tools/target/base.py +427 -0
  153. osn_selenium/dev_tools/target/detach.py +54 -0
  154. osn_selenium/dev_tools/target/discovery.py +112 -0
  155. osn_selenium/dev_tools/target/events.py +120 -0
  156. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  157. osn_selenium/dev_tools/target/lifecycle.py +184 -0
  158. osn_selenium/dev_tools/target/logging.py +163 -0
  159. osn_selenium/exceptions/__init__.py +1 -0
  160. osn_selenium/exceptions/base.py +9 -0
  161. osn_selenium/exceptions/configuration.py +84 -0
  162. osn_selenium/exceptions/dependencies.py +60 -0
  163. osn_selenium/exceptions/devtools.py +114 -0
  164. osn_selenium/exceptions/flags.py +45 -0
  165. osn_selenium/exceptions/instance.py +92 -0
  166. osn_selenium/exceptions/javascript.py +31 -0
  167. osn_selenium/exceptions/logic.py +31 -0
  168. osn_selenium/exceptions/path.py +77 -0
  169. osn_selenium/exceptions/platform.py +33 -0
  170. osn_selenium/exceptions/protocol.py +86 -0
  171. osn_selenium/exceptions/webdriver.py +44 -0
  172. osn_selenium/exceptions/window.py +63 -0
  173. osn_selenium/executors/__init__.py +1 -0
  174. osn_selenium/executors/sync/__init__.py +1 -0
  175. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  176. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  177. osn_selenium/executors/sync/cdp/animation.py +50 -0
  178. osn_selenium/executors/sync/cdp/audits.py +48 -0
  179. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  180. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  181. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  182. osn_selenium/executors/sync/cdp/browser.py +131 -0
  183. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  184. osn_selenium/executors/sync/cdp/cast.py +38 -0
  185. osn_selenium/executors/sync/cdp/console.py +24 -0
  186. osn_selenium/executors/sync/cdp/css.py +187 -0
  187. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  188. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  189. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  190. osn_selenium/executors/sync/cdp/dom.py +310 -0
  191. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  192. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  193. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  194. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  195. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  196. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  197. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  198. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  199. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  200. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  201. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  202. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  203. osn_selenium/executors/sync/cdp/input.py +233 -0
  204. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  205. osn_selenium/executors/sync/cdp/io.py +33 -0
  206. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  207. osn_selenium/executors/sync/cdp/log.py +35 -0
  208. osn_selenium/executors/sync/cdp/media.py +21 -0
  209. osn_selenium/executors/sync/cdp/memory.py +62 -0
  210. osn_selenium/executors/sync/cdp/network.py +287 -0
  211. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  212. osn_selenium/executors/sync/cdp/page.py +365 -0
  213. osn_selenium/executors/sync/cdp/performance.py +33 -0
  214. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  215. osn_selenium/executors/sync/cdp/preload.py +21 -0
  216. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  217. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  218. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  219. osn_selenium/executors/sync/cdp/schema.py +23 -0
  220. osn_selenium/executors/sync/cdp/security.py +30 -0
  221. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  222. osn_selenium/executors/sync/cdp/storage.py +151 -0
  223. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  224. osn_selenium/executors/sync/cdp/target.py +147 -0
  225. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  226. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  227. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  228. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  229. osn_selenium/executors/sync/cdp.py +100 -0
  230. osn_selenium/executors/sync/javascript.py +79 -0
  231. osn_selenium/executors/trio_threads/__init__.py +1 -0
  232. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  233. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  234. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  235. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  236. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  237. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  238. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  239. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  240. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  241. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  242. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  243. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  244. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  245. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  246. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  247. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  248. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  249. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  250. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  251. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  252. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  253. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  254. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  255. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  256. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  257. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  258. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  259. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  260. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  261. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  262. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  263. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  264. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  265. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  266. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  267. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  268. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  269. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  270. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  271. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  272. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  273. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  274. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  275. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  276. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  277. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  278. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  279. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  280. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  281. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  282. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  283. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  284. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  285. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  286. osn_selenium/executors/trio_threads/cdp.py +104 -0
  287. osn_selenium/executors/trio_threads/javascript.py +90 -0
  288. osn_selenium/executors/unified/__init__.py +1 -0
  289. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  290. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  291. osn_selenium/executors/unified/cdp/animation.py +50 -0
  292. osn_selenium/executors/unified/cdp/audits.py +45 -0
  293. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  294. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  295. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  296. osn_selenium/executors/unified/cdp/browser.py +143 -0
  297. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  298. osn_selenium/executors/unified/cdp/cast.py +32 -0
  299. osn_selenium/executors/unified/cdp/console.py +18 -0
  300. osn_selenium/executors/unified/cdp/css.py +237 -0
  301. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  302. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  303. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  304. osn_selenium/executors/unified/cdp/dom.py +380 -0
  305. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  306. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  307. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  308. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  309. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  310. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  311. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  312. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  313. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  314. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  315. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  316. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  317. osn_selenium/executors/unified/cdp/input.py +254 -0
  318. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  319. osn_selenium/executors/unified/cdp/io.py +29 -0
  320. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  321. osn_selenium/executors/unified/cdp/log.py +29 -0
  322. osn_selenium/executors/unified/cdp/media.py +15 -0
  323. osn_selenium/executors/unified/cdp/memory.py +59 -0
  324. osn_selenium/executors/unified/cdp/network.py +323 -0
  325. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  326. osn_selenium/executors/unified/cdp/page.py +410 -0
  327. osn_selenium/executors/unified/cdp/performance.py +27 -0
  328. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  329. osn_selenium/executors/unified/cdp/preload.py +15 -0
  330. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  331. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  332. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  333. osn_selenium/executors/unified/cdp/schema.py +17 -0
  334. osn_selenium/executors/unified/cdp/security.py +27 -0
  335. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  336. osn_selenium/executors/unified/cdp/storage.py +178 -0
  337. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  338. osn_selenium/executors/unified/cdp/target.py +165 -0
  339. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  340. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  341. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  342. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  343. osn_selenium/executors/unified/javascript.py +104 -0
  344. osn_selenium/flags/__init__.py +1 -0
  345. osn_selenium/flags/_functions.py +45 -0
  346. osn_selenium/flags/_typehints.py +34 -0
  347. osn_selenium/flags/_validators.py +101 -0
  348. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +159 -245
  349. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +130 -374
  350. osn_selenium/flags/chrome.py +259 -0
  351. osn_selenium/flags/edge.py +259 -0
  352. osn_selenium/flags/models/__init__.py +1 -0
  353. osn_selenium/flags/models/base.py +130 -0
  354. osn_selenium/flags/models/blink.py +263 -0
  355. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  356. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  357. osn_selenium/flags/models/values.py +44 -0
  358. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  359. osn_selenium/flags/yandex.py +259 -0
  360. osn_selenium/instances/__init__.py +1 -0
  361. osn_selenium/instances/_functions.py +242 -0
  362. osn_selenium/instances/_typehints.py +148 -0
  363. osn_selenium/instances/_utils.py +143 -0
  364. osn_selenium/instances/convert.py +287 -0
  365. osn_selenium/instances/protocols.py +105 -0
  366. osn_selenium/instances/sync/__init__.py +1 -0
  367. osn_selenium/instances/sync/action_chains/__init__.py +32 -0
  368. osn_selenium/instances/sync/action_chains/base.py +74 -0
  369. osn_selenium/instances/sync/action_chains/click.py +61 -0
  370. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  371. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  372. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  373. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  374. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  375. osn_selenium/instances/sync/action_chains/move.py +46 -0
  376. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  377. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  378. osn_selenium/instances/sync/alert.py +69 -0
  379. osn_selenium/instances/sync/browser.py +72 -0
  380. osn_selenium/instances/sync/browsing_context.py +193 -0
  381. osn_selenium/instances/sync/dialog.py +81 -0
  382. osn_selenium/instances/sync/fedcm.py +92 -0
  383. osn_selenium/instances/sync/mobile.py +75 -0
  384. osn_selenium/instances/sync/network.py +90 -0
  385. osn_selenium/instances/sync/permissions.py +80 -0
  386. osn_selenium/instances/sync/script.py +77 -0
  387. osn_selenium/instances/sync/shadow_root.py +113 -0
  388. osn_selenium/instances/sync/storage.py +91 -0
  389. osn_selenium/instances/sync/switch_to.py +92 -0
  390. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  391. osn_selenium/instances/sync/web_element.py +179 -0
  392. osn_selenium/instances/sync/web_extension.py +77 -0
  393. osn_selenium/instances/trio_threads/__init__.py +1 -0
  394. osn_selenium/instances/trio_threads/action_chains/__init__.py +32 -0
  395. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  396. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  397. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  399. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  400. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  401. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  402. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  403. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  404. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  405. osn_selenium/instances/trio_threads/alert.py +87 -0
  406. osn_selenium/instances/trio_threads/browser.py +90 -0
  407. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  408. osn_selenium/instances/trio_threads/dialog.py +99 -0
  409. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  410. osn_selenium/instances/trio_threads/mobile.py +93 -0
  411. osn_selenium/instances/trio_threads/network.py +108 -0
  412. osn_selenium/instances/trio_threads/permissions.py +102 -0
  413. osn_selenium/instances/trio_threads/script.py +95 -0
  414. osn_selenium/instances/trio_threads/shadow_root.py +154 -0
  415. osn_selenium/instances/trio_threads/storage.py +109 -0
  416. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  417. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  418. osn_selenium/instances/trio_threads/web_element.py +217 -0
  419. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  420. osn_selenium/instances/unified/__init__.py +1 -0
  421. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  422. osn_selenium/instances/unified/action_chains/base.py +31 -0
  423. osn_selenium/instances/unified/action_chains/click.py +27 -0
  424. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  425. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  426. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  427. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  428. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  429. osn_selenium/instances/unified/action_chains/move.py +24 -0
  430. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  431. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  432. osn_selenium/instances/unified/alert.py +29 -0
  433. osn_selenium/instances/unified/browser.py +33 -0
  434. osn_selenium/instances/unified/browsing_context.py +151 -0
  435. osn_selenium/instances/unified/dialog.py +42 -0
  436. osn_selenium/instances/unified/fedcm.py +48 -0
  437. osn_selenium/instances/unified/mobile.py +36 -0
  438. osn_selenium/instances/unified/network.py +50 -0
  439. osn_selenium/instances/unified/permissions.py +43 -0
  440. osn_selenium/instances/unified/script.py +38 -0
  441. osn_selenium/instances/unified/shadow_root.py +46 -0
  442. osn_selenium/instances/unified/storage.py +48 -0
  443. osn_selenium/instances/unified/switch_to.py +49 -0
  444. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  445. osn_selenium/instances/unified/web_element.py +145 -0
  446. osn_selenium/instances/unified/web_extension.py +38 -0
  447. osn_selenium/javascript/__init__.py +1 -0
  448. osn_selenium/javascript/_functions.py +63 -0
  449. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  450. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  451. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  452. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  453. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  454. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  455. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  456. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  457. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  458. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  459. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  460. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  461. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  462. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  463. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  464. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  465. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  466. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  467. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  468. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  469. osn_selenium/javascript/functions.py +44 -0
  470. osn_selenium/javascript/models.py +35 -0
  471. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  472. osn_selenium/models.py +94 -0
  473. osn_selenium/trio_threads_mixin.py +159 -0
  474. osn_selenium/webdrivers/_args_helpers.py +181 -0
  475. osn_selenium/webdrivers/_bridges.py +57 -0
  476. osn_selenium/webdrivers/_decorators.py +83 -0
  477. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  478. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  479. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  480. osn_selenium/webdrivers/_typehints.py +10 -0
  481. osn_selenium/webdrivers/protocols.py +50 -0
  482. osn_selenium/webdrivers/sync/__init__.py +1 -0
  483. osn_selenium/webdrivers/sync/blink/__init__.py +124 -0
  484. osn_selenium/webdrivers/sync/blink/base.py +140 -0
  485. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  486. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  487. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  488. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  489. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  490. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  491. osn_selenium/webdrivers/sync/chrome/__init__.py +102 -0
  492. osn_selenium/webdrivers/sync/chrome/base.py +118 -0
  493. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  494. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  495. osn_selenium/webdrivers/sync/core/__init__.py +100 -0
  496. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  497. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  498. osn_selenium/webdrivers/sync/core/base.py +175 -0
  499. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  500. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  501. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  502. osn_selenium/webdrivers/sync/core/element.py +42 -0
  503. osn_selenium/webdrivers/sync/core/file.py +40 -0
  504. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  505. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  506. osn_selenium/webdrivers/sync/core/script.py +53 -0
  507. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  508. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  509. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  510. osn_selenium/webdrivers/sync/core/window.py +99 -0
  511. osn_selenium/webdrivers/sync/edge/__init__.py +102 -0
  512. osn_selenium/webdrivers/sync/edge/base.py +114 -0
  513. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  514. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  515. osn_selenium/webdrivers/sync/yandex/__init__.py +102 -0
  516. osn_selenium/webdrivers/sync/yandex/base.py +111 -0
  517. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  518. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  519. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  520. osn_selenium/webdrivers/trio_threads/blink/__init__.py +134 -0
  521. osn_selenium/webdrivers/trio_threads/blink/base.py +143 -0
  522. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  523. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  524. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  525. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  526. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  527. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  528. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +114 -0
  529. osn_selenium/webdrivers/trio_threads/chrome/base.py +119 -0
  530. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  531. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  532. osn_selenium/webdrivers/trio_threads/core/__init__.py +115 -0
  533. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  534. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  535. osn_selenium/webdrivers/trio_threads/core/base.py +199 -0
  536. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  537. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  538. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  539. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  540. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  541. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  542. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  543. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  544. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  545. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  546. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  547. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  548. osn_selenium/webdrivers/trio_threads/edge/__init__.py +114 -0
  549. osn_selenium/webdrivers/trio_threads/edge/base.py +115 -0
  550. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  551. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  552. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +114 -0
  553. osn_selenium/webdrivers/trio_threads/yandex/base.py +112 -0
  554. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  555. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  556. osn_selenium/webdrivers/unified/__init__.py +1 -0
  557. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  558. osn_selenium/webdrivers/unified/blink/base.py +135 -0
  559. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  560. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  561. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  562. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  563. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  564. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  565. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  566. osn_selenium/webdrivers/unified/chrome/base.py +58 -0
  567. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  568. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  569. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  570. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  571. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  572. osn_selenium/webdrivers/unified/core/base.py +139 -0
  573. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  574. osn_selenium/webdrivers/unified/core/components.py +32 -0
  575. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  576. osn_selenium/webdrivers/unified/core/element.py +24 -0
  577. osn_selenium/webdrivers/unified/core/file.py +35 -0
  578. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  579. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  580. osn_selenium/webdrivers/unified/core/script.py +32 -0
  581. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  582. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  583. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  584. osn_selenium/webdrivers/unified/core/window.py +135 -0
  585. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  586. osn_selenium/webdrivers/unified/edge/base.py +56 -0
  587. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  588. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  589. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  590. osn_selenium/webdrivers/unified/yandex/base.py +58 -0
  591. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  592. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  593. osn_selenium-1.1.0.dist-info/METADATA +252 -0
  594. osn_selenium-1.1.0.dist-info/RECORD +615 -0
  595. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/WHEEL +1 -1
  596. osn_selenium/captcha_workers/__init__.py +0 -26
  597. osn_selenium/dev_tools/_types.py +0 -22
  598. osn_selenium/dev_tools/errors.py +0 -89
  599. osn_selenium/dev_tools/logger.py +0 -558
  600. osn_selenium/dev_tools/manager.py +0 -1551
  601. osn_selenium/dev_tools/utils.py +0 -509
  602. osn_selenium/errors.py +0 -16
  603. osn_selenium/types.py +0 -118
  604. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  605. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  606. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  607. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  608. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  609. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  610. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  611. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  612. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  613. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  614. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  615. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  616. osn_selenium/webdrivers/_functions.py +0 -504
  617. osn_selenium/webdrivers/types.py +0 -390
  618. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  619. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  620. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  621. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  622. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  623. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  624. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  628. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  629. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  630. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  631. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  632. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  633. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  634. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  635. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,181 @@
1
+ import trio
2
+ from typing import Any, Callable, Dict
3
+ from osn_selenium.instances.protocols import AnyInstanceWrapper
4
+ from osn_selenium.exceptions.protocol import (
5
+ ProtocolComplianceError
6
+ )
7
+ from osn_selenium.webdrivers._typehints import (
8
+ ANY_WEBDRIVER_PROTOCOL_TYPEHINT
9
+ )
10
+ from osn_selenium.instances.sync.web_element import (
11
+ WebElement as SyncWebElement
12
+ )
13
+ from selenium.webdriver.remote.webelement import (
14
+ WebElement as SeleniumWebElement
15
+ )
16
+ from osn_selenium.webdrivers.protocols import (
17
+ SyncWebDriver,
18
+ TrioThreadWebDriver
19
+ )
20
+ from osn_selenium.instances.trio_threads.web_element import (
21
+ WebElement as TrioThreadWebElement
22
+ )
23
+ from osn_selenium.instances.convert import (
24
+ get_sync_instance_wrapper,
25
+ get_trio_thread_instance_wrapper
26
+ )
27
+
28
+
29
+ __all__ = [
30
+ "build_cdp_kwargs",
31
+ "get_wrap_args_function",
32
+ "unwrap_args",
33
+ "wrap_sync_args",
34
+ "wrap_trio_thread_args"
35
+ ]
36
+
37
+
38
+ def unwrap_args(args: Any) -> Any:
39
+ """
40
+ Recursively unwraps objects by extracting the legacy Selenium object from wrappers.
41
+
42
+ Args:
43
+ args (Any): Data structure containing potential instance wrappers.
44
+
45
+ Returns:
46
+ Any: Data structure with raw Selenium objects.
47
+ """
48
+
49
+ if isinstance(args, list):
50
+ return [unwrap_args(arg) for arg in args]
51
+
52
+ if isinstance(args, set):
53
+ return {unwrap_args(arg) for arg in args}
54
+
55
+ if isinstance(args, tuple):
56
+ return (unwrap_args(arg) for arg in args)
57
+
58
+ if isinstance(args, dict):
59
+ return {unwrap_args(key): unwrap_args(value) for key, value in args.items()}
60
+
61
+ if isinstance(args, AnyInstanceWrapper):
62
+ return args.legacy
63
+
64
+ return args
65
+
66
+
67
+ def wrap_trio_thread_args(args: Any, lock: trio.Lock, limiter: trio.CapacityLimiter) -> Any:
68
+ """
69
+ Recursively wraps Selenium WebElements into TrioThreadWebElement instances.
70
+
71
+ Args:
72
+ args (Any): Data structure containing potential Selenium WebElements.
73
+ lock (trio.Lock): Trio lock for synchronization.
74
+ limiter (trio.CapacityLimiter): Trio capacity limiter.
75
+
76
+ Returns:
77
+ Any: Data structure with wrapped elements.
78
+ """
79
+
80
+ if isinstance(args, list):
81
+ return [wrap_trio_thread_args(arg, lock=lock, limiter=limiter) for arg in args]
82
+
83
+ if isinstance(args, set):
84
+ return {wrap_trio_thread_args(arg, lock=lock, limiter=limiter) for arg in args}
85
+
86
+ if isinstance(args, tuple):
87
+ return (wrap_trio_thread_args(arg, lock=lock, limiter=limiter) for arg in args)
88
+
89
+ if isinstance(args, dict):
90
+ return {
91
+ wrap_trio_thread_args(key, lock=lock, limiter=limiter): wrap_trio_thread_args(value, lock=lock, limiter=limiter)
92
+ for key, value in args.items()
93
+ }
94
+
95
+ if isinstance(args, SeleniumWebElement):
96
+ return get_trio_thread_instance_wrapper(
97
+ wrapper_class=TrioThreadWebElement,
98
+ legacy_object=args,
99
+ lock=lock,
100
+ limiter=limiter,
101
+ )
102
+
103
+ return args
104
+
105
+
106
+ def wrap_sync_args(args: Any) -> Any:
107
+ """
108
+ Recursively wraps Selenium WebElements into SyncWebElement instances.
109
+
110
+ Args:
111
+ args (Any): Data structure containing potential Selenium WebElements.
112
+
113
+ Returns:
114
+ Any: Data structure with wrapped elements.
115
+ """
116
+
117
+ if isinstance(args, list):
118
+ return [wrap_sync_args(arg) for arg in args]
119
+
120
+ if isinstance(args, set):
121
+ return {wrap_sync_args(arg) for arg in args}
122
+
123
+ if isinstance(args, tuple):
124
+ return (wrap_sync_args(arg) for arg in args)
125
+
126
+ if isinstance(args, dict):
127
+ return {wrap_sync_args(key): wrap_sync_args(value) for key, value in args.items()}
128
+
129
+ if isinstance(args, SeleniumWebElement):
130
+ return get_sync_instance_wrapper(wrapper_class=SyncWebElement, legacy_object=args)
131
+
132
+ return args
133
+
134
+
135
+ def get_wrap_args_function(driver: ANY_WEBDRIVER_PROTOCOL_TYPEHINT) -> Callable[[Any], Any]:
136
+ """
137
+ Determines the appropriate argument wrapping function based on the driver's architecture.
138
+
139
+ Args:
140
+ driver (ANY_WEBDRIVER_PROTOCOL): The driver instance.
141
+
142
+ Returns:
143
+ Callable[[Any], Any]: A function to wrap elements.
144
+
145
+ Raises:
146
+ ExpectedTypeError: If the driver instance type is not supported.
147
+ """
148
+
149
+ if isinstance(driver, SyncWebDriver) and driver.architecture == "sync":
150
+ def wrapper(args: Any) -> Any:
151
+ return wrap_sync_args(args)
152
+
153
+ return wrapper
154
+
155
+ if isinstance(driver, TrioThreadWebDriver) and driver.architecture == "trio_threads":
156
+ def wrapper(args: Any) -> Any:
157
+ return wrap_trio_thread_args(args, lock=driver.lock, limiter=driver.capacity_limiter)
158
+
159
+ return wrapper
160
+
161
+ raise ProtocolComplianceError(instance=driver, expected_protocols=(SyncWebDriver, TrioThreadWebDriver))
162
+
163
+
164
+ def build_cdp_kwargs(**kwargs: Any) -> Dict[str, Any]:
165
+ """
166
+ Builds a dictionary of keyword arguments for a CDP command, excluding None values.
167
+
168
+ Args:
169
+ **kwargs (Any): Keyword arguments to filter.
170
+
171
+ Returns:
172
+ Dict[str, Any]: A dictionary containing only the non-None keyword arguments.
173
+ """
174
+
175
+ dict_ = {}
176
+
177
+ for key, value in kwargs.items():
178
+ if value is not None:
179
+ dict_[key] = value
180
+
181
+ return dict_
@@ -0,0 +1,57 @@
1
+ from typing import Any, Callable, Dict
2
+ from osn_selenium.webdrivers._typehints import (
3
+ ANY_WEBDRIVER_PROTOCOL_TYPEHINT
4
+ )
5
+ from osn_selenium.webdrivers._args_helpers import (
6
+ get_wrap_args_function,
7
+ unwrap_args
8
+ )
9
+
10
+
11
+ __all__ = ["get_cdp_executor_bridge", "get_js_executor_bridge"]
12
+
13
+
14
+ def get_js_executor_bridge(driver: ANY_WEBDRIVER_PROTOCOL_TYPEHINT) -> Callable[[str, Any], Any]:
15
+ """
16
+ Creates a bridge function for executing JavaScript in the browser.
17
+
18
+ Args:
19
+ driver (ANY_WEBDRIVER_PROTOCOL): The driver instance.
20
+
21
+ Returns:
22
+ Callable[[str, Any], Any]: A wrapper for execute_script.
23
+ """
24
+
25
+ def wrapper(script: str, *args: Any) -> Any:
26
+ args = unwrap_args(args)
27
+
28
+ result = driver.driver.execute_script(script, *args)
29
+
30
+ return wrapper_function(result)
31
+
32
+ wrapper_function = get_wrap_args_function(driver=driver)
33
+
34
+ return wrapper
35
+
36
+
37
+ def get_cdp_executor_bridge(driver: ANY_WEBDRIVER_PROTOCOL_TYPEHINT) -> Callable[[str, Dict[str, Any]], Any]:
38
+ """
39
+ Creates a bridge function for executing CDP commands in the browser.
40
+
41
+ Args:
42
+ driver (ANY_WEBDRIVER_PROTOCOL): The driver instance.
43
+
44
+ Returns:
45
+ Callable[[str, Dict[str, Any]], Any]: A wrapper for execute_cdp_cmd.
46
+ """
47
+
48
+ def wrapper(cmd: str, cmd_args: Dict[str, Any]) -> Any:
49
+ cmd_args = unwrap_args(cmd_args)
50
+
51
+ result = driver.driver.execute_cdp_cmd(cmd, cmd_args)
52
+
53
+ return wrapper_function(result)
54
+
55
+ wrapper_function = get_wrap_args_function(driver=driver)
56
+
57
+ return wrapper
@@ -0,0 +1,83 @@
1
+ import inspect
2
+ import functools
3
+ from typing import (
4
+ Any,
5
+ Callable,
6
+ ParamSpec,
7
+ TypeVar
8
+ )
9
+ from osn_selenium.exceptions.instance import NotExpectedTypeError
10
+
11
+
12
+ __all__ = ["requires_driver"]
13
+
14
+ _METHOD_INPUT = ParamSpec("_METHOD_INPUT")
15
+ _METHOD_OUTPUT = TypeVar("_METHOD_OUTPUT")
16
+ _METHOD = TypeVar("_METHOD", bound=Callable[..., Any])
17
+
18
+
19
+ def requires_driver(func: _METHOD) -> _METHOD:
20
+ """
21
+ A decorator that ensures a '_ensure_driver' method is called before
22
+ executing the decorated method.
23
+
24
+ This decorator handles both synchronous and asynchronous methods,
25
+ calling '_ensure_driver' on the instance (self) before delegating
26
+ to the original method.
27
+
28
+ Args:
29
+ func (_METHOD): The method to decorate.
30
+
31
+ Returns:
32
+ _METHOD: The wrapped synchronous or asynchronous method.
33
+ """
34
+
35
+ @functools.wraps(func)
36
+ def sync_wrapper(
37
+ self: object,
38
+ *args: _METHOD_INPUT.args,
39
+ **kwargs: _METHOD_INPUT.kwargs
40
+ ) -> _METHOD_OUTPUT:
41
+ """
42
+ Synchronous wrapper for methods decorated with requires_driver.
43
+
44
+ Args:
45
+ self (object): The instance on which the method is called.
46
+ *args (_METHOD_INPUT.args): Positional arguments for the wrapped method.
47
+ **kwargs (_METHOD_INPUT.kwargs): Keyword arguments for the wrapped method.
48
+
49
+ Returns:
50
+ _METHOD_OUTPUT: The result of the wrapped method.
51
+ """
52
+
53
+ getattr(self, "_ensure_driver")()
54
+ return func(self, *args, **kwargs)
55
+
56
+ @functools.wraps(func)
57
+ async def async_wrapper(
58
+ self: object,
59
+ *args: _METHOD_INPUT.args,
60
+ **kwargs: _METHOD_INPUT.kwargs
61
+ ) -> _METHOD_OUTPUT:
62
+ """
63
+ Asynchronous wrapper for methods decorated with requires_driver.
64
+
65
+ Args:
66
+ self (object): The instance on which the method is called.
67
+ *args (_METHOD_INPUT.args): Positional arguments for the wrapped method.
68
+ **kwargs (_METHOD_INPUT.kwargs): Keyword arguments for the wrapped method.
69
+
70
+ Returns:
71
+ _METHOD_OUTPUT: The result of the wrapped method.
72
+ """
73
+
74
+ getattr(self, "_ensure_driver")()
75
+ return await func(self, *args, **kwargs)
76
+
77
+ if inspect.iscoroutinefunction(func):
78
+ return async_wrapper
79
+
80
+ if inspect.isfunction(func):
81
+ return sync_wrapper
82
+
83
+ raise NotExpectedTypeError(expected_type=["coroutine function", "function"], received_instance=func)
@@ -0,0 +1,113 @@
1
+ import re
2
+ import psutil
3
+ from typing import Iterator, Optional
4
+ from osn_selenium._functions import validate_path
5
+ from osn_selenium._typehints import PATH_TYPEHINT
6
+ from osn_system_utils.api._utils import LOCALHOST_IPS
7
+ from osn_selenium.webdrivers._executable_tables.models import ExecutablesTableRow
8
+
9
+
10
+ __all__ = [
11
+ "find_browser_previous_session",
12
+ "get_active_executables_table",
13
+ "get_found_profile_dir"
14
+ ]
15
+
16
+
17
+ def get_found_profile_dir(row: ExecutablesTableRow, profile_dir_command: str) -> Optional[str]:
18
+ """
19
+ Extracts the profile directory path from the command line of a running process.
20
+
21
+ Args:
22
+ row (ExecutablesTableRow): The data row containing the PID of the process.
23
+ profile_dir_command (str): The command line pattern to search for, using `{value}` as placeholder.
24
+
25
+ Returns:
26
+ Optional[str]: The extracted profile directory path if found, otherwise None.
27
+ """
28
+
29
+ try:
30
+ proc = psutil.Process(row.pid)
31
+ cmdline_args = proc.cmdline()
32
+
33
+ found_command_line = " ".join(cmdline_args)
34
+ pattern = profile_dir_command.format(value="(.*?)")
35
+
36
+ found_profile_dir = re.search(pattern=pattern, string=found_command_line)
37
+
38
+ if found_profile_dir is not None:
39
+ result = found_profile_dir.group(1)
40
+
41
+ return result
42
+ except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
43
+ return None
44
+
45
+ return None
46
+
47
+
48
+ def get_active_executables_table(browser_exe: PATH_TYPEHINT) -> Iterator[ExecutablesTableRow]:
49
+ """
50
+ Iterates through active network connections to find processes matching the browser executable.
51
+
52
+ Args:
53
+ browser_exe (PATH_TYPEHINT): Path or name of the browser executable.
54
+
55
+ Returns:
56
+ Iterator[ExecutablesTableRow]: An iterator of matching process information rows.
57
+ """
58
+
59
+ target_name = validate_path(path=browser_exe).name
60
+
61
+ for conn in psutil.net_connections(kind="inet"):
62
+ if (
63
+ conn.status != psutil.CONN_LISTEN
64
+ or not conn.laddr
65
+ or conn.laddr.ip not in LOCALHOST_IPS
66
+ or not conn.pid
67
+ ):
68
+ continue
69
+
70
+ try:
71
+ process = psutil.Process(conn.pid)
72
+ process_name = process.name()
73
+
74
+ if process_name.lower() == target_name.lower():
75
+ yield ExecutablesTableRow(
76
+ executable=process_name,
77
+ address=f"{conn.laddr.ip}:{conn.laddr.port}",
78
+ pid=conn.pid,
79
+ )
80
+ except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
81
+ continue
82
+
83
+
84
+ def find_browser_previous_session(
85
+ browser_exe: PATH_TYPEHINT,
86
+ profile_dir_command: str,
87
+ profile_dir: Optional[str]
88
+ ) -> Optional[int]:
89
+ """
90
+ Finds the port number of a previously opened browser session, if it exists.
91
+
92
+ This function checks for an existing browser session by examining network connections.
93
+ It searches for listening connections associated with the given browser executable and profile directory.
94
+
95
+ Args:
96
+ browser_exe (PATH_TYPEHINT): Path to the browser executable or just the executable name.
97
+ profile_dir_command (str): Command line pattern to find the profile directory argument.
98
+ Should use `{value}` as a placeholder for the directory path.
99
+ profile_dir (Optional[str]): The expected profile directory path to match against.
100
+
101
+ Returns:
102
+ Optional[int]: The port number of the previous session if found and matched, otherwise None.
103
+ """
104
+
105
+ ip_pattern = re.compile(r"127\.0\.0\.1:(\d+)")
106
+
107
+ for row in get_active_executables_table(browser_exe=browser_exe):
108
+ found_profile_dir = get_found_profile_dir(row=row, profile_dir_command=profile_dir_command)
109
+
110
+ if found_profile_dir == profile_dir:
111
+ return int(re.search(pattern=ip_pattern, string=row.address).group(1))
112
+
113
+ return None
@@ -0,0 +1,19 @@
1
+ from osn_selenium._base_models import DictModel
2
+
3
+
4
+ __all__ = ["ExecutablesTableRow"]
5
+
6
+
7
+ class ExecutablesTableRow(DictModel):
8
+ """
9
+ Represents a row in the executables table containing process information.
10
+
11
+ Attributes:
12
+ executable (str): The name of the executable file.
13
+ address (str): The network address (IP:Port) the process is listening on.
14
+ pid (int): The process identifier.
15
+ """
16
+
17
+ executable: str
18
+ address: str
19
+ pid: int
@@ -0,0 +1,10 @@
1
+ from typing import Union
2
+ from osn_selenium.webdrivers.protocols import (
3
+ SyncWebDriver,
4
+ TrioThreadWebDriver
5
+ )
6
+
7
+
8
+ __all__ = ["ANY_WEBDRIVER_PROTOCOL_TYPEHINT"]
9
+
10
+ ANY_WEBDRIVER_PROTOCOL_TYPEHINT = Union[SyncWebDriver, TrioThreadWebDriver]
@@ -0,0 +1,50 @@
1
+ import trio
2
+ from typing import (
3
+ Optional,
4
+ Protocol,
5
+ runtime_checkable
6
+ )
7
+ from selenium.webdriver.remote.webdriver import (
8
+ WebDriver as legacyWebDriver
9
+ )
10
+
11
+
12
+ __all__ = ["SyncWebDriver", "TrioThreadWebDriver"]
13
+
14
+
15
+ @runtime_checkable
16
+ class TrioThreadWebDriver(Protocol):
17
+ """
18
+ Protocol for a WebDriver that operates within a Trio thread pool.
19
+ """
20
+
21
+ @property
22
+ def architecture(self) -> str:
23
+ ...
24
+
25
+ @property
26
+ def capacity_limiter(self) -> trio.CapacityLimiter:
27
+ ...
28
+
29
+ @property
30
+ def driver(self) -> Optional[legacyWebDriver]:
31
+ ...
32
+
33
+ @property
34
+ def lock(self) -> trio.Lock:
35
+ ...
36
+
37
+
38
+ @runtime_checkable
39
+ class SyncWebDriver(Protocol):
40
+ """
41
+ Protocol for a synchronous WebDriver.
42
+ """
43
+
44
+ @property
45
+ def architecture(self) -> str:
46
+ ...
47
+
48
+ @property
49
+ def driver(self) -> Optional[legacyWebDriver]:
50
+ ...
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,124 @@
1
+ from osn_selenium.models import WindowRect
2
+ from typing import (
3
+ Mapping,
4
+ Optional,
5
+ Type
6
+ )
7
+ from osn_selenium._typehints import PATH_TYPEHINT
8
+ from osn_selenium.flags.blink import BlinkFlagsManager
9
+ from osn_selenium.flags.models.blink import BlinkFlags
10
+ from osn_selenium.webdrivers.sync.core import CoreWebDriver
11
+ from osn_selenium.webdrivers.sync.blink.base import BlinkBaseMixin
12
+ from osn_selenium.webdrivers.sync.blink.casting import BlinkCastingMixin
13
+ from osn_selenium.webdrivers.sync.blink.logging import BlinkLoggingMixin
14
+ from osn_selenium.webdrivers.sync.blink.network import BlinkNetworkMixin
15
+ from osn_selenium.webdrivers.sync.blink.features import BlinkFeaturesMixin
16
+ from osn_selenium.webdrivers.sync.blink.settings import BlinkSettingsMixin
17
+ from osn_selenium.webdrivers.sync.blink.lifecycle import BlinkLifecycleMixin
18
+ from osn_selenium.abstract.webdriver.blink import (
19
+ AbstractBlinkWebDriver
20
+ )
21
+
22
+
23
+ __all__ = ["BlinkWebDriver"]
24
+
25
+
26
+ class BlinkWebDriver(
27
+ BlinkBaseMixin,
28
+ BlinkCastingMixin,
29
+ BlinkFeaturesMixin,
30
+ BlinkLifecycleMixin,
31
+ BlinkLoggingMixin,
32
+ BlinkNetworkMixin,
33
+ BlinkSettingsMixin,
34
+ CoreWebDriver,
35
+ AbstractBlinkWebDriver
36
+ ):
37
+ """
38
+ Concrete Blink WebDriver implementation combining all functional mixins.
39
+
40
+ This class aggregates lifecycle management, element interaction, navigation,
41
+ and browser-specific features into a single usable driver instance.
42
+ """
43
+
44
+ def __init__(
45
+ self,
46
+ browser_exe: Optional[PATH_TYPEHINT],
47
+ browser_name_in_system: str,
48
+ webdriver_path: str,
49
+ use_browser_exe: bool = True,
50
+ flags_manager_type: Type[BlinkFlagsManager] = BlinkFlagsManager,
51
+ flags: Optional[BlinkFlags] = None,
52
+ start_page_url: str = "",
53
+ implicitly_wait: int = 5,
54
+ page_load_timeout: int = 5,
55
+ script_timeout: int = 5,
56
+ window_rect: Optional[WindowRect] = None,
57
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
58
+ ignore_cdp_version_package_missing: bool = True,
59
+ ):
60
+ """
61
+ Initializes the BlinkWebDriver instance.
62
+
63
+ This constructor sets up the necessary components for controlling a Blink-based browser,
64
+ including paths, flag managers, timeouts, and integration with DevTools and Trio.
65
+ It also initializes properties related to console encoding and IP pattern matching
66
+ for managing browser processes.
67
+
68
+ Args:
69
+ browser_exe (Optional[PATH_TYPEHINT]): The path to the browser executable
70
+ (e.g., `chrome.exe` or `msedge.exe`). If None, the browser executable will not be
71
+ managed directly by this class (e.g., for remote WebDriver connections where the
72
+ browser is already running).
73
+ browser_name_in_system (str): The common name of the browser executable in the system
74
+ (e.g., "Chrome", "Edge"). Used to auto-detect `browser_exe` if `use_browser_exe` is True.
75
+ webdriver_path (str): The file path to the WebDriver executable (e.g., `chromedriver.exe`).
76
+ use_browser_exe (bool): If True, the browser executable path will be
77
+ automatically determined based on `browser_name_in_system` if `browser_exe`
78
+ is not explicitly provided. If False, `browser_exe` must be None.
79
+ Defaults to True.
80
+ flags_manager_type (Type[BlinkFlagsManager]): The type of flags manager to use.
81
+ Defaults to `BlinkFlagsManager`, which is suitable for Chrome/Edge.
82
+ flags (Optional[BlinkFlags]): Initial browser flags or options
83
+ specific to Blink-based browsers. Can be a `BlinkFlags` object or a generic mapping.
84
+ Defaults to None.
85
+ start_page_url (str): The URL that the browser will attempt to navigate to
86
+ immediately after starting. Defaults to an empty string.
87
+ implicitly_wait (int): The default implicit wait time in seconds for element searches.
88
+ Defaults to 5.
89
+ page_load_timeout (int): The default page load timeout in seconds. Defaults to 5.
90
+ script_timeout (int): The default asynchronous script timeout in seconds. Defaults to 5.
91
+ window_rect (Optional[WindowRect]): The initial window size and position. If None,
92
+ the browser's default window size will be used. Defaults to None.
93
+ """
94
+
95
+ CoreWebDriver.__init__(
96
+ self,
97
+ webdriver_path=webdriver_path,
98
+ flags_manager_type=flags_manager_type,
99
+ flags=flags,
100
+ implicitly_wait=implicitly_wait,
101
+ page_load_timeout=page_load_timeout,
102
+ script_timeout=script_timeout,
103
+ window_rect=window_rect,
104
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
105
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
106
+ )
107
+
108
+ BlinkBaseMixin.__init__(
109
+ self,
110
+ browser_exe=browser_exe,
111
+ browser_name_in_system=browser_name_in_system,
112
+ use_browser_exe=use_browser_exe,
113
+ webdriver_path=webdriver_path,
114
+ architecture="sync",
115
+ flags_manager_type=flags_manager_type,
116
+ flags=flags,
117
+ start_page_url=start_page_url,
118
+ implicitly_wait=implicitly_wait,
119
+ page_load_timeout=page_load_timeout,
120
+ script_timeout=script_timeout,
121
+ window_rect=window_rect,
122
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
123
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
124
+ )