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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. osn_selenium/_functions.py +84 -0
  2. osn_selenium/_typehints.py +19 -0
  3. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  4. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  5. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  6. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  7. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  8. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  9. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  10. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  11. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  12. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  13. osn_selenium/abstract/executors/cdp/console.py +18 -0
  14. osn_selenium/abstract/executors/cdp/css.py +197 -0
  15. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  16. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  17. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  18. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  19. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  20. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  21. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  22. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  23. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  24. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  25. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  26. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  27. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  28. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  29. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  30. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  31. osn_selenium/abstract/executors/cdp/input.py +158 -0
  32. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  33. osn_selenium/abstract/executors/cdp/io.py +24 -0
  34. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  35. osn_selenium/abstract/executors/cdp/log.py +27 -0
  36. osn_selenium/abstract/executors/cdp/media.py +14 -0
  37. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  38. osn_selenium/abstract/executors/cdp/network.py +252 -0
  39. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  40. osn_selenium/abstract/executors/cdp/page.py +347 -0
  41. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  42. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  43. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  44. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  45. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  46. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  47. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  48. osn_selenium/abstract/executors/cdp/security.py +26 -0
  49. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  50. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  51. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  52. osn_selenium/abstract/executors/cdp/target.py +125 -0
  53. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  54. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  55. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  56. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  57. osn_selenium/abstract/executors/javascript.py +203 -0
  58. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  59. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  60. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  61. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  62. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  63. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  64. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  65. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  66. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  67. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  68. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  69. osn_selenium/abstract/instances/alert.py +67 -0
  70. osn_selenium/abstract/instances/browser.py +76 -0
  71. osn_selenium/abstract/instances/browsing_context.py +310 -0
  72. osn_selenium/abstract/instances/dialog.py +107 -0
  73. osn_selenium/abstract/instances/fedcm.py +133 -0
  74. osn_selenium/abstract/instances/mobile.py +79 -0
  75. osn_selenium/abstract/instances/network.py +100 -0
  76. osn_selenium/abstract/instances/permissions.py +52 -0
  77. osn_selenium/abstract/instances/script.py +109 -0
  78. osn_selenium/abstract/instances/shadow_root.py +81 -0
  79. osn_selenium/abstract/instances/storage.py +98 -0
  80. osn_selenium/abstract/instances/switch_to.py +104 -0
  81. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  82. osn_selenium/abstract/instances/web_element.py +395 -0
  83. osn_selenium/abstract/instances/web_extension.py +70 -0
  84. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  85. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  86. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  87. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  88. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  89. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  90. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  91. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  92. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  93. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  94. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  95. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  96. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  97. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  98. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  99. osn_selenium/abstract/webdriver/core/base.py +298 -0
  100. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  101. osn_selenium/abstract/webdriver/core/components.py +82 -0
  102. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  103. osn_selenium/abstract/webdriver/core/element.py +55 -0
  104. osn_selenium/abstract/webdriver/core/file.py +82 -0
  105. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  106. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  107. osn_selenium/abstract/webdriver/core/script.py +88 -0
  108. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  109. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  110. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  111. osn_selenium/abstract/webdriver/core/window.py +237 -0
  112. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  113. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  114. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  115. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  116. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  117. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  118. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  119. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  120. osn_selenium/base_mixin.py +122 -0
  121. osn_selenium/browsers_handler/__init__.py +47 -17
  122. osn_selenium/browsers_handler/_linux.py +226 -0
  123. osn_selenium/browsers_handler/_windows.py +21 -14
  124. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  125. osn_selenium/dev_tools/_decorators.py +140 -0
  126. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  127. osn_selenium/dev_tools/_functions.py +174 -0
  128. osn_selenium/dev_tools/_system_utils.py +35 -0
  129. osn_selenium/dev_tools/_typehints.py +32 -0
  130. osn_selenium/dev_tools/_validators.py +227 -0
  131. osn_selenium/dev_tools/_wrappers.py +95 -0
  132. osn_selenium/dev_tools/domains/__init__.py +7 -40
  133. osn_selenium/dev_tools/domains/abstract.py +98 -254
  134. osn_selenium/dev_tools/domains/fetch.py +229 -906
  135. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  136. osn_selenium/dev_tools/filters.py +40 -0
  137. osn_selenium/dev_tools/logger/main.py +226 -0
  138. osn_selenium/dev_tools/logger/models.py +232 -0
  139. osn_selenium/dev_tools/logger/target.py +258 -0
  140. osn_selenium/dev_tools/manager/__init__.py +16 -0
  141. osn_selenium/dev_tools/manager/base.py +147 -0
  142. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  143. osn_selenium/dev_tools/manager/logging.py +153 -0
  144. osn_selenium/dev_tools/manager/settings.py +89 -0
  145. osn_selenium/dev_tools/manager/targets.py +175 -0
  146. osn_selenium/dev_tools/models.py +49 -0
  147. osn_selenium/dev_tools/settings.py +135 -0
  148. osn_selenium/dev_tools/target/__init__.py +16 -0
  149. osn_selenium/dev_tools/target/base.py +438 -0
  150. osn_selenium/dev_tools/target/detach.py +54 -0
  151. osn_selenium/dev_tools/target/discovery.py +112 -0
  152. osn_selenium/dev_tools/target/events.py +120 -0
  153. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  154. osn_selenium/dev_tools/target/lifecycle.py +179 -0
  155. osn_selenium/dev_tools/target/logging.py +155 -0
  156. osn_selenium/exceptions/__init__.py +1 -0
  157. osn_selenium/exceptions/base.py +9 -0
  158. osn_selenium/exceptions/configuration.py +84 -0
  159. osn_selenium/exceptions/devtools.py +114 -0
  160. osn_selenium/exceptions/flags.py +45 -0
  161. osn_selenium/exceptions/instance.py +92 -0
  162. osn_selenium/exceptions/javascript.py +31 -0
  163. osn_selenium/exceptions/logic.py +31 -0
  164. osn_selenium/exceptions/path.py +77 -0
  165. osn_selenium/exceptions/platform.py +33 -0
  166. osn_selenium/exceptions/protocol.py +86 -0
  167. osn_selenium/exceptions/webdriver.py +44 -0
  168. osn_selenium/exceptions/window.py +63 -0
  169. osn_selenium/executors/__init__.py +1 -0
  170. osn_selenium/executors/sync/__init__.py +1 -0
  171. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  172. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  173. osn_selenium/executors/sync/cdp/animation.py +50 -0
  174. osn_selenium/executors/sync/cdp/audits.py +48 -0
  175. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  176. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  177. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  178. osn_selenium/executors/sync/cdp/browser.py +131 -0
  179. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  180. osn_selenium/executors/sync/cdp/cast.py +38 -0
  181. osn_selenium/executors/sync/cdp/console.py +24 -0
  182. osn_selenium/executors/sync/cdp/css.py +187 -0
  183. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  184. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  185. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  186. osn_selenium/executors/sync/cdp/dom.py +310 -0
  187. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  188. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  189. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  190. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  191. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  192. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  193. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  194. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  195. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  196. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  197. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  198. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  199. osn_selenium/executors/sync/cdp/input.py +233 -0
  200. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  201. osn_selenium/executors/sync/cdp/io.py +33 -0
  202. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  203. osn_selenium/executors/sync/cdp/log.py +35 -0
  204. osn_selenium/executors/sync/cdp/media.py +21 -0
  205. osn_selenium/executors/sync/cdp/memory.py +62 -0
  206. osn_selenium/executors/sync/cdp/network.py +287 -0
  207. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  208. osn_selenium/executors/sync/cdp/page.py +365 -0
  209. osn_selenium/executors/sync/cdp/performance.py +33 -0
  210. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  211. osn_selenium/executors/sync/cdp/preload.py +21 -0
  212. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  213. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  214. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  215. osn_selenium/executors/sync/cdp/schema.py +23 -0
  216. osn_selenium/executors/sync/cdp/security.py +30 -0
  217. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  218. osn_selenium/executors/sync/cdp/storage.py +151 -0
  219. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  220. osn_selenium/executors/sync/cdp/target.py +147 -0
  221. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  222. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  223. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  224. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  225. osn_selenium/executors/sync/javascript.py +79 -0
  226. osn_selenium/executors/trio_threads/__init__.py +1 -0
  227. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  228. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  229. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  230. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  231. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  232. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  233. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  234. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  235. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  236. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  237. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  238. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  239. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  240. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  241. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  242. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  243. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  244. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  245. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  246. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  247. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  248. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  249. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  250. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  251. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  252. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  253. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  254. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  255. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  256. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  257. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  258. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  259. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  260. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  261. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  262. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  263. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  264. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  265. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  266. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  267. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  268. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  269. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  270. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  271. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  272. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  273. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  274. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  275. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  276. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  277. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  278. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  279. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  280. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  281. osn_selenium/executors/trio_threads/javascript.py +90 -0
  282. osn_selenium/executors/unified/__init__.py +1 -0
  283. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  284. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  285. osn_selenium/executors/unified/cdp/animation.py +50 -0
  286. osn_selenium/executors/unified/cdp/audits.py +45 -0
  287. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  288. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  289. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  290. osn_selenium/executors/unified/cdp/browser.py +143 -0
  291. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  292. osn_selenium/executors/unified/cdp/cast.py +32 -0
  293. osn_selenium/executors/unified/cdp/console.py +18 -0
  294. osn_selenium/executors/unified/cdp/css.py +237 -0
  295. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  296. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  297. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  298. osn_selenium/executors/unified/cdp/dom.py +380 -0
  299. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  300. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  301. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  302. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  303. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  304. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  305. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  306. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  307. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  308. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  309. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  310. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  311. osn_selenium/executors/unified/cdp/input.py +254 -0
  312. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  313. osn_selenium/executors/unified/cdp/io.py +29 -0
  314. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  315. osn_selenium/executors/unified/cdp/log.py +29 -0
  316. osn_selenium/executors/unified/cdp/media.py +15 -0
  317. osn_selenium/executors/unified/cdp/memory.py +59 -0
  318. osn_selenium/executors/unified/cdp/network.py +323 -0
  319. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  320. osn_selenium/executors/unified/cdp/page.py +410 -0
  321. osn_selenium/executors/unified/cdp/performance.py +27 -0
  322. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  323. osn_selenium/executors/unified/cdp/preload.py +15 -0
  324. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  325. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  326. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  327. osn_selenium/executors/unified/cdp/schema.py +17 -0
  328. osn_selenium/executors/unified/cdp/security.py +27 -0
  329. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  330. osn_selenium/executors/unified/cdp/storage.py +178 -0
  331. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  332. osn_selenium/executors/unified/cdp/target.py +165 -0
  333. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  334. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  335. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  336. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  337. osn_selenium/executors/unified/javascript.py +108 -0
  338. osn_selenium/flags/__init__.py +1 -0
  339. osn_selenium/flags/_functions.py +45 -0
  340. osn_selenium/flags/_typehints.py +34 -0
  341. osn_selenium/flags/_validators.py +101 -0
  342. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +165 -243
  343. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +133 -371
  344. osn_selenium/flags/chrome.py +259 -0
  345. osn_selenium/flags/edge.py +259 -0
  346. osn_selenium/flags/models/__init__.py +1 -0
  347. osn_selenium/flags/models/base.py +130 -0
  348. osn_selenium/flags/models/blink.py +263 -0
  349. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  350. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  351. osn_selenium/flags/models/values.py +44 -0
  352. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  353. osn_selenium/flags/yandex.py +259 -0
  354. osn_selenium/instances/__init__.py +1 -0
  355. osn_selenium/instances/_functions.py +242 -0
  356. osn_selenium/instances/_typehints.py +148 -0
  357. osn_selenium/instances/_utils.py +143 -0
  358. osn_selenium/instances/convert.py +287 -0
  359. osn_selenium/instances/protocols.py +105 -0
  360. osn_selenium/instances/sync/__init__.py +1 -0
  361. osn_selenium/instances/sync/action_chains/__init__.py +26 -0
  362. osn_selenium/instances/sync/action_chains/base.py +74 -0
  363. osn_selenium/instances/sync/action_chains/click.py +61 -0
  364. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  365. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  366. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  367. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  368. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  369. osn_selenium/instances/sync/action_chains/move.py +46 -0
  370. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  371. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  372. osn_selenium/instances/sync/alert.py +69 -0
  373. osn_selenium/instances/sync/browser.py +72 -0
  374. osn_selenium/instances/sync/browsing_context.py +193 -0
  375. osn_selenium/instances/sync/dialog.py +81 -0
  376. osn_selenium/instances/sync/fedcm.py +92 -0
  377. osn_selenium/instances/sync/mobile.py +75 -0
  378. osn_selenium/instances/sync/network.py +90 -0
  379. osn_selenium/instances/sync/permissions.py +80 -0
  380. osn_selenium/instances/sync/script.py +77 -0
  381. osn_selenium/instances/sync/shadow_root.py +91 -0
  382. osn_selenium/instances/sync/storage.py +91 -0
  383. osn_selenium/instances/sync/switch_to.py +92 -0
  384. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  385. osn_selenium/instances/sync/web_element.py +179 -0
  386. osn_selenium/instances/sync/web_extension.py +77 -0
  387. osn_selenium/instances/trio_threads/__init__.py +1 -0
  388. osn_selenium/instances/trio_threads/action_chains/__init__.py +26 -0
  389. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  390. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  391. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  392. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  393. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  394. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  395. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  396. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  397. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  399. osn_selenium/instances/trio_threads/alert.py +87 -0
  400. osn_selenium/instances/trio_threads/browser.py +90 -0
  401. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  402. osn_selenium/instances/trio_threads/dialog.py +99 -0
  403. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  404. osn_selenium/instances/trio_threads/mobile.py +93 -0
  405. osn_selenium/instances/trio_threads/network.py +108 -0
  406. osn_selenium/instances/trio_threads/permissions.py +102 -0
  407. osn_selenium/instances/trio_threads/script.py +95 -0
  408. osn_selenium/instances/trio_threads/shadow_root.py +123 -0
  409. osn_selenium/instances/trio_threads/storage.py +109 -0
  410. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  411. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  412. osn_selenium/instances/trio_threads/web_element.py +217 -0
  413. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  414. osn_selenium/instances/unified/__init__.py +1 -0
  415. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  416. osn_selenium/instances/unified/action_chains/base.py +31 -0
  417. osn_selenium/instances/unified/action_chains/click.py +27 -0
  418. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  419. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  420. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  421. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  422. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  423. osn_selenium/instances/unified/action_chains/move.py +24 -0
  424. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  425. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  426. osn_selenium/instances/unified/alert.py +29 -0
  427. osn_selenium/instances/unified/browser.py +33 -0
  428. osn_selenium/instances/unified/browsing_context.py +151 -0
  429. osn_selenium/instances/unified/dialog.py +42 -0
  430. osn_selenium/instances/unified/fedcm.py +48 -0
  431. osn_selenium/instances/unified/mobile.py +36 -0
  432. osn_selenium/instances/unified/network.py +50 -0
  433. osn_selenium/instances/unified/permissions.py +43 -0
  434. osn_selenium/instances/unified/script.py +38 -0
  435. osn_selenium/instances/unified/shadow_root.py +46 -0
  436. osn_selenium/instances/unified/storage.py +48 -0
  437. osn_selenium/instances/unified/switch_to.py +49 -0
  438. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  439. osn_selenium/instances/unified/web_element.py +145 -0
  440. osn_selenium/instances/unified/web_extension.py +38 -0
  441. osn_selenium/javascript/__init__.py +1 -0
  442. osn_selenium/javascript/_functions.py +63 -0
  443. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  444. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  445. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  446. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  447. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  448. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  449. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  450. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  451. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  452. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  453. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  454. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  455. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  456. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  457. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  458. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  459. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  460. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  461. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  462. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  463. osn_selenium/javascript/functions.py +44 -0
  464. osn_selenium/javascript/models.py +35 -0
  465. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  466. osn_selenium/models.py +139 -0
  467. osn_selenium/webdrivers/_args_helpers.py +181 -0
  468. osn_selenium/webdrivers/_bridges.py +57 -0
  469. osn_selenium/webdrivers/_decorators.py +83 -0
  470. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  471. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  472. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  473. osn_selenium/webdrivers/_typehints.py +10 -0
  474. osn_selenium/webdrivers/protocols.py +50 -0
  475. osn_selenium/webdrivers/sync/__init__.py +1 -0
  476. osn_selenium/webdrivers/sync/blink/__init__.py +114 -0
  477. osn_selenium/webdrivers/sync/blink/base.py +128 -0
  478. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  479. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  480. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  481. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  482. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  483. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  484. osn_selenium/webdrivers/sync/chrome/__init__.py +67 -0
  485. osn_selenium/webdrivers/sync/chrome/base.py +106 -0
  486. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  487. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  488. osn_selenium/webdrivers/sync/core/__init__.py +91 -0
  489. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  490. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  491. osn_selenium/webdrivers/sync/core/base.py +167 -0
  492. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  493. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  494. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  495. osn_selenium/webdrivers/sync/core/element.py +42 -0
  496. osn_selenium/webdrivers/sync/core/file.py +40 -0
  497. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  498. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  499. osn_selenium/webdrivers/sync/core/script.py +53 -0
  500. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  501. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  502. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  503. osn_selenium/webdrivers/sync/core/window.py +99 -0
  504. osn_selenium/webdrivers/sync/edge/__init__.py +67 -0
  505. osn_selenium/webdrivers/sync/edge/base.py +102 -0
  506. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  507. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  508. osn_selenium/webdrivers/sync/yandex/__init__.py +67 -0
  509. osn_selenium/webdrivers/sync/yandex/base.py +99 -0
  510. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  511. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  512. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  513. osn_selenium/webdrivers/trio_threads/blink/__init__.py +124 -0
  514. osn_selenium/webdrivers/trio_threads/blink/base.py +133 -0
  515. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  516. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  517. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  518. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  519. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  520. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  521. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +81 -0
  522. osn_selenium/webdrivers/trio_threads/chrome/base.py +107 -0
  523. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  524. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  525. osn_selenium/webdrivers/trio_threads/core/__init__.py +109 -0
  526. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  527. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  528. osn_selenium/webdrivers/trio_threads/core/base.py +191 -0
  529. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  530. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  531. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  532. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  533. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  534. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  535. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  536. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  537. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  538. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  539. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  540. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  541. osn_selenium/webdrivers/trio_threads/edge/__init__.py +81 -0
  542. osn_selenium/webdrivers/trio_threads/edge/base.py +103 -0
  543. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  544. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  545. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +81 -0
  546. osn_selenium/webdrivers/trio_threads/yandex/base.py +100 -0
  547. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  548. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  549. osn_selenium/webdrivers/unified/__init__.py +1 -0
  550. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  551. osn_selenium/webdrivers/unified/blink/base.py +131 -0
  552. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  553. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  554. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  555. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  556. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  557. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  558. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  559. osn_selenium/webdrivers/unified/chrome/base.py +54 -0
  560. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  561. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  562. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  563. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  564. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  565. osn_selenium/webdrivers/unified/core/base.py +132 -0
  566. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  567. osn_selenium/webdrivers/unified/core/components.py +32 -0
  568. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  569. osn_selenium/webdrivers/unified/core/element.py +24 -0
  570. osn_selenium/webdrivers/unified/core/file.py +35 -0
  571. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  572. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  573. osn_selenium/webdrivers/unified/core/script.py +32 -0
  574. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  575. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  576. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  577. osn_selenium/webdrivers/unified/core/window.py +135 -0
  578. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  579. osn_selenium/webdrivers/unified/edge/base.py +52 -0
  580. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  581. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  582. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  583. osn_selenium/webdrivers/unified/yandex/base.py +54 -0
  584. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  585. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  586. osn_selenium-1.0.0.dist-info/METADATA +239 -0
  587. osn_selenium-1.0.0.dist-info/RECORD +608 -0
  588. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/WHEEL +1 -1
  589. osn_selenium/captcha_workers/__init__.py +0 -26
  590. osn_selenium/dev_tools/_types.py +0 -22
  591. osn_selenium/dev_tools/errors.py +0 -89
  592. osn_selenium/dev_tools/logger.py +0 -558
  593. osn_selenium/dev_tools/manager.py +0 -1551
  594. osn_selenium/dev_tools/utils.py +0 -509
  595. osn_selenium/errors.py +0 -16
  596. osn_selenium/types.py +0 -118
  597. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  598. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  599. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  600. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  601. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  602. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  603. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  604. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  605. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  606. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  607. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  608. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  609. osn_selenium/webdrivers/_functions.py +0 -504
  610. osn_selenium/webdrivers/types.py +0 -390
  611. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  612. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  613. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  614. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  615. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  616. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  617. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  618. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  619. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  620. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  621. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  622. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  623. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  624. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  628. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/top_level.txt +0 -0
@@ -1,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):
@@ -271,27 +46,27 @@ class BlinkFlagsManager(BrowserFlagsManager):
271
46
  a comprehensive set of predefined flags for these browsers.
272
47
 
273
48
  Attributes:
274
- _browser_exe (Optional[Union[str, pathlib.Path]]): Path to the browser executable.
49
+ _browser_exe (Optional[PATH_TYPEHINT]): Path to the browser executable.
275
50
  _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.
51
+ _enable_blink_features (Dict[str, str]): Stores enabled Blink feature commands.
52
+ _disable_blink_features (Dict[str, str]): Stores disabled Blink feature commands.
278
53
  """
279
54
 
280
55
  def __init__(
281
56
  self,
282
- browser_exe: Optional[Union[str, pathlib.Path]] = None,
57
+ browser_exe: Optional[PATH_TYPEHINT] = None,
283
58
  start_page_url: Optional[str] = None,
284
- flags_types: Optional[dict[str, FlagType]] = None,
285
- flags_definitions: Optional[dict[str, FlagDefinition]] = None
59
+ flags_types: Optional[Dict[str, FlagType]] = None,
60
+ flags_definitions: Optional[Dict[str, FlagDefinition]] = None
286
61
  ):
287
62
  """
288
63
  Initializes the BlinkFlagsManager.
289
64
 
290
65
  Args:
291
- browser_exe (Optional[Union[str, pathlib.Path]]): Path to the browser executable file.
66
+ browser_exe (Optional[PATH_TYPEHINT]): Path to the browser executable file.
292
67
  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.
68
+ flags_types (Optional[Dict[str, FlagType]]): Custom flag types to add or override.
69
+ flags_definitions (Optional[Dict[str, FlagDefinition]]): Custom flag definitions to add or override.
295
70
  """
296
71
 
297
72
  blink_flags_types = {
@@ -301,8 +76,8 @@ class BlinkFlagsManager(BrowserFlagsManager):
301
76
  set_flags_function=self.set_blink_features,
302
77
  update_flags_function=self.update_blink_features,
303
78
  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
79
+ build_options_function=self._build_options_blink_features,
80
+ build_start_args_function=self._build_start_args_blink_features
306
81
  ),
307
82
  }
308
83
 
@@ -929,30 +704,31 @@ class BlinkFlagsManager(BrowserFlagsManager):
929
704
  flags_definitions=blink_flags_definitions
930
705
  )
931
706
 
932
- self._browser_exe = browser_exe
707
+ self._browser_exe = validate_path(path=browser_exe)
708
+
933
709
  self._start_page_url = start_page_url
934
- self._enable_blink_features: dict[str, str] = {}
935
- self._disable_blink_features: dict[str, str] = {}
710
+ self._enable_blink_features: Dict[str, str] = {}
711
+ self._disable_blink_features: Dict[str, str] = {}
936
712
 
937
- def build_start_args_blink_features(self) -> list[str]:
713
+ def _build_start_args_blink_features(self) -> List[str]:
938
714
  """
939
- Builds a list of Blink feature arguments for browser startup.
715
+ Builds a List of Blink feature arguments for browser startup.
940
716
 
941
717
  Returns:
942
- list[str]: A list of startup arguments for Blink features.
718
+ List[str]: A List of startup arguments for Blink features.
943
719
  """
944
720
 
945
721
  start_args = []
946
722
 
947
723
  enable_blink_features = dict(
948
724
  filter(
949
- 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"],
950
726
  self._enable_blink_features.items()
951
727
  )
952
728
  )
953
729
  disable_blink_features = dict(
954
730
  filter(
955
- lambda item: self._flags_definitions_by_types["blink_feature"][item[0]]["mode"] in ["startup_argument", "both"],
731
+ lambda item: self._flags_definitions_by_types["blink_feature"][item[0]].mode in ["startup_argument", "both"],
956
732
  self._disable_blink_features.items()
957
733
  )
958
734
  )
@@ -965,26 +741,26 @@ class BlinkFlagsManager(BrowserFlagsManager):
965
741
 
966
742
  return start_args
967
743
 
968
- def build_options_blink_features(self, options: _blink_webdriver_option_type) -> _blink_webdriver_option_type:
744
+ def _build_options_blink_features(self, options: BLINK_WEBDRIVER_OPTION_TYPEHINT) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
969
745
  """
970
746
  Adds configured Blink features (`--enable-blink-features` and `--disable-blink-features`) to the WebDriver options.
971
747
 
972
748
  Args:
973
- options (_blink_webdriver_option_type): The WebDriver options object to modify.
749
+ options (blink_webdriver_option_type): The WebDriver options object to modify.
974
750
 
975
751
  Returns:
976
- _blink_webdriver_option_type: The modified WebDriver options object.
752
+ blink_webdriver_option_type: The modified WebDriver options object.
977
753
  """
978
754
 
979
755
  enable_blink_features = dict(
980
756
  filter(
981
- 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"],
982
758
  self._enable_blink_features.items()
983
759
  )
984
760
  )
985
761
  disable_blink_features = dict(
986
762
  filter(
987
- lambda item: self._flags_definitions_by_types["blink_feature"][item[0]]["mode"] in ["webdriver_option", "both"],
763
+ lambda item: self._flags_definitions_by_types["blink_feature"][item[0]].mode in ["webdriver_option", "both"],
988
764
  self._disable_blink_features.items()
989
765
  )
990
766
  )
@@ -1025,9 +801,9 @@ class BlinkFlagsManager(BrowserFlagsManager):
1025
801
  enable (Optional[bool]): `True` to enable, `False` to disable. If `None`, the feature is removed.
1026
802
  """
1027
803
 
1028
- blink_feature_name = blink_feature["name"]
1029
- blink_feature_command = blink_feature["command"]
1030
- adding_validation_function = blink_feature["adding_validation_function"]
804
+ blink_feature_name = blink_feature.name
805
+ blink_feature_command = blink_feature.command
806
+ adding_validation_function = blink_feature.adding_validation_function
1031
807
 
1032
808
  self.remove_blink_feature(blink_feature_command)
1033
809
 
@@ -1037,127 +813,127 @@ class BlinkFlagsManager(BrowserFlagsManager):
1037
813
  else:
1038
814
  self._disable_blink_features[blink_feature_name] = blink_feature_command
1039
815
 
1040
- def update_blink_features(self, blink_features: Union[BlinkFeatures, dict[str, Optional[bool]]]):
816
+ def update_blink_features(self, blink_features: BlinkFeatures):
1041
817
  """
1042
818
  Updates Blink features from a dictionary without clearing existing ones.
1043
819
 
1044
820
  Args:
1045
- blink_features (Union[BlinkFeatures, dict[str, Optional[bool]]]): A dictionary of Blink features to set or update.
821
+ blink_features (BlinkFeatures): A dictionary of Blink features to set or update.
1046
822
 
1047
823
  Raises:
1048
824
  ValueError: If an unknown Blink feature key is provided.
1049
825
  """
1050
826
 
1051
- for key, value in blink_features.items():
827
+ for key, value in blink_features.model_dump(exclude_none=True).items():
1052
828
  flag_definition = self._flags_definitions_by_types["blink_feature"].get(key, FlagNotDefined())
1053
829
 
1054
830
  if isinstance(flag_definition, FlagNotDefined):
1055
- raise ValueError(f"Unknown blink feature: {key}.")
831
+ raise FlagNotDefinedError(flag_name=key, flag_type="blink features")
1056
832
 
1057
833
  self.set_blink_feature(flag_definition, value)
1058
834
 
1059
- def set_blink_features(self, blink_features: Union[BlinkFeatures, dict[str, Optional[bool]]]):
835
+ def set_blink_features(self, blink_features: BlinkFeatures):
1060
836
  """
1061
837
  Clears existing and sets new Blink features from a dictionary.
1062
838
 
1063
839
  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.
840
+ blink_features (BlinkFeatures): A dictionary of Blink features to set.
1068
841
  """
1069
842
 
1070
843
  self.clear_blink_features()
1071
844
  self.update_blink_features(blink_features)
1072
845
 
1073
- def _renew_webdriver_options(self) -> _blink_webdriver_option_type:
846
+ def _build_options_arguments(self, options: BLINK_WEBDRIVER_OPTION_TYPEHINT) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1074
847
  """
1075
- Abstract method to renew WebDriver options. Must be implemented in child classes.
848
+ Adds configured command-line arguments to the WebDriver options.
1076
849
 
1077
- This method is intended to be overridden in subclasses to provide
1078
- browser-specific WebDriver options instances (e.g., ChromeOptions, EdgeOptions).
850
+ Args:
851
+ options (blink_webdriver_option_type): The WebDriver options object.
1079
852
 
1080
853
  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.
854
+ blink_webdriver_option_type: The modified WebDriver options object.
1085
855
  """
1086
856
 
1087
- raise NotImplementedError("This function must be implemented in child classes.")
857
+ return super()._build_options_arguments(options)
1088
858
 
1089
- @property
1090
- def browser_exe(self) -> Optional[Union[str, pathlib.Path]]:
859
+ def _build_options_attributes(self, options: BLINK_WEBDRIVER_OPTION_TYPEHINT) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1091
860
  """
1092
- Returns the browser executable path.
861
+ Applies configured attributes to the WebDriver options.
1093
862
 
1094
- This property retrieves the path to the browser executable that will be used to start the browser instance.
863
+ Args:
864
+ options (blink_webdriver_option_type): The WebDriver options object.
1095
865
 
1096
866
  Returns:
1097
- Optional[Union[str, pathlib.Path]]: The path to the browser executable.
867
+ blink_webdriver_option_type: The modified WebDriver options object.
1098
868
  """
1099
869
 
1100
- return self._browser_exe
870
+ return super()._build_options_attributes(options)
1101
871
 
1102
- @browser_exe.setter
1103
- def browser_exe(self, value: Optional[Union[str, pathlib.Path]]):
872
+ def _build_options_experimental_options(self, options: BLINK_WEBDRIVER_OPTION_TYPEHINT) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1104
873
  """
1105
- Sets the path to the browser executable.
874
+ Adds experimental options to the WebDriver options.
1106
875
 
1107
876
  Args:
1108
- value (Optional[Union[str, pathlib.Path]]): The new path for the browser executable.
877
+ options (blink_webdriver_option_type): The WebDriver options object.
878
+
879
+ Returns:
880
+ blink_webdriver_option_type: The modified WebDriver options object.
1109
881
  """
1110
882
 
1111
- self._browser_exe = value
883
+ return super()._build_options_experimental_options(options)
1112
884
 
1113
- def build_options_arguments(self, options: _blink_webdriver_option_type) -> _blink_webdriver_option_type:
885
+ def _build_start_args_arguments(self) -> List[str]:
1114
886
  """
1115
- Adds configured command-line arguments to the WebDriver options.
1116
-
1117
- Args:
1118
- options (_blink_webdriver_option_type): The WebDriver options object.
887
+ Builds a List of command-line arguments for browser startup.
1119
888
 
1120
889
  Returns:
1121
- _blink_webdriver_option_type: The modified WebDriver options object.
890
+ List[str]: A List of startup arguments.
1122
891
  """
1123
892
 
1124
- return super().build_options_arguments(options)
893
+ return super()._build_start_args_arguments()
1125
894
 
1126
- def build_options_attributes(self, options: _blink_webdriver_option_type) -> _blink_webdriver_option_type:
895
+ def _renew_webdriver_options(self) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1127
896
  """
1128
- Applies configured attributes to the WebDriver options.
897
+ Abstract method to renew WebDriver options. Must be implemented in child classes.
1129
898
 
1130
- Args:
1131
- options (_blink_webdriver_option_type): The WebDriver options object.
899
+ This method is intended to be overridden in subclasses to provide
900
+ browser-specific WebDriver options instances (e.g., ChromeOptions, EdgeOptions).
1132
901
 
1133
902
  Returns:
1134
- _blink_webdriver_option_type: The modified WebDriver options object.
903
+ blink_webdriver_option_type: A new instance of WebDriver options (e.g., ChromeOptions, EdgeOptions).
904
+
905
+ Raises:
906
+ NotImplementedError: If the method is not implemented in a subclass.
1135
907
  """
1136
908
 
1137
- return super().build_options_attributes(options)
909
+ raise AbstractImplementationError(
910
+ method_name="_renew_webdriver_options",
911
+ class_name=self.__class__.__name__
912
+ )
1138
913
 
1139
- def build_options_experimental_options(self, options: _blink_webdriver_option_type) -> _blink_webdriver_option_type:
914
+ @property
915
+ def browser_exe(self) -> Optional[pathlib.Path]:
1140
916
  """
1141
- Adds experimental options to the WebDriver options.
917
+ Returns the browser executable path.
1142
918
 
1143
- Args:
1144
- options (_blink_webdriver_option_type): The WebDriver options object.
919
+ This property retrieves the path to the browser executable that will be used to start the browser instance.
1145
920
 
1146
921
  Returns:
1147
- _blink_webdriver_option_type: The modified WebDriver options object.
922
+ Optional[pathlib.Path]: The path to the browser executable.
1148
923
  """
1149
924
 
1150
- return super().build_options_experimental_options(options)
925
+ return self._browser_exe
1151
926
 
1152
- def build_start_args_arguments(self) -> list[str]:
927
+ @browser_exe.setter
928
+ def browser_exe(self, value: Optional[PATH_TYPEHINT]):
1153
929
  """
1154
- Builds a list of command-line arguments for browser startup.
930
+ Sets the path to the browser executable.
1155
931
 
1156
- Returns:
1157
- list[str]: A list of startup arguments.
932
+ Args:
933
+ value (Optional[pathlib.Path]): The new path for the browser executable.
1158
934
  """
1159
935
 
1160
- return super().build_start_args_arguments()
936
+ self._browser_exe = validate_path(path=value)
1161
937
 
1162
938
  def clear_flags(self):
1163
939
  """Clears all configured flags and resets the start page URL."""
@@ -1166,22 +942,22 @@ class BlinkFlagsManager(BrowserFlagsManager):
1166
942
  self._start_page_url = None
1167
943
 
1168
944
  @property
1169
- def options(self) -> _blink_webdriver_option_type:
945
+ def options(self) -> BLINK_WEBDRIVER_OPTION_TYPEHINT:
1170
946
  """
1171
947
  Builds and returns a Blink-specific WebDriver options object.
1172
948
 
1173
949
  Returns:
1174
- _blink_webdriver_option_type: A configured Blink-based WebDriver options object.
950
+ blink_webdriver_option_type: A configured Blink-based WebDriver options object.
1175
951
  """
1176
952
 
1177
953
  return super().options
1178
954
 
1179
- def set_arguments(self, arguments: Union[BlinkArguments, dict[str, Any]]):
955
+ def set_arguments(self, arguments: BlinkArguments):
1180
956
  """
1181
957
  Clears existing and sets new command-line arguments from a dictionary.
1182
958
 
1183
959
  Args:
1184
- arguments (Union[BlinkArguments, dict[str, Any]]): A dictionary of arguments to set.
960
+ arguments (BlinkArguments): A dictionary of arguments to set.
1185
961
 
1186
962
  Raises:
1187
963
  ValueError: If an unknown argument key is provided.
@@ -1189,36 +965,27 @@ class BlinkFlagsManager(BrowserFlagsManager):
1189
965
 
1190
966
  super().set_arguments(arguments)
1191
967
 
1192
- def set_attributes(self, attributes: Union[BlinkAttributes, dict[str, Any]]):
968
+ def set_attributes(self, attributes: BlinkAttributes):
1193
969
  """
1194
970
  Clears existing and sets new browser attributes from a dictionary.
1195
971
 
1196
972
  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.
973
+ attributes (BlinkAttributes): A dictionary of attributes to set.
1201
974
  """
1202
975
 
1203
976
  super().set_attributes(attributes)
1204
977
 
1205
- def set_experimental_options(
1206
- self,
1207
- experimental_options: Union[BlinkExperimentalOptions, dict[str, Any]]
1208
- ):
978
+ def set_experimental_options(self, experimental_options: BlinkExperimentalOptions):
1209
979
  """
1210
980
  Clears existing and sets new experimental options from a dictionary.
1211
981
 
1212
982
  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.
983
+ experimental_options (BlinkExperimentalOptions): A dictionary of experimental options to set.
1217
984
  """
1218
985
 
1219
986
  super().set_experimental_options(experimental_options)
1220
987
 
1221
- def set_flags(self, flags: Union[BlinkFlags, dict[str, dict[str, Any]]]):
988
+ def set_flags(self, flags: BlinkFlags):
1222
989
  """
1223
990
  Clears all existing flags and sets new ones, including Blink features.
1224
991
 
@@ -1227,25 +994,25 @@ class BlinkFlagsManager(BrowserFlagsManager):
1227
994
  'attributes', and 'blink_features'.
1228
995
 
1229
996
  Args:
1230
- flags (Union[BlinkFlags, dict[str, dict[str, Any]]]): A dictionary where keys are flag types
997
+ flags (BlinkFlags): A dictionary where keys are flag types
1231
998
  and values are dictionaries of flags to set for that type.
1232
999
  """
1233
1000
 
1234
1001
  super().set_flags(flags)
1235
1002
 
1236
1003
  @property
1237
- def start_args(self) -> list[str]:
1004
+ def start_args(self) -> List[str]:
1238
1005
  """
1239
- Builds and returns a list of all command-line arguments for browser startup.
1006
+ Builds and returns a List of all command-line arguments for browser startup.
1240
1007
 
1241
1008
  Returns:
1242
- list[str]: A list of startup arguments.
1009
+ List[str]: A List of startup arguments.
1243
1010
  """
1244
1011
 
1245
1012
  args = []
1246
1013
 
1247
1014
  for type_name, type_functions in self._flags_types.items():
1248
- args += type_functions["build_start_args_function"]()
1015
+ args += type_functions.build_start_args_function()
1249
1016
 
1250
1017
  return args
1251
1018
 
@@ -1291,49 +1058,37 @@ class BlinkFlagsManager(BrowserFlagsManager):
1291
1058
 
1292
1059
  self._start_page_url = value
1293
1060
 
1294
- def update_arguments(self, arguments: Union[BlinkArguments, dict[str, Any]]):
1061
+ def update_arguments(self, arguments: BlinkArguments):
1295
1062
  """
1296
1063
  Updates command-line arguments from a dictionary without clearing existing ones.
1297
1064
 
1298
1065
  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.
1066
+ arguments (BlinkArguments): A dictionary of arguments to set or update.
1303
1067
  """
1304
1068
 
1305
1069
  super().update_arguments(arguments)
1306
1070
 
1307
- def update_attributes(self, attributes: Union[BlinkAttributes, dict[str, Any]]):
1071
+ def update_attributes(self, attributes: BlinkAttributes):
1308
1072
  """
1309
1073
  Updates browser attributes from a dictionary without clearing existing ones.
1310
1074
 
1311
1075
  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.
1076
+ attributes (BlinkAttributes): A dictionary of attributes to set or update.
1316
1077
  """
1317
1078
 
1318
1079
  super().update_attributes(attributes)
1319
1080
 
1320
- def update_experimental_options(
1321
- self,
1322
- experimental_options: Union[BlinkExperimentalOptions, dict[str, Any]]
1323
- ):
1081
+ def update_experimental_options(self, experimental_options: BlinkExperimentalOptions):
1324
1082
  """
1325
1083
  Updates experimental options from a dictionary without clearing existing ones.
1326
1084
 
1327
1085
  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.
1086
+ experimental_options (BlinkExperimentalOptions): A dictionary of experimental options to set or update.
1332
1087
  """
1333
1088
 
1334
1089
  super().update_experimental_options(experimental_options)
1335
1090
 
1336
- def update_flags(self, flags: Union[BlinkFlags, dict[str, dict[str, Any]]]):
1091
+ def update_flags(self, flags: BlinkFlags):
1337
1092
  """
1338
1093
  Updates all flags, including Blink features, without clearing existing ones.
1339
1094
 
@@ -1342,8 +1097,15 @@ class BlinkFlagsManager(BrowserFlagsManager):
1342
1097
  'attributes', and 'blink_features'.
1343
1098
 
1344
1099
  Args:
1345
- flags (Union[BlinkFlags, dict[str, dict[str, Any]]]): A dictionary where keys are flag types
1100
+ flags (BlinkFlags): A dictionary where keys are flag types
1346
1101
  and values are dictionaries of flags to update for that type.
1347
1102
  """
1348
1103
 
1349
1104
  super().update_flags(flags)
1105
+
1106
+
1107
+ BlinkArguments.model_rebuild()
1108
+ BlinkExperimentalOptions.model_rebuild()
1109
+ BlinkAttributes.model_rebuild()
1110
+ BlinkFeatures.model_rebuild()
1111
+ BlinkFlags.model_rebuild()