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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. osn_selenium/_functions.py +84 -0
  2. osn_selenium/_typehints.py +19 -0
  3. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  4. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  5. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  6. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  7. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  8. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  9. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  10. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  11. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  12. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  13. osn_selenium/abstract/executors/cdp/console.py +18 -0
  14. osn_selenium/abstract/executors/cdp/css.py +197 -0
  15. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  16. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  17. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  18. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  19. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  20. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  21. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  22. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  23. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  24. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  25. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  26. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  27. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  28. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  29. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  30. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  31. osn_selenium/abstract/executors/cdp/input.py +158 -0
  32. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  33. osn_selenium/abstract/executors/cdp/io.py +24 -0
  34. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  35. osn_selenium/abstract/executors/cdp/log.py +27 -0
  36. osn_selenium/abstract/executors/cdp/media.py +14 -0
  37. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  38. osn_selenium/abstract/executors/cdp/network.py +252 -0
  39. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  40. osn_selenium/abstract/executors/cdp/page.py +347 -0
  41. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  42. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  43. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  44. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  45. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  46. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  47. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  48. osn_selenium/abstract/executors/cdp/security.py +26 -0
  49. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  50. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  51. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  52. osn_selenium/abstract/executors/cdp/target.py +125 -0
  53. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  54. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  55. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  56. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  57. osn_selenium/abstract/executors/javascript.py +203 -0
  58. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  59. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  60. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  61. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  62. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  63. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  64. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  65. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  66. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  67. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  68. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  69. osn_selenium/abstract/instances/alert.py +67 -0
  70. osn_selenium/abstract/instances/browser.py +76 -0
  71. osn_selenium/abstract/instances/browsing_context.py +310 -0
  72. osn_selenium/abstract/instances/dialog.py +107 -0
  73. osn_selenium/abstract/instances/fedcm.py +133 -0
  74. osn_selenium/abstract/instances/mobile.py +79 -0
  75. osn_selenium/abstract/instances/network.py +100 -0
  76. osn_selenium/abstract/instances/permissions.py +52 -0
  77. osn_selenium/abstract/instances/script.py +109 -0
  78. osn_selenium/abstract/instances/shadow_root.py +81 -0
  79. osn_selenium/abstract/instances/storage.py +98 -0
  80. osn_selenium/abstract/instances/switch_to.py +104 -0
  81. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  82. osn_selenium/abstract/instances/web_element.py +395 -0
  83. osn_selenium/abstract/instances/web_extension.py +70 -0
  84. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  85. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  86. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  87. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  88. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  89. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  90. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  91. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  92. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  93. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  94. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  95. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  96. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  97. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  98. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  99. osn_selenium/abstract/webdriver/core/base.py +298 -0
  100. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  101. osn_selenium/abstract/webdriver/core/components.py +82 -0
  102. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  103. osn_selenium/abstract/webdriver/core/element.py +55 -0
  104. osn_selenium/abstract/webdriver/core/file.py +82 -0
  105. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  106. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  107. osn_selenium/abstract/webdriver/core/script.py +88 -0
  108. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  109. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  110. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  111. osn_selenium/abstract/webdriver/core/window.py +237 -0
  112. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  113. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  114. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  115. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  116. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  117. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  118. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  119. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  120. osn_selenium/base_mixin.py +122 -0
  121. osn_selenium/browsers_handler/__init__.py +47 -17
  122. osn_selenium/browsers_handler/_linux.py +226 -0
  123. osn_selenium/browsers_handler/_windows.py +21 -14
  124. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  125. osn_selenium/dev_tools/_decorators.py +140 -0
  126. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  127. osn_selenium/dev_tools/_functions.py +174 -0
  128. osn_selenium/dev_tools/_system_utils.py +35 -0
  129. osn_selenium/dev_tools/_typehints.py +32 -0
  130. osn_selenium/dev_tools/_validators.py +227 -0
  131. osn_selenium/dev_tools/_wrappers.py +95 -0
  132. osn_selenium/dev_tools/domains/__init__.py +7 -40
  133. osn_selenium/dev_tools/domains/abstract.py +98 -254
  134. osn_selenium/dev_tools/domains/fetch.py +229 -906
  135. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  136. osn_selenium/dev_tools/filters.py +40 -0
  137. osn_selenium/dev_tools/logger/main.py +226 -0
  138. osn_selenium/dev_tools/logger/models.py +232 -0
  139. osn_selenium/dev_tools/logger/target.py +258 -0
  140. osn_selenium/dev_tools/manager/__init__.py +16 -0
  141. osn_selenium/dev_tools/manager/base.py +147 -0
  142. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  143. osn_selenium/dev_tools/manager/logging.py +153 -0
  144. osn_selenium/dev_tools/manager/settings.py +89 -0
  145. osn_selenium/dev_tools/manager/targets.py +175 -0
  146. osn_selenium/dev_tools/models.py +49 -0
  147. osn_selenium/dev_tools/settings.py +135 -0
  148. osn_selenium/dev_tools/target/__init__.py +16 -0
  149. osn_selenium/dev_tools/target/base.py +438 -0
  150. osn_selenium/dev_tools/target/detach.py +54 -0
  151. osn_selenium/dev_tools/target/discovery.py +112 -0
  152. osn_selenium/dev_tools/target/events.py +120 -0
  153. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  154. osn_selenium/dev_tools/target/lifecycle.py +179 -0
  155. osn_selenium/dev_tools/target/logging.py +155 -0
  156. osn_selenium/exceptions/__init__.py +1 -0
  157. osn_selenium/exceptions/base.py +9 -0
  158. osn_selenium/exceptions/configuration.py +84 -0
  159. osn_selenium/exceptions/devtools.py +114 -0
  160. osn_selenium/exceptions/flags.py +45 -0
  161. osn_selenium/exceptions/instance.py +92 -0
  162. osn_selenium/exceptions/javascript.py +31 -0
  163. osn_selenium/exceptions/logic.py +31 -0
  164. osn_selenium/exceptions/path.py +77 -0
  165. osn_selenium/exceptions/platform.py +33 -0
  166. osn_selenium/exceptions/protocol.py +86 -0
  167. osn_selenium/exceptions/webdriver.py +44 -0
  168. osn_selenium/exceptions/window.py +63 -0
  169. osn_selenium/executors/__init__.py +1 -0
  170. osn_selenium/executors/sync/__init__.py +1 -0
  171. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  172. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  173. osn_selenium/executors/sync/cdp/animation.py +50 -0
  174. osn_selenium/executors/sync/cdp/audits.py +48 -0
  175. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  176. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  177. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  178. osn_selenium/executors/sync/cdp/browser.py +131 -0
  179. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  180. osn_selenium/executors/sync/cdp/cast.py +38 -0
  181. osn_selenium/executors/sync/cdp/console.py +24 -0
  182. osn_selenium/executors/sync/cdp/css.py +187 -0
  183. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  184. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  185. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  186. osn_selenium/executors/sync/cdp/dom.py +310 -0
  187. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  188. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  189. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  190. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  191. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  192. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  193. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  194. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  195. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  196. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  197. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  198. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  199. osn_selenium/executors/sync/cdp/input.py +233 -0
  200. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  201. osn_selenium/executors/sync/cdp/io.py +33 -0
  202. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  203. osn_selenium/executors/sync/cdp/log.py +35 -0
  204. osn_selenium/executors/sync/cdp/media.py +21 -0
  205. osn_selenium/executors/sync/cdp/memory.py +62 -0
  206. osn_selenium/executors/sync/cdp/network.py +287 -0
  207. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  208. osn_selenium/executors/sync/cdp/page.py +365 -0
  209. osn_selenium/executors/sync/cdp/performance.py +33 -0
  210. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  211. osn_selenium/executors/sync/cdp/preload.py +21 -0
  212. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  213. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  214. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  215. osn_selenium/executors/sync/cdp/schema.py +23 -0
  216. osn_selenium/executors/sync/cdp/security.py +30 -0
  217. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  218. osn_selenium/executors/sync/cdp/storage.py +151 -0
  219. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  220. osn_selenium/executors/sync/cdp/target.py +147 -0
  221. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  222. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  223. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  224. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  225. osn_selenium/executors/sync/javascript.py +79 -0
  226. osn_selenium/executors/trio_threads/__init__.py +1 -0
  227. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  228. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  229. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  230. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  231. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  232. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  233. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  234. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  235. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  236. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  237. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  238. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  239. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  240. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  241. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  242. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  243. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  244. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  245. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  246. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  247. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  248. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  249. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  250. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  251. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  252. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  253. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  254. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  255. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  256. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  257. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  258. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  259. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  260. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  261. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  262. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  263. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  264. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  265. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  266. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  267. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  268. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  269. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  270. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  271. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  272. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  273. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  274. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  275. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  276. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  277. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  278. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  279. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  280. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  281. osn_selenium/executors/trio_threads/javascript.py +90 -0
  282. osn_selenium/executors/unified/__init__.py +1 -0
  283. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  284. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  285. osn_selenium/executors/unified/cdp/animation.py +50 -0
  286. osn_selenium/executors/unified/cdp/audits.py +45 -0
  287. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  288. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  289. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  290. osn_selenium/executors/unified/cdp/browser.py +143 -0
  291. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  292. osn_selenium/executors/unified/cdp/cast.py +32 -0
  293. osn_selenium/executors/unified/cdp/console.py +18 -0
  294. osn_selenium/executors/unified/cdp/css.py +237 -0
  295. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  296. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  297. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  298. osn_selenium/executors/unified/cdp/dom.py +380 -0
  299. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  300. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  301. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  302. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  303. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  304. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  305. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  306. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  307. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  308. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  309. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  310. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  311. osn_selenium/executors/unified/cdp/input.py +254 -0
  312. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  313. osn_selenium/executors/unified/cdp/io.py +29 -0
  314. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  315. osn_selenium/executors/unified/cdp/log.py +29 -0
  316. osn_selenium/executors/unified/cdp/media.py +15 -0
  317. osn_selenium/executors/unified/cdp/memory.py +59 -0
  318. osn_selenium/executors/unified/cdp/network.py +323 -0
  319. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  320. osn_selenium/executors/unified/cdp/page.py +410 -0
  321. osn_selenium/executors/unified/cdp/performance.py +27 -0
  322. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  323. osn_selenium/executors/unified/cdp/preload.py +15 -0
  324. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  325. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  326. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  327. osn_selenium/executors/unified/cdp/schema.py +17 -0
  328. osn_selenium/executors/unified/cdp/security.py +27 -0
  329. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  330. osn_selenium/executors/unified/cdp/storage.py +178 -0
  331. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  332. osn_selenium/executors/unified/cdp/target.py +165 -0
  333. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  334. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  335. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  336. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  337. osn_selenium/executors/unified/javascript.py +108 -0
  338. osn_selenium/flags/__init__.py +1 -0
  339. osn_selenium/flags/_functions.py +45 -0
  340. osn_selenium/flags/_typehints.py +34 -0
  341. osn_selenium/flags/_validators.py +101 -0
  342. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +165 -243
  343. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +133 -371
  344. osn_selenium/flags/chrome.py +259 -0
  345. osn_selenium/flags/edge.py +259 -0
  346. osn_selenium/flags/models/__init__.py +1 -0
  347. osn_selenium/flags/models/base.py +130 -0
  348. osn_selenium/flags/models/blink.py +263 -0
  349. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  350. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  351. osn_selenium/flags/models/values.py +44 -0
  352. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  353. osn_selenium/flags/yandex.py +259 -0
  354. osn_selenium/instances/__init__.py +1 -0
  355. osn_selenium/instances/_functions.py +242 -0
  356. osn_selenium/instances/_typehints.py +148 -0
  357. osn_selenium/instances/_utils.py +143 -0
  358. osn_selenium/instances/convert.py +287 -0
  359. osn_selenium/instances/protocols.py +105 -0
  360. osn_selenium/instances/sync/__init__.py +1 -0
  361. osn_selenium/instances/sync/action_chains/__init__.py +26 -0
  362. osn_selenium/instances/sync/action_chains/base.py +74 -0
  363. osn_selenium/instances/sync/action_chains/click.py +61 -0
  364. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  365. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  366. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  367. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  368. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  369. osn_selenium/instances/sync/action_chains/move.py +46 -0
  370. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  371. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  372. osn_selenium/instances/sync/alert.py +69 -0
  373. osn_selenium/instances/sync/browser.py +72 -0
  374. osn_selenium/instances/sync/browsing_context.py +193 -0
  375. osn_selenium/instances/sync/dialog.py +81 -0
  376. osn_selenium/instances/sync/fedcm.py +92 -0
  377. osn_selenium/instances/sync/mobile.py +75 -0
  378. osn_selenium/instances/sync/network.py +90 -0
  379. osn_selenium/instances/sync/permissions.py +80 -0
  380. osn_selenium/instances/sync/script.py +77 -0
  381. osn_selenium/instances/sync/shadow_root.py +91 -0
  382. osn_selenium/instances/sync/storage.py +91 -0
  383. osn_selenium/instances/sync/switch_to.py +92 -0
  384. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  385. osn_selenium/instances/sync/web_element.py +179 -0
  386. osn_selenium/instances/sync/web_extension.py +77 -0
  387. osn_selenium/instances/trio_threads/__init__.py +1 -0
  388. osn_selenium/instances/trio_threads/action_chains/__init__.py +26 -0
  389. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  390. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  391. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  392. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  393. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  394. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  395. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  396. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  397. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  399. osn_selenium/instances/trio_threads/alert.py +87 -0
  400. osn_selenium/instances/trio_threads/browser.py +90 -0
  401. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  402. osn_selenium/instances/trio_threads/dialog.py +99 -0
  403. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  404. osn_selenium/instances/trio_threads/mobile.py +93 -0
  405. osn_selenium/instances/trio_threads/network.py +108 -0
  406. osn_selenium/instances/trio_threads/permissions.py +102 -0
  407. osn_selenium/instances/trio_threads/script.py +95 -0
  408. osn_selenium/instances/trio_threads/shadow_root.py +123 -0
  409. osn_selenium/instances/trio_threads/storage.py +109 -0
  410. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  411. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  412. osn_selenium/instances/trio_threads/web_element.py +217 -0
  413. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  414. osn_selenium/instances/unified/__init__.py +1 -0
  415. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  416. osn_selenium/instances/unified/action_chains/base.py +31 -0
  417. osn_selenium/instances/unified/action_chains/click.py +27 -0
  418. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  419. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  420. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  421. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  422. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  423. osn_selenium/instances/unified/action_chains/move.py +24 -0
  424. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  425. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  426. osn_selenium/instances/unified/alert.py +29 -0
  427. osn_selenium/instances/unified/browser.py +33 -0
  428. osn_selenium/instances/unified/browsing_context.py +151 -0
  429. osn_selenium/instances/unified/dialog.py +42 -0
  430. osn_selenium/instances/unified/fedcm.py +48 -0
  431. osn_selenium/instances/unified/mobile.py +36 -0
  432. osn_selenium/instances/unified/network.py +50 -0
  433. osn_selenium/instances/unified/permissions.py +43 -0
  434. osn_selenium/instances/unified/script.py +38 -0
  435. osn_selenium/instances/unified/shadow_root.py +46 -0
  436. osn_selenium/instances/unified/storage.py +48 -0
  437. osn_selenium/instances/unified/switch_to.py +49 -0
  438. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  439. osn_selenium/instances/unified/web_element.py +145 -0
  440. osn_selenium/instances/unified/web_extension.py +38 -0
  441. osn_selenium/javascript/__init__.py +1 -0
  442. osn_selenium/javascript/_functions.py +63 -0
  443. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  444. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  445. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  446. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  447. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  448. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  449. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  450. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  451. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  452. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  453. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  454. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  455. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  456. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  457. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  458. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  459. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  460. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  461. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  462. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  463. osn_selenium/javascript/functions.py +44 -0
  464. osn_selenium/javascript/models.py +35 -0
  465. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  466. osn_selenium/models.py +139 -0
  467. osn_selenium/webdrivers/_args_helpers.py +181 -0
  468. osn_selenium/webdrivers/_bridges.py +57 -0
  469. osn_selenium/webdrivers/_decorators.py +83 -0
  470. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  471. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  472. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  473. osn_selenium/webdrivers/_typehints.py +10 -0
  474. osn_selenium/webdrivers/protocols.py +50 -0
  475. osn_selenium/webdrivers/sync/__init__.py +1 -0
  476. osn_selenium/webdrivers/sync/blink/__init__.py +114 -0
  477. osn_selenium/webdrivers/sync/blink/base.py +128 -0
  478. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  479. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  480. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  481. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  482. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  483. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  484. osn_selenium/webdrivers/sync/chrome/__init__.py +67 -0
  485. osn_selenium/webdrivers/sync/chrome/base.py +106 -0
  486. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  487. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  488. osn_selenium/webdrivers/sync/core/__init__.py +91 -0
  489. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  490. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  491. osn_selenium/webdrivers/sync/core/base.py +167 -0
  492. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  493. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  494. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  495. osn_selenium/webdrivers/sync/core/element.py +42 -0
  496. osn_selenium/webdrivers/sync/core/file.py +40 -0
  497. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  498. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  499. osn_selenium/webdrivers/sync/core/script.py +53 -0
  500. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  501. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  502. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  503. osn_selenium/webdrivers/sync/core/window.py +99 -0
  504. osn_selenium/webdrivers/sync/edge/__init__.py +67 -0
  505. osn_selenium/webdrivers/sync/edge/base.py +102 -0
  506. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  507. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  508. osn_selenium/webdrivers/sync/yandex/__init__.py +67 -0
  509. osn_selenium/webdrivers/sync/yandex/base.py +99 -0
  510. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  511. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  512. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  513. osn_selenium/webdrivers/trio_threads/blink/__init__.py +124 -0
  514. osn_selenium/webdrivers/trio_threads/blink/base.py +133 -0
  515. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  516. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  517. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  518. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  519. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  520. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  521. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +81 -0
  522. osn_selenium/webdrivers/trio_threads/chrome/base.py +107 -0
  523. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  524. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  525. osn_selenium/webdrivers/trio_threads/core/__init__.py +109 -0
  526. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  527. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  528. osn_selenium/webdrivers/trio_threads/core/base.py +191 -0
  529. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  530. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  531. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  532. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  533. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  534. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  535. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  536. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  537. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  538. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  539. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  540. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  541. osn_selenium/webdrivers/trio_threads/edge/__init__.py +81 -0
  542. osn_selenium/webdrivers/trio_threads/edge/base.py +103 -0
  543. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  544. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  545. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +81 -0
  546. osn_selenium/webdrivers/trio_threads/yandex/base.py +100 -0
  547. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  548. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  549. osn_selenium/webdrivers/unified/__init__.py +1 -0
  550. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  551. osn_selenium/webdrivers/unified/blink/base.py +131 -0
  552. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  553. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  554. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  555. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  556. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  557. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  558. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  559. osn_selenium/webdrivers/unified/chrome/base.py +54 -0
  560. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  561. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  562. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  563. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  564. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  565. osn_selenium/webdrivers/unified/core/base.py +132 -0
  566. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  567. osn_selenium/webdrivers/unified/core/components.py +32 -0
  568. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  569. osn_selenium/webdrivers/unified/core/element.py +24 -0
  570. osn_selenium/webdrivers/unified/core/file.py +35 -0
  571. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  572. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  573. osn_selenium/webdrivers/unified/core/script.py +32 -0
  574. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  575. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  576. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  577. osn_selenium/webdrivers/unified/core/window.py +135 -0
  578. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  579. osn_selenium/webdrivers/unified/edge/base.py +52 -0
  580. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  581. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  582. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  583. osn_selenium/webdrivers/unified/yandex/base.py +54 -0
  584. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  585. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  586. osn_selenium-1.0.0.dist-info/METADATA +239 -0
  587. osn_selenium-1.0.0.dist-info/RECORD +608 -0
  588. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/WHEEL +1 -1
  589. osn_selenium/captcha_workers/__init__.py +0 -26
  590. osn_selenium/dev_tools/_types.py +0 -22
  591. osn_selenium/dev_tools/errors.py +0 -89
  592. osn_selenium/dev_tools/logger.py +0 -558
  593. osn_selenium/dev_tools/manager.py +0 -1551
  594. osn_selenium/dev_tools/utils.py +0 -509
  595. osn_selenium/errors.py +0 -16
  596. osn_selenium/types.py +0 -118
  597. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  598. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  599. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  600. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  601. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  602. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  603. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  604. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  605. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  606. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  607. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  608. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  609. osn_selenium/webdrivers/_functions.py +0 -504
  610. osn_selenium/webdrivers/types.py +0 -390
  611. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  612. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  613. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  614. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  615. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  616. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  617. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  618. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  619. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  620. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  621. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  622. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  623. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  624. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  628. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,110 @@
1
+ from typing import Optional
2
+ from abc import abstractmethod
3
+ from osn_selenium.models import WindowRect
4
+ from osn_selenium._typehints import PATH_TYPEHINT
5
+ from osn_selenium.flags.models.chrome import ChromeFlags
6
+ from osn_selenium.abstract.webdriver.blink.settings import (
7
+ AbstractBlinkSettingsMixin
8
+ )
9
+
10
+
11
+ __all__ = ["AbstractChromeSettingsMixin"]
12
+
13
+
14
+ class AbstractChromeSettingsMixin(AbstractBlinkSettingsMixin):
15
+ """
16
+ Abstract mixin for managing Chrome browser settings.
17
+
18
+ Provides methods to update or reset configuration parameters such as flags,
19
+ executable paths, and window dimensions for the Chrome WebDriver.
20
+ """
21
+
22
+ @abstractmethod
23
+ def reset_settings(
24
+ self,
25
+ flags: Optional[ChromeFlags] = None,
26
+ browser_exe: Optional[PATH_TYPEHINT] = None,
27
+ browser_name_in_system: Optional[str] = None,
28
+ use_browser_exe: Optional[bool] = None,
29
+ start_page_url: str = "",
30
+ window_rect: Optional[WindowRect] = None,
31
+ ):
32
+ """
33
+ Resets various configurable browser settings to their specified or default values.
34
+
35
+ This method allows for reconfiguring the WebDriver's operational parameters,
36
+ such as browser flags, executable path, start URL, window dimensions, and
37
+ concurrency limits. It is crucial that the browser session is *not* active
38
+ when this method is called; otherwise, a warning will be issued, and no changes
39
+ will be applied.
40
+
41
+ Args:
42
+ flags (Optional[ChromeFlags]): New browser flags to apply.
43
+ If provided, existing flags are cleared and replaced with these.
44
+ If `None`, all custom flags are cleared, and the browser will start with default flags.
45
+ browser_exe (Optional[PATH_TYPEHINT]): The explicit path to the browser executable.
46
+ If provided, this path will be used. If `None`, the executable path managed by the
47
+ flags manager will be cleared, and then potentially re-detected based on
48
+ `use_browser_exe` and `browser_name_in_system`.
49
+ browser_name_in_system (Optional[str]): The common name of the browser (e.g., "Chrome").
50
+ Used in conjunction with `use_browser_exe` to automatically detect the browser executable path.
51
+ This parameter only takes effect if `use_browser_exe` is explicitly `True` or `False`.
52
+ If `None`, no automatic detection based on name will occur through this method call.
53
+ use_browser_exe (Optional[bool]): Controls the automatic detection of the browser executable.
54
+ If `True` (and `browser_name_in_system` is provided), the browser executable path
55
+ will be automatically detected if `browser_exe` is `None`.
56
+ If `False` (and `browser_name_in_system` is provided), any existing `browser_exe`
57
+ path in the flags manager will be cleared.
58
+ If `None`, the current `use_browser_exe` state is maintained for the `_detect_browser_exe` logic.
59
+ start_page_url (str): The URL that the browser will attempt to navigate to
60
+ immediately after starting. Defaults to an empty string.
61
+ window_rect (Optional[WindowRect]): The initial window size and position settings.
62
+ If `None`, it defaults to a new `WindowRect()` instance, effectively resetting
63
+ to the browser's default window behavior.
64
+ """
65
+
66
+ ...
67
+
68
+ @abstractmethod
69
+ def update_settings(
70
+ self,
71
+ flags: Optional[ChromeFlags] = None,
72
+ browser_exe: Optional[PATH_TYPEHINT] = None,
73
+ browser_name_in_system: Optional[str] = None,
74
+ use_browser_exe: Optional[bool] = None,
75
+ start_page_url: Optional[str] = None,
76
+ window_rect: Optional[WindowRect] = None,
77
+ ):
78
+ """
79
+ Updates various browser settings selectively without resetting others.
80
+
81
+ This method allows for dynamic updating of browser settings. Only the settings
82
+ for which a non-None value is provided will be updated. Settings passed as `None`
83
+ will retain their current values. This method can be called whether the browser
84
+ is active or not, but some changes might only take effect after the browser is
85
+ restarted.
86
+
87
+ Args:
88
+ flags (Optional[ChromeFlags]): New browser flags to update.
89
+ If provided, these flags will be merged with or overwrite existing flags
90
+ within the flags manager. If `None`, existing flags remain unchanged.
91
+ browser_exe (Optional[PATH_TYPEHINT]): The new path to the browser executable.
92
+ If provided, this path will be set in the flags manager. If `None`, the
93
+ current browser executable path remains unchanged.
94
+ browser_name_in_system (Optional[str]): The common name of the browser (e.g., "Chrome").
95
+ Used in conjunction with `use_browser_exe` to automatically detect the browser executable path.
96
+ This parameter only takes effect if `use_browser_exe` is explicitly provided.
97
+ If `None`, no automatic detection based on name will occur through this method call.
98
+ use_browser_exe (Optional[bool]): Controls the automatic detection of the browser executable.
99
+ If `True` (and `browser_name_in_system` is provided), the browser executable path
100
+ will be automatically detected if `browser_exe` is `None`.
101
+ If `False` (and `browser_name_in_system` is provided), any existing `browser_exe`
102
+ path in the flags manager will be cleared.
103
+ If `None`, the current `use_browser_exe` state is maintained for the `_detect_browser_exe` logic.
104
+ start_page_url (Optional[str]): The new URL that the browser will attempt to navigate to
105
+ immediately after starting. If `None`, the current start page URL remains unchanged.
106
+ window_rect (Optional[WindowRect]): The new window size and position settings.
107
+ If `None`, the current window rectangle settings remain unchanged.
108
+ """
109
+
110
+ ...
@@ -0,0 +1,16 @@
1
+ from abc import ABC
2
+
3
+
4
+ __all__ = ["AbstractCoreWebDriver"]
5
+
6
+
7
+ class AbstractCoreWebDriver(ABC):
8
+ """
9
+ Abstract base class for a WebDriver.
10
+
11
+ This class defines the interface that all WebDriver implementations must adhere to.
12
+ It includes methods for browser navigation, element interaction, script execution,
13
+ and managing various browser features.
14
+ """
15
+
16
+ pass
@@ -0,0 +1,58 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import (
3
+ Iterable,
4
+ List,
5
+ Optional
6
+ )
7
+ from osn_selenium._typehints import DEVICES_TYPEHINT
8
+ from osn_selenium.abstract.instances.action_chains import AbstractActionChains
9
+ from osn_selenium.abstract.instances.web_driver_wait import (
10
+ AbstractWebDriverWait
11
+ )
12
+
13
+
14
+ __all__ = ["AbstractCoreActionsMixin"]
15
+
16
+
17
+ class AbstractCoreActionsMixin(ABC):
18
+ """Mixin responsible for user actions chains."""
19
+
20
+ @abstractmethod
21
+ def action_chains(
22
+ self,
23
+ duration: int = 250,
24
+ devices: Optional[List[DEVICES_TYPEHINT]] = None
25
+ ) -> AbstractActionChains:
26
+ """
27
+ Creates a new ActionChains instance for building complex user interactions.
28
+
29
+ Args:
30
+ duration (int): The default duration for pointer actions in milliseconds.
31
+ devices (Optional[List[DEVICES_TYPEHINT]]): A list of input devices to use.
32
+
33
+ Returns:
34
+ AbstractActionChains: A new ActionChains instance.
35
+ """
36
+
37
+ ...
38
+
39
+ @abstractmethod
40
+ def web_driver_wait(
41
+ self,
42
+ timeout: float,
43
+ poll_frequency: float = 0.5,
44
+ ignored_exceptions: Optional[Iterable[BaseException]] = None,
45
+ ) -> AbstractWebDriverWait:
46
+ """
47
+ Creates a new WebDriverWait instance.
48
+
49
+ Args:
50
+ timeout (float): How long to wait for the condition to be true.
51
+ poll_frequency (float): How often to check the condition. Defaults to 0.5.
52
+ ignored_exceptions (Optional[Iterable[BaseException]]): Exceptions to ignore while waiting.
53
+
54
+ Returns:
55
+ AbstractWebDriverWait: A new WebDriverWait instance.
56
+ """
57
+
58
+ ...
@@ -0,0 +1,145 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import (
3
+ Any,
4
+ List,
5
+ Optional,
6
+ Union
7
+ )
8
+ from osn_selenium.abstract.instances.fedcm import AbstractFedCM
9
+ from osn_selenium.abstract.instances.dialog import AbstractDialog
10
+ from selenium.webdriver.common.virtual_authenticator import (
11
+ Credential,
12
+ VirtualAuthenticatorOptions
13
+ )
14
+
15
+
16
+ __all__ = ["AbstractCoreAuthMixin"]
17
+
18
+
19
+ class AbstractCoreAuthMixin(ABC):
20
+ """Mixin responsible for credentials, virtual authenticators, and FedCM."""
21
+
22
+ @abstractmethod
23
+ def add_credential(self, credential: Credential) -> None:
24
+ """
25
+ Adds a credential to the virtual authenticator.
26
+
27
+ Args:
28
+ credential (Credential): The credential to add.
29
+ """
30
+
31
+ ...
32
+
33
+ @abstractmethod
34
+ def add_virtual_authenticator(self, options: VirtualAuthenticatorOptions) -> None:
35
+ """
36
+ Adds a virtual authenticator for testing web authentication.
37
+
38
+ Args:
39
+ options (VirtualAuthenticatorOptions): Configuration for the virtual authenticator.
40
+ """
41
+
42
+ ...
43
+
44
+ @abstractmethod
45
+ def fedcm(self) -> AbstractFedCM:
46
+ """
47
+ Provides access to the FedCM (Federated Credential Management) interface.
48
+
49
+ Returns:
50
+ AbstractFedCM: An object for interacting with FedCM.
51
+ """
52
+
53
+ ...
54
+
55
+ @abstractmethod
56
+ def fedcm_dialog(
57
+ self,
58
+ timeout: int = 5,
59
+ poll_frequency: float = 0.5,
60
+ ignored_exceptions: Optional[Any] = None,
61
+ ) -> AbstractDialog:
62
+ """
63
+ Waits for and returns a FedCM (Federated Credential Management) dialog.
64
+
65
+ Args:
66
+ timeout (int): The maximum time to wait for the dialog.
67
+ poll_frequency (float): The frequency to check for the dialog's presence.
68
+ ignored_exceptions (Optional[Any]): Exceptions to ignore during polling.
69
+
70
+ Returns:
71
+ AbstractDialog: The FedCM dialog object.
72
+ """
73
+
74
+ ...
75
+
76
+ @abstractmethod
77
+ def get_credentials(self) -> List[Credential]:
78
+ """
79
+ Gets all credentials from the virtual authenticator.
80
+
81
+ Returns:
82
+ List[Credential]: A list of Credential objects.
83
+ """
84
+
85
+ ...
86
+
87
+ @abstractmethod
88
+ def remove_all_credentials(self) -> None:
89
+ """
90
+ Removes all credentials from the virtual authenticator.
91
+ """
92
+
93
+ ...
94
+
95
+ @abstractmethod
96
+ def remove_credential(self, credential_id: Union[str, bytearray]) -> None:
97
+ """
98
+ Removes a credential from the virtual authenticator.
99
+
100
+ Args:
101
+ credential_id (Union[str, bytearray]): The ID of the credential to remove.
102
+ """
103
+
104
+ ...
105
+
106
+ @abstractmethod
107
+ def remove_virtual_authenticator(self) -> None:
108
+ """
109
+ Removes the currently active virtual authenticator.
110
+ """
111
+
112
+ ...
113
+
114
+ @abstractmethod
115
+ def set_user_verified(self, verified: bool) -> None:
116
+ """
117
+ Sets the user-verified status for a virtual authenticator.
118
+
119
+ Args:
120
+ verified (bool): The new verification status.
121
+ """
122
+
123
+ ...
124
+
125
+ @abstractmethod
126
+ def supports_fedcm(self) -> bool:
127
+ """
128
+ Checks if the browser supports Federated Credential Management (FedCM).
129
+
130
+ Returns:
131
+ bool: True if FedCM is supported, False otherwise.
132
+ """
133
+
134
+ ...
135
+
136
+ @abstractmethod
137
+ def virtual_authenticator_id(self) -> Optional[str]:
138
+ """
139
+ Returns the ID of the currently active virtual authenticator.
140
+
141
+ Returns:
142
+ Optional[str]: The ID of the virtual authenticator, or None if not set.
143
+ """
144
+
145
+ ...
@@ -0,0 +1,298 @@
1
+ from selenium import webdriver
2
+ from abc import ABC, abstractmethod
3
+ from typing import (
4
+ Any,
5
+ Dict,
6
+ Optional,
7
+ Union
8
+ )
9
+ from selenium.webdriver.common.bidi.session import Session
10
+ from osn_selenium._typehints import (
11
+ ARCHITECTURES_TYPEHINT
12
+ )
13
+ from selenium.webdriver.remote.errorhandler import ErrorHandler
14
+ from osn_selenium.abstract.executors.cdp import AbstractCDPExecutor
15
+ from selenium.webdriver.remote.locator_converter import LocatorConverter
16
+ from selenium.webdriver.remote.remote_connection import RemoteConnection
17
+ from osn_selenium.abstract.executors.javascript import AbstractJSExecutor
18
+ from selenium.webdriver.remote.webdriver import (
19
+ WebDriver as legacyWebDriver
20
+ )
21
+
22
+
23
+ __all__ = ["AbstractCoreBaseMixin"]
24
+
25
+
26
+ class AbstractCoreBaseMixin(ABC):
27
+ """
28
+ Abstract base mixin providing core WebDriver functionality and session management.
29
+ """
30
+
31
+ @abstractmethod
32
+ def _ensure_driver(self) -> Optional[legacyWebDriver]:
33
+ """
34
+ Internal method to ensure the WebDriver instance is running before an operation.
35
+
36
+ Returns:
37
+ Optional[legacyWebDriver]: The driver instance if verified, otherwise None.
38
+
39
+ Raises:
40
+ RuntimeError: If the driver is not started.
41
+ """
42
+
43
+ ...
44
+
45
+ @property
46
+ @abstractmethod
47
+ def architecture(self) -> ARCHITECTURES_TYPEHINT:
48
+ """
49
+ Returns the architecture of the driver.
50
+
51
+ Returns:
52
+ ARCHITECTURE_TYPEHINT: The architecture name.
53
+ """
54
+
55
+ ...
56
+
57
+ @property
58
+ @abstractmethod
59
+ def capabilities(self) -> Dict[str, Any]:
60
+ """
61
+ Returns the capabilities of the current session as reported by the driver.
62
+
63
+ Returns:
64
+ Dict[str, Any]: A dictionary of session capabilities.
65
+ """
66
+
67
+ ...
68
+
69
+ @property
70
+ @abstractmethod
71
+ def caps(self) -> Dict[str, Any]:
72
+ """
73
+ The direct representation of session capabilities.
74
+
75
+ Returns:
76
+ Dict[str, Any]: Current session capabilities.
77
+ """
78
+
79
+ ...
80
+
81
+ @caps.setter
82
+ @abstractmethod
83
+ def caps(self, value: Dict[str, Any]) -> None:
84
+ """
85
+ Sets the session capabilities.
86
+
87
+ Args:
88
+ value (Dict[str, Any]): Dictionary of capabilities.
89
+ """
90
+
91
+ ...
92
+
93
+ @property
94
+ @abstractmethod
95
+ def cdp(self) -> AbstractCDPExecutor:
96
+ """
97
+ Returns the CDP (Chrome DevTools Protocol) executor.
98
+
99
+ Returns:
100
+ AbstractCDPExecutor: The CDP executor instance used for sending
101
+ commands directly to the browser via the DevTools protocol.
102
+ """
103
+
104
+ ...
105
+
106
+ @property
107
+ @abstractmethod
108
+ def command_executor(self) -> RemoteConnection:
109
+ """
110
+ Gets the remote connection manager used for executing commands.
111
+
112
+ Returns:
113
+ RemoteConnection: The remote connection instance.
114
+ """
115
+
116
+ ...
117
+
118
+ @command_executor.setter
119
+ @abstractmethod
120
+ def command_executor(self, value: RemoteConnection) -> None:
121
+ """
122
+ Sets the remote connection manager used for executing commands.
123
+
124
+ Args:
125
+ value (RemoteConnection): The remote connection instance.
126
+ """
127
+
128
+ ...
129
+
130
+ @property
131
+ @abstractmethod
132
+ def driver(self) -> Optional[Union[webdriver.Chrome, webdriver.Edge, webdriver.Firefox]]:
133
+ """
134
+ Returns the underlying Selenium WebDriver instance.
135
+
136
+ Returns:
137
+ Optional[Union[webdriver.Chrome, webdriver.Edge, webdriver.Firefox]]: The driver instance, or None if not started.
138
+ """
139
+
140
+ ...
141
+
142
+ @property
143
+ @abstractmethod
144
+ def error_handler(self) -> ErrorHandler:
145
+ """
146
+ The error handler associated with the current session.
147
+
148
+ Returns:
149
+ ErrorHandler: The error handler instance.
150
+ """
151
+
152
+ ...
153
+
154
+ @error_handler.setter
155
+ @abstractmethod
156
+ def error_handler(self, value: ErrorHandler) -> None:
157
+ """
158
+ Sets the error handler for the session.
159
+
160
+ Args:
161
+ value (ErrorHandler): The new error handler instance.
162
+ """
163
+
164
+ ...
165
+
166
+ @abstractmethod
167
+ def execute(self, driver_command: str, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
168
+ """
169
+ Sends a command to be executed by the remote driver.
170
+
171
+ Args:
172
+ driver_command (str): The name of the command to execute.
173
+ params (Optional[Dict[str, Any]]): A dictionary of parameters for the command.
174
+
175
+ Returns:
176
+ Dict[str, Any]: The response from the driver.
177
+ """
178
+
179
+ ...
180
+
181
+ @property
182
+ @abstractmethod
183
+ def is_active(self) -> bool:
184
+ """
185
+ Checks if the WebDriver instance is currently running.
186
+
187
+ Returns:
188
+ bool: True if the driver is active, False otherwise.
189
+ """
190
+
191
+ ...
192
+
193
+ @property
194
+ @abstractmethod
195
+ def javascript(self) -> AbstractJSExecutor:
196
+ """
197
+ Returns the JavaScript executor for this WebDriver instance.
198
+
199
+ Returns:
200
+ AbstractJSExecutor: The JavaScript executor instance.
201
+ """
202
+
203
+ ...
204
+
205
+ @property
206
+ @abstractmethod
207
+ def locator_converter(self) -> LocatorConverter:
208
+ """
209
+ The converter used for translating locators into WebDriver protocols.
210
+
211
+ Returns:
212
+ LocatorConverter: The locator converter instance.
213
+ """
214
+
215
+ ...
216
+
217
+ @locator_converter.setter
218
+ @abstractmethod
219
+ def locator_converter(self, value: LocatorConverter) -> None:
220
+ """
221
+ Sets the locator converter instance.
222
+
223
+ Args:
224
+ value (LocatorConverter): The new locator converter.
225
+ """
226
+
227
+ ...
228
+
229
+ @property
230
+ @abstractmethod
231
+ def name(self) -> str:
232
+ """
233
+ Returns the name of the underlying browser (e.g., 'chrome', 'firefox').
234
+
235
+ Returns:
236
+ str: The name of the browser.
237
+ """
238
+
239
+ ...
240
+
241
+ @property
242
+ @abstractmethod
243
+ def pinned_scripts(self) -> Dict[str, Any]:
244
+ """
245
+ A dictionary of scripts pinned to the current session.
246
+
247
+ Returns:
248
+ Dict[str, Any]: Pinned scripts and their handles.
249
+ """
250
+
251
+ ...
252
+
253
+ @pinned_scripts.setter
254
+ @abstractmethod
255
+ def pinned_scripts(self, value: Dict[str, Any]) -> None:
256
+ """
257
+ Sets the pinned scripts for the session.
258
+
259
+ Args:
260
+ value (Dict[str, Any]): Dictionary of scripts to pin.
261
+ """
262
+
263
+ ...
264
+
265
+ @abstractmethod
266
+ def session(self) -> Session:
267
+ """
268
+ Internal method to access the current BiDi session object.
269
+
270
+ Returns:
271
+ Session: The session object.
272
+ """
273
+
274
+ ...
275
+
276
+ @property
277
+ @abstractmethod
278
+ def session_id(self) -> Optional[str]:
279
+ """
280
+ The unique session ID assigned by the browser driver.
281
+
282
+ Returns:
283
+ Optional[str]: The session identifier.
284
+ """
285
+
286
+ ...
287
+
288
+ @session_id.setter
289
+ @abstractmethod
290
+ def session_id(self, value: Optional[str]) -> None:
291
+ """
292
+ Sets the unique session ID.
293
+
294
+ Args:
295
+ value (Optional[str]): The new session identifier.
296
+ """
297
+
298
+ ...
@@ -0,0 +1,84 @@
1
+ from typing import Any, Optional
2
+ from abc import ABC, abstractmethod
3
+
4
+
5
+ __all__ = ["AbstractCoreCaptureMixin"]
6
+
7
+
8
+ class AbstractCoreCaptureMixin(ABC):
9
+ """Mixin responsible for screenshots, page source, and printing."""
10
+
11
+ @abstractmethod
12
+ def get_screenshot_as_base64(self) -> str:
13
+ """
14
+ Gets a screenshot of the current window as a base64-encoded string.
15
+
16
+ Returns:
17
+ str: The base64-encoded screenshot image.
18
+ """
19
+
20
+ ...
21
+
22
+ @abstractmethod
23
+ def get_screenshot_as_file(self, filename: str) -> bool:
24
+ """
25
+ Saves a screenshot to a file. This is an alias for save_screenshot.
26
+
27
+ Args:
28
+ filename (str): The full path of the file to save to.
29
+
30
+ Returns:
31
+ bool: True if successful, False otherwise.
32
+ """
33
+
34
+ ...
35
+
36
+ @abstractmethod
37
+ def get_screenshot_as_png(self) -> bytes:
38
+ """
39
+ Gets a screenshot of the current window as binary data.
40
+
41
+ Returns:
42
+ bytes: The screenshot image in PNG format.
43
+ """
44
+
45
+ ...
46
+
47
+ @abstractmethod
48
+ def page_source(self) -> str:
49
+ """
50
+ Gets the source of the current page.
51
+
52
+ Returns:
53
+ str: The source code of the current page.
54
+ """
55
+
56
+ ...
57
+
58
+ @abstractmethod
59
+ def print_page(self, print_options: Optional[Any] = None) -> str:
60
+ """
61
+ Prints the current page to a PDF.
62
+
63
+ Args:
64
+ print_options (Optional[Any]): Options for printing the page.
65
+
66
+ Returns:
67
+ str: A base64-encoded string of the PDF.
68
+ """
69
+
70
+ ...
71
+
72
+ @abstractmethod
73
+ def save_screenshot(self, filename: str) -> bool:
74
+ """
75
+ Saves a screenshot of the current window to a file.
76
+
77
+ Args:
78
+ filename (str): The full path of the file to save the screenshot to.
79
+
80
+ Returns:
81
+ bool: True if successful, False otherwise.
82
+ """
83
+
84
+ ...