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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. osn_selenium/_base_models.py +41 -0
  2. osn_selenium/_cdp_import.py +253 -0
  3. osn_selenium/_functions.py +84 -0
  4. osn_selenium/_typehints.py +19 -0
  5. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  6. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  7. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  8. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  9. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  10. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  11. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  12. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  13. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  14. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  15. osn_selenium/abstract/executors/cdp/console.py +18 -0
  16. osn_selenium/abstract/executors/cdp/css.py +197 -0
  17. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  18. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  19. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  20. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  21. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  22. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  23. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  24. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  25. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  26. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  27. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  28. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  29. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  30. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  31. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  32. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  33. osn_selenium/abstract/executors/cdp/input.py +158 -0
  34. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  35. osn_selenium/abstract/executors/cdp/io.py +24 -0
  36. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  37. osn_selenium/abstract/executors/cdp/log.py +27 -0
  38. osn_selenium/abstract/executors/cdp/media.py +14 -0
  39. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  40. osn_selenium/abstract/executors/cdp/network.py +252 -0
  41. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  42. osn_selenium/abstract/executors/cdp/page.py +347 -0
  43. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  44. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  45. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  46. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  47. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  48. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  49. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  50. osn_selenium/abstract/executors/cdp/security.py +26 -0
  51. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  52. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  53. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  54. osn_selenium/abstract/executors/cdp/target.py +125 -0
  55. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  56. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  57. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  58. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  59. osn_selenium/abstract/executors/cdp.py +63 -0
  60. osn_selenium/abstract/executors/javascript.py +203 -0
  61. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  62. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  63. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  64. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  65. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  66. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  67. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  68. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  69. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  70. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  71. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  72. osn_selenium/abstract/instances/alert.py +67 -0
  73. osn_selenium/abstract/instances/browser.py +76 -0
  74. osn_selenium/abstract/instances/browsing_context.py +310 -0
  75. osn_selenium/abstract/instances/dialog.py +107 -0
  76. osn_selenium/abstract/instances/fedcm.py +133 -0
  77. osn_selenium/abstract/instances/mobile.py +79 -0
  78. osn_selenium/abstract/instances/network.py +100 -0
  79. osn_selenium/abstract/instances/permissions.py +52 -0
  80. osn_selenium/abstract/instances/script.py +109 -0
  81. osn_selenium/abstract/instances/shadow_root.py +81 -0
  82. osn_selenium/abstract/instances/storage.py +98 -0
  83. osn_selenium/abstract/instances/switch_to.py +104 -0
  84. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  85. osn_selenium/abstract/instances/web_element.py +395 -0
  86. osn_selenium/abstract/instances/web_extension.py +70 -0
  87. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  88. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  89. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  90. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  91. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  92. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  93. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  94. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  95. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  96. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  97. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  98. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  99. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  100. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  101. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  102. osn_selenium/abstract/webdriver/core/base.py +298 -0
  103. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  104. osn_selenium/abstract/webdriver/core/components.py +82 -0
  105. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  106. osn_selenium/abstract/webdriver/core/element.py +55 -0
  107. osn_selenium/abstract/webdriver/core/file.py +82 -0
  108. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  109. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  110. osn_selenium/abstract/webdriver/core/script.py +88 -0
  111. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  112. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  113. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  114. osn_selenium/abstract/webdriver/core/window.py +237 -0
  115. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  116. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  117. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  118. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  119. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  120. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  121. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  122. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  123. osn_selenium/base_mixin.py +122 -0
  124. osn_selenium/browsers_handler/__init__.py +47 -17
  125. osn_selenium/browsers_handler/_linux.py +226 -0
  126. osn_selenium/browsers_handler/_windows.py +21 -14
  127. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  128. osn_selenium/dev_tools/_decorators.py +149 -0
  129. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  130. osn_selenium/dev_tools/_functions.py +174 -0
  131. osn_selenium/dev_tools/_system_utils.py +35 -0
  132. osn_selenium/dev_tools/_typehints.py +35 -0
  133. osn_selenium/dev_tools/_validators.py +227 -0
  134. osn_selenium/dev_tools/_wrappers.py +92 -0
  135. osn_selenium/dev_tools/domains/__init__.py +7 -40
  136. osn_selenium/dev_tools/domains/abstract.py +98 -254
  137. osn_selenium/dev_tools/domains/fetch.py +229 -906
  138. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  139. osn_selenium/dev_tools/filters.py +40 -0
  140. osn_selenium/dev_tools/logger/main.py +214 -0
  141. osn_selenium/dev_tools/logger/models.py +232 -0
  142. osn_selenium/dev_tools/logger/target.py +278 -0
  143. osn_selenium/dev_tools/manager/__init__.py +16 -0
  144. osn_selenium/dev_tools/manager/base.py +124 -0
  145. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  146. osn_selenium/dev_tools/manager/logging.py +153 -0
  147. osn_selenium/dev_tools/manager/settings.py +89 -0
  148. osn_selenium/dev_tools/manager/targets.py +175 -0
  149. osn_selenium/dev_tools/models.py +49 -0
  150. osn_selenium/dev_tools/settings.py +139 -0
  151. osn_selenium/dev_tools/target/__init__.py +16 -0
  152. osn_selenium/dev_tools/target/base.py +427 -0
  153. osn_selenium/dev_tools/target/detach.py +54 -0
  154. osn_selenium/dev_tools/target/discovery.py +112 -0
  155. osn_selenium/dev_tools/target/events.py +120 -0
  156. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  157. osn_selenium/dev_tools/target/lifecycle.py +184 -0
  158. osn_selenium/dev_tools/target/logging.py +163 -0
  159. osn_selenium/exceptions/__init__.py +1 -0
  160. osn_selenium/exceptions/base.py +9 -0
  161. osn_selenium/exceptions/configuration.py +84 -0
  162. osn_selenium/exceptions/dependencies.py +60 -0
  163. osn_selenium/exceptions/devtools.py +114 -0
  164. osn_selenium/exceptions/flags.py +45 -0
  165. osn_selenium/exceptions/instance.py +92 -0
  166. osn_selenium/exceptions/javascript.py +31 -0
  167. osn_selenium/exceptions/logic.py +31 -0
  168. osn_selenium/exceptions/path.py +77 -0
  169. osn_selenium/exceptions/platform.py +33 -0
  170. osn_selenium/exceptions/protocol.py +86 -0
  171. osn_selenium/exceptions/webdriver.py +44 -0
  172. osn_selenium/exceptions/window.py +63 -0
  173. osn_selenium/executors/__init__.py +1 -0
  174. osn_selenium/executors/sync/__init__.py +1 -0
  175. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  176. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  177. osn_selenium/executors/sync/cdp/animation.py +50 -0
  178. osn_selenium/executors/sync/cdp/audits.py +48 -0
  179. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  180. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  181. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  182. osn_selenium/executors/sync/cdp/browser.py +131 -0
  183. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  184. osn_selenium/executors/sync/cdp/cast.py +38 -0
  185. osn_selenium/executors/sync/cdp/console.py +24 -0
  186. osn_selenium/executors/sync/cdp/css.py +187 -0
  187. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  188. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  189. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  190. osn_selenium/executors/sync/cdp/dom.py +310 -0
  191. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  192. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  193. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  194. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  195. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  196. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  197. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  198. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  199. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  200. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  201. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  202. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  203. osn_selenium/executors/sync/cdp/input.py +233 -0
  204. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  205. osn_selenium/executors/sync/cdp/io.py +33 -0
  206. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  207. osn_selenium/executors/sync/cdp/log.py +35 -0
  208. osn_selenium/executors/sync/cdp/media.py +21 -0
  209. osn_selenium/executors/sync/cdp/memory.py +62 -0
  210. osn_selenium/executors/sync/cdp/network.py +287 -0
  211. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  212. osn_selenium/executors/sync/cdp/page.py +365 -0
  213. osn_selenium/executors/sync/cdp/performance.py +33 -0
  214. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  215. osn_selenium/executors/sync/cdp/preload.py +21 -0
  216. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  217. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  218. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  219. osn_selenium/executors/sync/cdp/schema.py +23 -0
  220. osn_selenium/executors/sync/cdp/security.py +30 -0
  221. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  222. osn_selenium/executors/sync/cdp/storage.py +151 -0
  223. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  224. osn_selenium/executors/sync/cdp/target.py +147 -0
  225. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  226. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  227. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  228. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  229. osn_selenium/executors/sync/cdp.py +100 -0
  230. osn_selenium/executors/sync/javascript.py +79 -0
  231. osn_selenium/executors/trio_threads/__init__.py +1 -0
  232. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  233. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  234. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  235. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  236. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  237. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  238. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  239. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  240. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  241. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  242. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  243. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  244. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  245. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  246. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  247. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  248. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  249. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  250. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  251. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  252. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  253. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  254. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  255. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  256. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  257. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  258. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  259. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  260. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  261. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  262. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  263. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  264. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  265. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  266. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  267. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  268. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  269. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  270. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  271. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  272. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  273. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  274. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  275. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  276. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  277. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  278. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  279. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  280. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  281. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  282. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  283. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  284. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  285. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  286. osn_selenium/executors/trio_threads/cdp.py +104 -0
  287. osn_selenium/executors/trio_threads/javascript.py +90 -0
  288. osn_selenium/executors/unified/__init__.py +1 -0
  289. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  290. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  291. osn_selenium/executors/unified/cdp/animation.py +50 -0
  292. osn_selenium/executors/unified/cdp/audits.py +45 -0
  293. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  294. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  295. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  296. osn_selenium/executors/unified/cdp/browser.py +143 -0
  297. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  298. osn_selenium/executors/unified/cdp/cast.py +32 -0
  299. osn_selenium/executors/unified/cdp/console.py +18 -0
  300. osn_selenium/executors/unified/cdp/css.py +237 -0
  301. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  302. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  303. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  304. osn_selenium/executors/unified/cdp/dom.py +380 -0
  305. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  306. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  307. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  308. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  309. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  310. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  311. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  312. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  313. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  314. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  315. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  316. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  317. osn_selenium/executors/unified/cdp/input.py +254 -0
  318. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  319. osn_selenium/executors/unified/cdp/io.py +29 -0
  320. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  321. osn_selenium/executors/unified/cdp/log.py +29 -0
  322. osn_selenium/executors/unified/cdp/media.py +15 -0
  323. osn_selenium/executors/unified/cdp/memory.py +59 -0
  324. osn_selenium/executors/unified/cdp/network.py +323 -0
  325. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  326. osn_selenium/executors/unified/cdp/page.py +410 -0
  327. osn_selenium/executors/unified/cdp/performance.py +27 -0
  328. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  329. osn_selenium/executors/unified/cdp/preload.py +15 -0
  330. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  331. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  332. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  333. osn_selenium/executors/unified/cdp/schema.py +17 -0
  334. osn_selenium/executors/unified/cdp/security.py +27 -0
  335. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  336. osn_selenium/executors/unified/cdp/storage.py +178 -0
  337. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  338. osn_selenium/executors/unified/cdp/target.py +165 -0
  339. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  340. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  341. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  342. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  343. osn_selenium/executors/unified/javascript.py +104 -0
  344. osn_selenium/flags/__init__.py +1 -0
  345. osn_selenium/flags/_functions.py +45 -0
  346. osn_selenium/flags/_typehints.py +34 -0
  347. osn_selenium/flags/_validators.py +101 -0
  348. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +159 -245
  349. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +130 -374
  350. osn_selenium/flags/chrome.py +259 -0
  351. osn_selenium/flags/edge.py +259 -0
  352. osn_selenium/flags/models/__init__.py +1 -0
  353. osn_selenium/flags/models/base.py +130 -0
  354. osn_selenium/flags/models/blink.py +263 -0
  355. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  356. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  357. osn_selenium/flags/models/values.py +44 -0
  358. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  359. osn_selenium/flags/yandex.py +259 -0
  360. osn_selenium/instances/__init__.py +1 -0
  361. osn_selenium/instances/_functions.py +242 -0
  362. osn_selenium/instances/_typehints.py +148 -0
  363. osn_selenium/instances/_utils.py +143 -0
  364. osn_selenium/instances/convert.py +287 -0
  365. osn_selenium/instances/protocols.py +105 -0
  366. osn_selenium/instances/sync/__init__.py +1 -0
  367. osn_selenium/instances/sync/action_chains/__init__.py +32 -0
  368. osn_selenium/instances/sync/action_chains/base.py +74 -0
  369. osn_selenium/instances/sync/action_chains/click.py +61 -0
  370. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  371. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  372. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  373. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  374. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  375. osn_selenium/instances/sync/action_chains/move.py +46 -0
  376. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  377. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  378. osn_selenium/instances/sync/alert.py +69 -0
  379. osn_selenium/instances/sync/browser.py +72 -0
  380. osn_selenium/instances/sync/browsing_context.py +193 -0
  381. osn_selenium/instances/sync/dialog.py +81 -0
  382. osn_selenium/instances/sync/fedcm.py +92 -0
  383. osn_selenium/instances/sync/mobile.py +75 -0
  384. osn_selenium/instances/sync/network.py +90 -0
  385. osn_selenium/instances/sync/permissions.py +80 -0
  386. osn_selenium/instances/sync/script.py +77 -0
  387. osn_selenium/instances/sync/shadow_root.py +113 -0
  388. osn_selenium/instances/sync/storage.py +91 -0
  389. osn_selenium/instances/sync/switch_to.py +92 -0
  390. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  391. osn_selenium/instances/sync/web_element.py +179 -0
  392. osn_selenium/instances/sync/web_extension.py +77 -0
  393. osn_selenium/instances/trio_threads/__init__.py +1 -0
  394. osn_selenium/instances/trio_threads/action_chains/__init__.py +32 -0
  395. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  396. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  397. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  399. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  400. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  401. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  402. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  403. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  404. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  405. osn_selenium/instances/trio_threads/alert.py +87 -0
  406. osn_selenium/instances/trio_threads/browser.py +90 -0
  407. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  408. osn_selenium/instances/trio_threads/dialog.py +99 -0
  409. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  410. osn_selenium/instances/trio_threads/mobile.py +93 -0
  411. osn_selenium/instances/trio_threads/network.py +108 -0
  412. osn_selenium/instances/trio_threads/permissions.py +102 -0
  413. osn_selenium/instances/trio_threads/script.py +95 -0
  414. osn_selenium/instances/trio_threads/shadow_root.py +154 -0
  415. osn_selenium/instances/trio_threads/storage.py +109 -0
  416. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  417. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  418. osn_selenium/instances/trio_threads/web_element.py +217 -0
  419. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  420. osn_selenium/instances/unified/__init__.py +1 -0
  421. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  422. osn_selenium/instances/unified/action_chains/base.py +31 -0
  423. osn_selenium/instances/unified/action_chains/click.py +27 -0
  424. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  425. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  426. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  427. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  428. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  429. osn_selenium/instances/unified/action_chains/move.py +24 -0
  430. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  431. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  432. osn_selenium/instances/unified/alert.py +29 -0
  433. osn_selenium/instances/unified/browser.py +33 -0
  434. osn_selenium/instances/unified/browsing_context.py +151 -0
  435. osn_selenium/instances/unified/dialog.py +42 -0
  436. osn_selenium/instances/unified/fedcm.py +48 -0
  437. osn_selenium/instances/unified/mobile.py +36 -0
  438. osn_selenium/instances/unified/network.py +50 -0
  439. osn_selenium/instances/unified/permissions.py +43 -0
  440. osn_selenium/instances/unified/script.py +38 -0
  441. osn_selenium/instances/unified/shadow_root.py +46 -0
  442. osn_selenium/instances/unified/storage.py +48 -0
  443. osn_selenium/instances/unified/switch_to.py +49 -0
  444. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  445. osn_selenium/instances/unified/web_element.py +145 -0
  446. osn_selenium/instances/unified/web_extension.py +38 -0
  447. osn_selenium/javascript/__init__.py +1 -0
  448. osn_selenium/javascript/_functions.py +63 -0
  449. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  450. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  451. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  452. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  453. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  454. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  455. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  456. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  457. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  458. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  459. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  460. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  461. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  462. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  463. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  464. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  465. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  466. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  467. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  468. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  469. osn_selenium/javascript/functions.py +44 -0
  470. osn_selenium/javascript/models.py +35 -0
  471. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  472. osn_selenium/models.py +94 -0
  473. osn_selenium/trio_threads_mixin.py +159 -0
  474. osn_selenium/webdrivers/_args_helpers.py +181 -0
  475. osn_selenium/webdrivers/_bridges.py +57 -0
  476. osn_selenium/webdrivers/_decorators.py +83 -0
  477. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  478. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  479. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  480. osn_selenium/webdrivers/_typehints.py +10 -0
  481. osn_selenium/webdrivers/protocols.py +50 -0
  482. osn_selenium/webdrivers/sync/__init__.py +1 -0
  483. osn_selenium/webdrivers/sync/blink/__init__.py +124 -0
  484. osn_selenium/webdrivers/sync/blink/base.py +140 -0
  485. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  486. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  487. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  488. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  489. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  490. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  491. osn_selenium/webdrivers/sync/chrome/__init__.py +102 -0
  492. osn_selenium/webdrivers/sync/chrome/base.py +118 -0
  493. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  494. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  495. osn_selenium/webdrivers/sync/core/__init__.py +100 -0
  496. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  497. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  498. osn_selenium/webdrivers/sync/core/base.py +175 -0
  499. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  500. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  501. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  502. osn_selenium/webdrivers/sync/core/element.py +42 -0
  503. osn_selenium/webdrivers/sync/core/file.py +40 -0
  504. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  505. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  506. osn_selenium/webdrivers/sync/core/script.py +53 -0
  507. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  508. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  509. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  510. osn_selenium/webdrivers/sync/core/window.py +99 -0
  511. osn_selenium/webdrivers/sync/edge/__init__.py +102 -0
  512. osn_selenium/webdrivers/sync/edge/base.py +114 -0
  513. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  514. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  515. osn_selenium/webdrivers/sync/yandex/__init__.py +102 -0
  516. osn_selenium/webdrivers/sync/yandex/base.py +111 -0
  517. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  518. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  519. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  520. osn_selenium/webdrivers/trio_threads/blink/__init__.py +134 -0
  521. osn_selenium/webdrivers/trio_threads/blink/base.py +143 -0
  522. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  523. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  524. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  525. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  526. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  527. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  528. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +114 -0
  529. osn_selenium/webdrivers/trio_threads/chrome/base.py +119 -0
  530. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  531. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  532. osn_selenium/webdrivers/trio_threads/core/__init__.py +115 -0
  533. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  534. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  535. osn_selenium/webdrivers/trio_threads/core/base.py +199 -0
  536. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  537. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  538. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  539. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  540. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  541. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  542. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  543. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  544. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  545. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  546. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  547. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  548. osn_selenium/webdrivers/trio_threads/edge/__init__.py +114 -0
  549. osn_selenium/webdrivers/trio_threads/edge/base.py +115 -0
  550. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  551. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  552. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +114 -0
  553. osn_selenium/webdrivers/trio_threads/yandex/base.py +112 -0
  554. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  555. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  556. osn_selenium/webdrivers/unified/__init__.py +1 -0
  557. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  558. osn_selenium/webdrivers/unified/blink/base.py +135 -0
  559. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  560. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  561. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  562. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  563. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  564. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  565. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  566. osn_selenium/webdrivers/unified/chrome/base.py +58 -0
  567. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  568. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  569. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  570. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  571. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  572. osn_selenium/webdrivers/unified/core/base.py +139 -0
  573. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  574. osn_selenium/webdrivers/unified/core/components.py +32 -0
  575. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  576. osn_selenium/webdrivers/unified/core/element.py +24 -0
  577. osn_selenium/webdrivers/unified/core/file.py +35 -0
  578. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  579. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  580. osn_selenium/webdrivers/unified/core/script.py +32 -0
  581. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  582. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  583. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  584. osn_selenium/webdrivers/unified/core/window.py +135 -0
  585. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  586. osn_selenium/webdrivers/unified/edge/base.py +56 -0
  587. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  588. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  589. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  590. osn_selenium/webdrivers/unified/yandex/base.py +58 -0
  591. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  592. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  593. osn_selenium-1.1.0.dist-info/METADATA +252 -0
  594. osn_selenium-1.1.0.dist-info/RECORD +615 -0
  595. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/WHEEL +1 -1
  596. osn_selenium/captcha_workers/__init__.py +0 -26
  597. osn_selenium/dev_tools/_types.py +0 -22
  598. osn_selenium/dev_tools/errors.py +0 -89
  599. osn_selenium/dev_tools/logger.py +0 -558
  600. osn_selenium/dev_tools/manager.py +0 -1551
  601. osn_selenium/dev_tools/utils.py +0 -509
  602. osn_selenium/errors.py +0 -16
  603. osn_selenium/types.py +0 -118
  604. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  605. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  606. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  607. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  608. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  609. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  610. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  611. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  612. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  613. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  614. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  615. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  616. osn_selenium/webdrivers/_functions.py +0 -504
  617. osn_selenium/webdrivers/types.py +0 -390
  618. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  619. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  620. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  621. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  622. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  623. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  624. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  628. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  629. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  630. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  631. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  632. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  633. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  634. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  635. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/top_level.txt +0 -0
@@ -1,28 +1,32 @@
1
1
  import pathlib
2
- from typing import (
3
- Any,
4
- Optional,
5
- TypedDict,
6
- Union
2
+ from typing import Dict, List, Optional
3
+ from osn_selenium._functions import validate_path
4
+ from osn_selenium._typehints import PATH_TYPEHINT
5
+ from osn_selenium.flags.base import BrowserFlagsManager
6
+ from osn_selenium.exceptions.flags import FlagNotDefinedError
7
+ from osn_selenium.flags._functions import (
8
+ build_first_start_argument
7
9
  )
8
- from osn_selenium.webdrivers.BaseDriver.flags import (
9
- BrowserArguments,
10
- BrowserAttributes,
11
- BrowserExperimentalOptions,
12
- BrowserFlagsManager
10
+ from osn_selenium.exceptions.logic import (
11
+ AbstractImplementationError
13
12
  )
14
- from osn_selenium.webdrivers.types import (
15
- AutoplayPolicyType,
13
+ from osn_selenium.flags._typehints import (
14
+ BLINK_WEBDRIVER_OPTION_TYPEHINT
15
+ )
16
+ from osn_selenium.flags.models.base import (
16
17
  FlagDefinition,
17
18
  FlagNotDefined,
18
- FlagType,
19
- LogLevelType,
20
- UseGLType,
21
- _blink_webdriver_option_type
19
+ FlagType
20
+ )
21
+ from osn_selenium.flags.models.blink import (
22
+ BlinkArguments,
23
+ BlinkAttributes,
24
+ BlinkExperimentalOptions,
25
+ BlinkFeatures,
26
+ BlinkFlags
22
27
  )
23
- from osn_selenium.webdrivers._functions import (
28
+ from osn_selenium.flags._validators import (
24
29
  bool_adding_validation_function,
25
- build_first_start_argument,
26
30
  int_adding_validation_function,
27
31
  optional_bool_adding_validation_function,
28
32
  path_adding_validation_function,
@@ -30,236 +34,7 @@ from osn_selenium.webdrivers._functions import (
30
34
  )
31
35
 
32
36
 
33
- class BlinkExperimentalOptions(BrowserExperimentalOptions, total=False):
34
- """
35
- Typed dictionary for experimental options specific to Blink-based browsers.
36
-
37
- Attributes:
38
- debugger_address (Optional[str]): The address (IP:port) of the remote debugger.
39
- """
40
-
41
- debugger_address: Optional[str]
42
-
43
-
44
- class BlinkFeatures(TypedDict, total=False):
45
- """
46
- Typed dictionary for Blink-specific feature flags.
47
-
48
- These flags control experimental or internal features within the Blink rendering engine.
49
-
50
- Attributes:
51
- calculate_native_win_occlusion (Optional[bool]): Controls native window occlusion calculation.
52
- accept_ch_frame (Optional[bool]): Enables/disables Accept-CH frame.
53
- avoid_unload_check_sync (Optional[bool]): Avoids synchronous unload checks.
54
- bfcache_feature (Optional[bool]): Controls the Back-Forward Cache feature.
55
- heavy_ad_mitigations (Optional[bool]): Enables/disables heavy ad mitigations.
56
- isolate_origins (Optional[bool]): Controls origin isolation.
57
- lazy_frame_loading (Optional[bool]): Enables/disables lazy frame loading.
58
- script_streaming (Optional[bool]): Controls script streaming.
59
- global_media_controls (Optional[bool]): Enables/disables global media controls.
60
- improved_cookie_controls (Optional[bool]): Enables/disables improved cookie controls.
61
- privacy_sandbox_settings4 (Optional[bool]): Controls Privacy Sandbox settings (version 4).
62
- media_router (Optional[bool]): Enables/disables media router.
63
- autofill_server_comm (Optional[bool]): Controls autofill server communication.
64
- cert_transparency_updater (Optional[bool]): Controls certificate transparency updater.
65
- optimization_hints (Optional[bool]): Enables/disables optimization hints.
66
- dial_media_route_provider (Optional[bool]): Controls DIAL media route provider.
67
- paint_holding (Optional[bool]): Enables/disables paint holding.
68
- destroy_profile_on_browser_close (Optional[bool]): Destroys user profile on browser close.
69
- site_per_process (Optional[bool]): Enforces site isolation (site-per-process model).
70
- automation_controlled (Optional[bool]): Indicates if the browser is controlled by automation.
71
- """
72
-
73
- calculate_native_win_occlusion: Optional[bool]
74
- accept_ch_frame: Optional[bool]
75
- avoid_unload_check_sync: Optional[bool]
76
- bfcache_feature: Optional[bool]
77
- heavy_ad_mitigations: Optional[bool]
78
- isolate_origins: Optional[bool]
79
- lazy_frame_loading: Optional[bool]
80
- script_streaming: Optional[bool]
81
- global_media_controls: Optional[bool]
82
- improved_cookie_controls: Optional[bool]
83
- privacy_sandbox_settings4: Optional[bool]
84
- media_router: Optional[bool]
85
- autofill_server_comm: Optional[bool]
86
- cert_transparency_updater: Optional[bool]
87
- optimization_hints: Optional[bool]
88
- dial_media_route_provider: Optional[bool]
89
- paint_holding: Optional[bool]
90
- destroy_profile_on_browser_close: Optional[bool]
91
- site_per_process: Optional[bool]
92
- automation_controlled: Optional[bool]
93
-
94
-
95
- class BlinkAttributes(BrowserAttributes, total=False):
96
- """
97
- Typed dictionary for WebDriver attributes specific to Blink-based browsers.
98
-
99
- Attributes:
100
- enable_bidi (Optional[bool]): Enables/disables BiDi (Bidirectional) protocol mapper.
101
- """
102
-
103
- pass
104
-
105
-
106
- class BlinkArguments(BrowserArguments, total=False):
107
- """
108
- Typed dictionary for command-line arguments specific to Blink-based browsers.
109
-
110
- Attributes:
111
- se_downloads_enabled (bool): Enables/disables Selenium downloads.
112
- headless_mode (bool): Runs the browser in headless mode (without a UI).
113
- mute_audio (bool): Mutes audio output from the browser.
114
- no_first_run (bool): Prevents the browser from showing the "first run" experience.
115
- disable_background_timer_throttling (bool): Disables throttling of background timers.
116
- disable_backgrounding_occluded_windows (bool): Prevents backgrounding of occluded windows.
117
- disable_hang_monitor (bool): Disables the browser's hang monitor.
118
- disable_ipc_flooding_protection (bool): Disables IPC flooding protection.
119
- disable_renderer_backgrounding (bool): Prevents renderer processes from being backgrounded.
120
- disable_back_forward_cache (bool): Disables the Back-Forward Cache.
121
- disable_notifications (bool): Disables web notifications.
122
- disable_popup_blocking (bool): Disables the built-in popup blocker.
123
- disable_prompt_on_repost (bool): Disables the prompt when reposting form data.
124
- disable_sync (bool): Disables browser synchronization features.
125
- disable_background_networking (bool): Disables background network activity.
126
- disable_breakpad (bool): Disables the crash reporter.
127
- disable_component_update (bool): Disables component updates.
128
- disable_domain_reliability (bool): Disables domain reliability monitoring.
129
- disable_new_content_rendering_timeout (bool): Disables timeout for new content rendering.
130
- disable_threaded_animation (bool): Disables threaded animation.
131
- disable_threaded_scrolling (bool): Disables threaded scrolling.
132
- disable_checker_imaging (bool): Disables checker imaging.
133
- disable_image_animation_resync (bool): Disables image animation resynchronization.
134
- disable_partial_raster (bool): Disables partial rasterization.
135
- disable_skia_runtime_opts (bool): Disables Skia runtime optimizations.
136
- disable_dev_shm_usage (bool): Disables the use of /dev/shm (important for Docker).
137
- disable_gpu (bool): Disables GPU hardware acceleration.
138
- aggressive_cache_discard (bool): Enables aggressive discarding of cached data.
139
- allow_running_insecure_content (bool): Allows running insecure content on HTTPS pages.
140
- no_process_per_site (bool): Runs all sites in a single process (less secure, but saves memory).
141
- enable_precise_memory_info (bool): Enables precise memory information reporting.
142
- use_fake_device_for_media_stream (bool): Uses a fake camera/microphone for media streams.
143
- use_fake_ui_for_media_stream (bool): Uses a fake UI for media stream requests.
144
- deny_permission_prompts (bool): Automatically denies all permission prompts.
145
- disable_external_intent_requests (bool): Disables external intent requests.
146
- noerrdialogs (bool): Suppresses error dialogs.
147
- enable_automation (bool): Enables automation features.
148
- test_type (bool): Sets the browser to test mode.
149
- remote_debugging_pipe (bool): Uses a pipe for remote debugging instead of a port.
150
- silent_debugger_extension_api (bool): Silences debugger extension API warnings.
151
- enable_logging_stderr (bool): Enables logging to stderr.
152
- password_store_basic (bool): Uses a basic password store.
153
- use_mock_keychain (bool): Uses a mock keychain for testing.
154
- enable_crash_reporter_for_testing (bool): Enables crash reporter for testing purposes.
155
- metrics_recording_only (bool): Records metrics without sending them.
156
- no_pings (bool): Disables sending pings.
157
- allow_pre_commit_input (bool): Allows pre-commit input.
158
- deterministic_mode (bool): Runs the browser in a more deterministic mode.
159
- run_all_compositor_stages_before_draw (bool): Runs all compositor stages before drawing.
160
- enable_begin_frame_control (bool): Enables begin frame control.
161
- in_process_gpu (bool): Runs the GPU process in-process.
162
- block_new_web_contents (bool): Blocks new web contents (e.g., pop-ups).
163
- new_window (bool): Opens a new window instead of a new tab.
164
- no_service_autorun (bool): Disables service autorun.
165
- process_per_tab (bool): Runs each tab in its own process.
166
- single_process (bool): Runs the browser in a single process (less stable).
167
- no_sandbox (bool): Disables the sandbox (less secure, but can fix some issues).
168
- user_agent (Optional[str]): Sets a custom user agent string.
169
- user_data_dir (Optional[str]): Specifies the user data directory.
170
- proxy_server (Optional[str]): Specifies a proxy server to use.
171
- remote_debugging_port (Optional[int]): Specifies the remote debugging port.
172
- remote_debugging_address (Optional[str]): Specifies the remote debugging address.
173
- use_file_for_fake_video_capture (Optional[Union[str, pathlib.Path]]): Uses a file for fake video capture.
174
- autoplay_policy (Optional[AutoplayPolicyType]): Sets the autoplay policy.
175
- log_level (Optional[LogLevelType]): Sets the browser's log level.
176
- use_gl (Optional[UseGLType]): Specifies the GL backend to use.
177
- force_color_profile (Optional[str]): Forces a specific color profile.
178
- """
179
-
180
- headless_mode: bool
181
- mute_audio: bool
182
- no_first_run: bool
183
- disable_background_timer_throttling: bool
184
- disable_backgrounding_occluded_windows: bool
185
- disable_hang_monitor: bool
186
- disable_ipc_flooding_protection: bool
187
- disable_renderer_backgrounding: bool
188
- disable_back_forward_cache: bool
189
- disable_notifications: bool
190
- disable_popup_blocking: bool
191
- disable_prompt_on_repost: bool
192
- disable_sync: bool
193
- disable_background_networking: bool
194
- disable_breakpad: bool
195
- disable_component_update: bool
196
- disable_domain_reliability: bool
197
- disable_new_content_rendering_timeout: bool
198
- disable_threaded_animation: bool
199
- disable_threaded_scrolling: bool
200
- disable_checker_imaging: bool
201
- disable_image_animation_resync: bool
202
- disable_partial_raster: bool
203
- disable_skia_runtime_opts: bool
204
- disable_dev_shm_usage: bool
205
- disable_gpu: bool
206
- aggressive_cache_discard: bool
207
- allow_running_insecure_content: bool
208
- no_process_per_site: bool
209
- enable_precise_memory_info: bool
210
- use_fake_device_for_media_stream: bool
211
- use_fake_ui_for_media_stream: bool
212
- deny_permission_prompts: bool
213
- disable_external_intent_requests: bool
214
- noerrdialogs: bool
215
- enable_automation: bool
216
- test_type: bool
217
- remote_debugging_pipe: bool
218
- silent_debugger_extension_api: bool
219
- enable_logging_stderr: bool
220
- password_store_basic: bool
221
- use_mock_keychain: bool
222
- enable_crash_reporter_for_testing: bool
223
- metrics_recording_only: bool
224
- no_pings: bool
225
- allow_pre_commit_input: bool
226
- deterministic_mode: bool
227
- run_all_compositor_stages_before_draw: bool
228
- enable_begin_frame_control: bool
229
- in_process_gpu: bool
230
- block_new_web_contents: bool
231
- new_window: bool
232
- no_service_autorun: bool
233
- process_per_tab: bool
234
- single_process: bool
235
- no_sandbox: bool
236
- user_agent: Optional[str]
237
- user_data_dir: Optional[str]
238
- proxy_server: Optional[str]
239
- remote_debugging_port: Optional[int]
240
- remote_debugging_address: Optional[str]
241
- use_file_for_fake_video_capture: Optional[Union[str, pathlib.Path]]
242
- autoplay_policy: Optional[AutoplayPolicyType]
243
- log_level: Optional[LogLevelType]
244
- use_gl: Optional[UseGLType]
245
- force_color_profile: Optional[str]
246
-
247
-
248
- class BlinkFlags(TypedDict, total=False):
249
- """
250
- Typed dictionary representing a collection of all flag types for Blink-based browsers.
251
-
252
- Attributes:
253
- argument (BlinkArguments): Command-line arguments for the browser.
254
- experimental_option (BlinkExperimentalOptions): Experimental options for WebDriver.
255
- attribute (BlinkAttributes): WebDriver attributes.
256
- blink_feature (BlinkFeatures): Blink-specific feature flags.
257
- """
258
-
259
- argument: BlinkArguments
260
- experimental_option: BlinkExperimentalOptions
261
- attribute: BlinkAttributes
262
- blink_feature: BlinkFeatures
37
+ __all__ = ["BlinkFlagsManager"]
263
38
 
264
39
 
265
40
  class BlinkFlagsManager(BrowserFlagsManager):
@@ -269,29 +44,23 @@ class BlinkFlagsManager(BrowserFlagsManager):
269
44
  This class extends `BrowserFlagsManager` to handle Blink-specific features,
270
45
  such as `--enable-blink-features` and `--disable-blink-features`, and provides
271
46
  a comprehensive set of predefined flags for these browsers.
272
-
273
- Attributes:
274
- _browser_exe (Optional[Union[str, pathlib.Path]]): Path to the browser executable.
275
- _start_page_url (Optional[str]): The URL to open when the browser starts.
276
- _enable_blink_features (dict[str, str]): Stores enabled Blink feature commands.
277
- _disable_blink_features (dict[str, str]): Stores disabled Blink feature commands.
278
47
  """
279
48
 
280
49
  def __init__(
281
50
  self,
282
- browser_exe: Optional[Union[str, pathlib.Path]] = None,
51
+ browser_exe: Optional[PATH_TYPEHINT] = None,
283
52
  start_page_url: Optional[str] = None,
284
- flags_types: Optional[dict[str, FlagType]] = None,
285
- flags_definitions: Optional[dict[str, FlagDefinition]] = None
53
+ flags_types: Optional[Dict[str, FlagType]] = None,
54
+ flags_definitions: Optional[Dict[str, FlagDefinition]] = None
286
55
  ):
287
56
  """
288
57
  Initializes the BlinkFlagsManager.
289
58
 
290
59
  Args:
291
- browser_exe (Optional[Union[str, pathlib.Path]]): Path to the browser executable file.
60
+ browser_exe (Optional[PATH_TYPEHINT]): Path to the browser executable file.
292
61
  start_page_url (Optional[str]): Initial URL to open on browser startup.
293
- flags_types (Optional[dict[str, FlagType]]): Custom flag types to add or override.
294
- flags_definitions (Optional[dict[str, FlagDefinition]]): Custom flag definitions to add or override.
62
+ flags_types (Optional[Dict[str, FlagType]]): Custom flag types to add or override.
63
+ flags_definitions (Optional[Dict[str, FlagDefinition]]): Custom flag definitions to add or override.
295
64
  """
296
65
 
297
66
  blink_flags_types = {
@@ -301,8 +70,8 @@ class BlinkFlagsManager(BrowserFlagsManager):
301
70
  set_flags_function=self.set_blink_features,
302
71
  update_flags_function=self.update_blink_features,
303
72
  clear_flags_function=self.clear_blink_features,
304
- build_options_function=self.build_options_blink_features,
305
- build_start_args_function=self.build_start_args_blink_features
73
+ build_options_function=self._build_options_blink_features,
74
+ build_start_args_function=self._build_start_args_blink_features
306
75
  ),
307
76
  }
308
77
 
@@ -929,30 +698,31 @@ class BlinkFlagsManager(BrowserFlagsManager):
929
698
  flags_definitions=blink_flags_definitions
930
699
  )
931
700
 
932
- self._browser_exe = browser_exe
701
+ self._browser_exe = validate_path(path=browser_exe)
702
+
933
703
  self._start_page_url = start_page_url
934
- self._enable_blink_features: dict[str, str] = {}
935
- self._disable_blink_features: dict[str, str] = {}
704
+ self._enable_blink_features: Dict[str, str] = {}
705
+ self._disable_blink_features: Dict[str, str] = {}
936
706
 
937
- def build_start_args_blink_features(self) -> list[str]:
707
+ def _build_start_args_blink_features(self) -> List[str]:
938
708
  """
939
- Builds a list of Blink feature arguments for browser startup.
709
+ Builds a List of Blink feature arguments for browser startup.
940
710
 
941
711
  Returns:
942
- list[str]: A list of startup arguments for Blink features.
712
+ List[str]: A List of startup arguments for Blink features.
943
713
  """
944
714
 
945
715
  start_args = []
946
716
 
947
717
  enable_blink_features = dict(
948
718
  filter(
949
- lambda item: self._flags_definitions_by_types["blink_feature"][item[0]]["mode"] in ["startup_argument", "both"],
719
+ lambda item: self._flags_definitions_by_types["blink_feature"][item[0]].mode in ["startup_argument", "both"],
950
720
  self._enable_blink_features.items()
951
721
  )
952
722
  )
953
723
  disable_blink_features = dict(
954
724
  filter(
955
- lambda item: self._flags_definitions_by_types["blink_feature"][item[0]]["mode"] in ["startup_argument", "both"],
725
+ lambda item: self._flags_definitions_by_types["blink_feature"][item[0]].mode in ["startup_argument", "both"],
956
726
  self._disable_blink_features.items()
957
727
  )
958
728
  )
@@ -965,26 +735,26 @@ class BlinkFlagsManager(BrowserFlagsManager):
965
735
 
966
736
  return start_args
967
737
 
968
- def build_options_blink_features(self, options: _blink_webdriver_option_type) -> _blink_webdriver_option_type:
738
+ def _build_options_blink_features(self, options: BLINK_WEBDRIVER_OPTION_TYPEHINT) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
969
739
  """
970
740
  Adds configured Blink features (`--enable-blink-features` and `--disable-blink-features`) to the WebDriver options.
971
741
 
972
742
  Args:
973
- options (_blink_webdriver_option_type): The WebDriver options object to modify.
743
+ options (blink_webdriver_option_type): The WebDriver options object to modify.
974
744
 
975
745
  Returns:
976
- _blink_webdriver_option_type: The modified WebDriver options object.
746
+ blink_webdriver_option_type: The modified WebDriver options object.
977
747
  """
978
748
 
979
749
  enable_blink_features = dict(
980
750
  filter(
981
- lambda item: self._flags_definitions_by_types["blink_feature"][item[0]]["mode"] in ["webdriver_option", "both"],
751
+ lambda item: self._flags_definitions_by_types["blink_feature"][item[0]].mode in ["webdriver_option", "both"],
982
752
  self._enable_blink_features.items()
983
753
  )
984
754
  )
985
755
  disable_blink_features = dict(
986
756
  filter(
987
- lambda item: self._flags_definitions_by_types["blink_feature"][item[0]]["mode"] in ["webdriver_option", "both"],
757
+ lambda item: self._flags_definitions_by_types["blink_feature"][item[0]].mode in ["webdriver_option", "both"],
988
758
  self._disable_blink_features.items()
989
759
  )
990
760
  )
@@ -1025,9 +795,9 @@ class BlinkFlagsManager(BrowserFlagsManager):
1025
795
  enable (Optional[bool]): `True` to enable, `False` to disable. If `None`, the feature is removed.
1026
796
  """
1027
797
 
1028
- blink_feature_name = blink_feature["name"]
1029
- blink_feature_command = blink_feature["command"]
1030
- adding_validation_function = blink_feature["adding_validation_function"]
798
+ blink_feature_name = blink_feature.name
799
+ blink_feature_command = blink_feature.command
800
+ adding_validation_function = blink_feature.adding_validation_function
1031
801
 
1032
802
  self.remove_blink_feature(blink_feature_command)
1033
803
 
@@ -1037,127 +807,127 @@ class BlinkFlagsManager(BrowserFlagsManager):
1037
807
  else:
1038
808
  self._disable_blink_features[blink_feature_name] = blink_feature_command
1039
809
 
1040
- def update_blink_features(self, blink_features: Union[BlinkFeatures, dict[str, Optional[bool]]]):
810
+ def update_blink_features(self, blink_features: BlinkFeatures):
1041
811
  """
1042
812
  Updates Blink features from a dictionary without clearing existing ones.
1043
813
 
1044
814
  Args:
1045
- blink_features (Union[BlinkFeatures, dict[str, Optional[bool]]]): A dictionary of Blink features to set or update.
815
+ blink_features (BlinkFeatures): A dictionary of Blink features to set or update.
1046
816
 
1047
817
  Raises:
1048
818
  ValueError: If an unknown Blink feature key is provided.
1049
819
  """
1050
820
 
1051
- for key, value in blink_features.items():
821
+ for key, value in blink_features.model_dump(exclude_none=True).items():
1052
822
  flag_definition = self._flags_definitions_by_types["blink_feature"].get(key, FlagNotDefined())
1053
823
 
1054
824
  if isinstance(flag_definition, FlagNotDefined):
1055
- raise ValueError(f"Unknown blink feature: {key}.")
825
+ raise FlagNotDefinedError(flag_name=key, flag_type="blink features")
1056
826
 
1057
827
  self.set_blink_feature(flag_definition, value)
1058
828
 
1059
- def set_blink_features(self, blink_features: Union[BlinkFeatures, dict[str, Optional[bool]]]):
829
+ def set_blink_features(self, blink_features: BlinkFeatures):
1060
830
  """
1061
831
  Clears existing and sets new Blink features from a dictionary.
1062
832
 
1063
833
  Args:
1064
- blink_features (Union[BlinkFeatures, dict[str, Optional[bool]]]): A dictionary of Blink features to set.
1065
-
1066
- Raises:
1067
- ValueError: If an unknown Blink feature key is provided.
834
+ blink_features (BlinkFeatures): A dictionary of Blink features to set.
1068
835
  """
1069
836
 
1070
837
  self.clear_blink_features()
1071
838
  self.update_blink_features(blink_features)
1072
839
 
1073
- def _renew_webdriver_options(self) -> _blink_webdriver_option_type:
840
+ def _build_options_arguments(self, options: BLINK_WEBDRIVER_OPTION_TYPEHINT) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1074
841
  """
1075
- Abstract method to renew WebDriver options. Must be implemented in child classes.
842
+ Adds configured command-line arguments to the WebDriver options.
1076
843
 
1077
- This method is intended to be overridden in subclasses to provide
1078
- browser-specific WebDriver options instances (e.g., ChromeOptions, EdgeOptions).
844
+ Args:
845
+ options (blink_webdriver_option_type): The WebDriver options object.
1079
846
 
1080
847
  Returns:
1081
- _blink_webdriver_option_type: A new instance of WebDriver options (e.g., ChromeOptions, EdgeOptions).
1082
-
1083
- Raises:
1084
- NotImplementedError: If the method is not implemented in a subclass.
848
+ blink_webdriver_option_type: The modified WebDriver options object.
1085
849
  """
1086
850
 
1087
- raise NotImplementedError("This function must be implemented in child classes.")
851
+ return super()._build_options_arguments(options)
1088
852
 
1089
- @property
1090
- def browser_exe(self) -> Optional[Union[str, pathlib.Path]]:
853
+ def _build_options_attributes(self, options: BLINK_WEBDRIVER_OPTION_TYPEHINT) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1091
854
  """
1092
- Returns the browser executable path.
855
+ Applies configured attributes to the WebDriver options.
1093
856
 
1094
- This property retrieves the path to the browser executable that will be used to start the browser instance.
857
+ Args:
858
+ options (blink_webdriver_option_type): The WebDriver options object.
1095
859
 
1096
860
  Returns:
1097
- Optional[Union[str, pathlib.Path]]: The path to the browser executable.
861
+ blink_webdriver_option_type: The modified WebDriver options object.
1098
862
  """
1099
863
 
1100
- return self._browser_exe
864
+ return super()._build_options_attributes(options)
1101
865
 
1102
- @browser_exe.setter
1103
- def browser_exe(self, value: Optional[Union[str, pathlib.Path]]):
866
+ def _build_options_experimental_options(self, options: BLINK_WEBDRIVER_OPTION_TYPEHINT) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1104
867
  """
1105
- Sets the path to the browser executable.
868
+ Adds experimental options to the WebDriver options.
1106
869
 
1107
870
  Args:
1108
- value (Optional[Union[str, pathlib.Path]]): The new path for the browser executable.
871
+ options (blink_webdriver_option_type): The WebDriver options object.
872
+
873
+ Returns:
874
+ blink_webdriver_option_type: The modified WebDriver options object.
1109
875
  """
1110
876
 
1111
- self._browser_exe = value
877
+ return super()._build_options_experimental_options(options)
1112
878
 
1113
- def build_options_arguments(self, options: _blink_webdriver_option_type) -> _blink_webdriver_option_type:
879
+ def _build_start_args_arguments(self) -> List[str]:
1114
880
  """
1115
- Adds configured command-line arguments to the WebDriver options.
1116
-
1117
- Args:
1118
- options (_blink_webdriver_option_type): The WebDriver options object.
881
+ Builds a List of command-line arguments for browser startup.
1119
882
 
1120
883
  Returns:
1121
- _blink_webdriver_option_type: The modified WebDriver options object.
884
+ List[str]: A List of startup arguments.
1122
885
  """
1123
886
 
1124
- return super().build_options_arguments(options)
887
+ return super()._build_start_args_arguments()
1125
888
 
1126
- def build_options_attributes(self, options: _blink_webdriver_option_type) -> _blink_webdriver_option_type:
889
+ def _renew_webdriver_options(self) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1127
890
  """
1128
- Applies configured attributes to the WebDriver options.
891
+ Abstract method to renew WebDriver options. Must be implemented in child classes.
1129
892
 
1130
- Args:
1131
- options (_blink_webdriver_option_type): The WebDriver options object.
893
+ This method is intended to be overridden in subclasses to provide
894
+ browser-specific WebDriver options instances (e.g., ChromeOptions, EdgeOptions).
1132
895
 
1133
896
  Returns:
1134
- _blink_webdriver_option_type: The modified WebDriver options object.
897
+ blink_webdriver_option_type: A new instance of WebDriver options (e.g., ChromeOptions, EdgeOptions).
898
+
899
+ Raises:
900
+ NotImplementedError: If the method is not implemented in a subclass.
1135
901
  """
1136
902
 
1137
- return super().build_options_attributes(options)
903
+ raise AbstractImplementationError(
904
+ method_name="_renew_webdriver_options",
905
+ class_name=self.__class__.__name__
906
+ )
1138
907
 
1139
- def build_options_experimental_options(self, options: _blink_webdriver_option_type) -> _blink_webdriver_option_type:
908
+ @property
909
+ def browser_exe(self) -> Optional[pathlib.Path]:
1140
910
  """
1141
- Adds experimental options to the WebDriver options.
911
+ Returns the browser executable path.
1142
912
 
1143
- Args:
1144
- options (_blink_webdriver_option_type): The WebDriver options object.
913
+ This property retrieves the path to the browser executable that will be used to start the browser instance.
1145
914
 
1146
915
  Returns:
1147
- _blink_webdriver_option_type: The modified WebDriver options object.
916
+ Optional[pathlib.Path]: The path to the browser executable.
1148
917
  """
1149
918
 
1150
- return super().build_options_experimental_options(options)
919
+ return self._browser_exe
1151
920
 
1152
- def build_start_args_arguments(self) -> list[str]:
921
+ @browser_exe.setter
922
+ def browser_exe(self, value: Optional[PATH_TYPEHINT]):
1153
923
  """
1154
- Builds a list of command-line arguments for browser startup.
924
+ Sets the path to the browser executable.
1155
925
 
1156
- Returns:
1157
- list[str]: A list of startup arguments.
926
+ Args:
927
+ value (Optional[pathlib.Path]): The new path for the browser executable.
1158
928
  """
1159
929
 
1160
- return super().build_start_args_arguments()
930
+ self._browser_exe = validate_path(path=value)
1161
931
 
1162
932
  def clear_flags(self):
1163
933
  """Clears all configured flags and resets the start page URL."""
@@ -1166,22 +936,22 @@ class BlinkFlagsManager(BrowserFlagsManager):
1166
936
  self._start_page_url = None
1167
937
 
1168
938
  @property
1169
- def options(self) -> _blink_webdriver_option_type:
939
+ def options(self) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1170
940
  """
1171
941
  Builds and returns a Blink-specific WebDriver options object.
1172
942
 
1173
943
  Returns:
1174
- _blink_webdriver_option_type: A configured Blink-based WebDriver options object.
944
+ blink_webdriver_option_type: A configured Blink-based WebDriver options object.
1175
945
  """
1176
946
 
1177
947
  return super().options
1178
948
 
1179
- def set_arguments(self, arguments: Union[BlinkArguments, dict[str, Any]]):
949
+ def set_arguments(self, arguments: BlinkArguments):
1180
950
  """
1181
951
  Clears existing and sets new command-line arguments from a dictionary.
1182
952
 
1183
953
  Args:
1184
- arguments (Union[BlinkArguments, dict[str, Any]]): A dictionary of arguments to set.
954
+ arguments (BlinkArguments): A dictionary of arguments to set.
1185
955
 
1186
956
  Raises:
1187
957
  ValueError: If an unknown argument key is provided.
@@ -1189,36 +959,27 @@ class BlinkFlagsManager(BrowserFlagsManager):
1189
959
 
1190
960
  super().set_arguments(arguments)
1191
961
 
1192
- def set_attributes(self, attributes: Union[BlinkAttributes, dict[str, Any]]):
962
+ def set_attributes(self, attributes: BlinkAttributes):
1193
963
  """
1194
964
  Clears existing and sets new browser attributes from a dictionary.
1195
965
 
1196
966
  Args:
1197
- attributes (Union[BlinkAttributes, dict[str, Any]]): A dictionary of attributes to set.
1198
-
1199
- Raises:
1200
- ValueError: If an unknown attribute key is provided.
967
+ attributes (BlinkAttributes): A dictionary of attributes to set.
1201
968
  """
1202
969
 
1203
970
  super().set_attributes(attributes)
1204
971
 
1205
- def set_experimental_options(
1206
- self,
1207
- experimental_options: Union[BlinkExperimentalOptions, dict[str, Any]]
1208
- ):
972
+ def set_experimental_options(self, experimental_options: BlinkExperimentalOptions):
1209
973
  """
1210
974
  Clears existing and sets new experimental options from a dictionary.
1211
975
 
1212
976
  Args:
1213
- experimental_options (Union[BlinkExperimentalOptions, dict[str, Any]]): A dictionary of experimental options to set.
1214
-
1215
- Raises:
1216
- ValueError: If an unknown experimental option key is provided.
977
+ experimental_options (BlinkExperimentalOptions): A dictionary of experimental options to set.
1217
978
  """
1218
979
 
1219
980
  super().set_experimental_options(experimental_options)
1220
981
 
1221
- def set_flags(self, flags: Union[BlinkFlags, dict[str, dict[str, Any]]]):
982
+ def set_flags(self, flags: BlinkFlags):
1222
983
  """
1223
984
  Clears all existing flags and sets new ones, including Blink features.
1224
985
 
@@ -1227,25 +988,25 @@ class BlinkFlagsManager(BrowserFlagsManager):
1227
988
  'attributes', and 'blink_features'.
1228
989
 
1229
990
  Args:
1230
- flags (Union[BlinkFlags, dict[str, dict[str, Any]]]): A dictionary where keys are flag types
991
+ flags (BlinkFlags): A dictionary where keys are flag types
1231
992
  and values are dictionaries of flags to set for that type.
1232
993
  """
1233
994
 
1234
995
  super().set_flags(flags)
1235
996
 
1236
997
  @property
1237
- def start_args(self) -> list[str]:
998
+ def start_args(self) -> List[str]:
1238
999
  """
1239
- Builds and returns a list of all command-line arguments for browser startup.
1000
+ Builds and returns a List of all command-line arguments for browser startup.
1240
1001
 
1241
1002
  Returns:
1242
- list[str]: A list of startup arguments.
1003
+ List[str]: A List of startup arguments.
1243
1004
  """
1244
1005
 
1245
1006
  args = []
1246
1007
 
1247
1008
  for type_name, type_functions in self._flags_types.items():
1248
- args += type_functions["build_start_args_function"]()
1009
+ args += type_functions.build_start_args_function()
1249
1010
 
1250
1011
  return args
1251
1012
 
@@ -1291,49 +1052,37 @@ class BlinkFlagsManager(BrowserFlagsManager):
1291
1052
 
1292
1053
  self._start_page_url = value
1293
1054
 
1294
- def update_arguments(self, arguments: Union[BlinkArguments, dict[str, Any]]):
1055
+ def update_arguments(self, arguments: BlinkArguments):
1295
1056
  """
1296
1057
  Updates command-line arguments from a dictionary without clearing existing ones.
1297
1058
 
1298
1059
  Args:
1299
- arguments (Union[BlinkArguments, dict[str, Any]]): A dictionary of arguments to set or update.
1300
-
1301
- Raises:
1302
- ValueError: If an unknown argument key is provided.
1060
+ arguments (BlinkArguments): A dictionary of arguments to set or update.
1303
1061
  """
1304
1062
 
1305
1063
  super().update_arguments(arguments)
1306
1064
 
1307
- def update_attributes(self, attributes: Union[BlinkAttributes, dict[str, Any]]):
1065
+ def update_attributes(self, attributes: BlinkAttributes):
1308
1066
  """
1309
1067
  Updates browser attributes from a dictionary without clearing existing ones.
1310
1068
 
1311
1069
  Args:
1312
- attributes (Union[BlinkAttributes, dict[str, Any]]): A dictionary of attributes to set or update.
1313
-
1314
- Raises:
1315
- ValueError: If an unknown attribute key is provided.
1070
+ attributes (BlinkAttributes): A dictionary of attributes to set or update.
1316
1071
  """
1317
1072
 
1318
1073
  super().update_attributes(attributes)
1319
1074
 
1320
- def update_experimental_options(
1321
- self,
1322
- experimental_options: Union[BlinkExperimentalOptions, dict[str, Any]]
1323
- ):
1075
+ def update_experimental_options(self, experimental_options: BlinkExperimentalOptions):
1324
1076
  """
1325
1077
  Updates experimental options from a dictionary without clearing existing ones.
1326
1078
 
1327
1079
  Args:
1328
- experimental_options (Union[BlinkExperimentalOptions, dict[str, Any]]): A dictionary of experimental options to set or update.
1329
-
1330
- Raises:
1331
- ValueError: If an unknown experimental option key is provided.
1080
+ experimental_options (BlinkExperimentalOptions): A dictionary of experimental options to set or update.
1332
1081
  """
1333
1082
 
1334
1083
  super().update_experimental_options(experimental_options)
1335
1084
 
1336
- def update_flags(self, flags: Union[BlinkFlags, dict[str, dict[str, Any]]]):
1085
+ def update_flags(self, flags: BlinkFlags):
1337
1086
  """
1338
1087
  Updates all flags, including Blink features, without clearing existing ones.
1339
1088
 
@@ -1342,8 +1091,15 @@ class BlinkFlagsManager(BrowserFlagsManager):
1342
1091
  'attributes', and 'blink_features'.
1343
1092
 
1344
1093
  Args:
1345
- flags (Union[BlinkFlags, dict[str, dict[str, Any]]]): A dictionary where keys are flag types
1094
+ flags (BlinkFlags): A dictionary where keys are flag types
1346
1095
  and values are dictionaries of flags to update for that type.
1347
1096
  """
1348
1097
 
1349
1098
  super().update_flags(flags)
1099
+
1100
+
1101
+ BlinkArguments.model_rebuild()
1102
+ BlinkExperimentalOptions.model_rebuild()
1103
+ BlinkAttributes.model_rebuild()
1104
+ BlinkFeatures.model_rebuild()
1105
+ BlinkFlags.model_rebuild()