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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. osn_selenium/_base_models.py +41 -0
  2. osn_selenium/_cdp_import.py +253 -0
  3. osn_selenium/_functions.py +84 -0
  4. osn_selenium/_typehints.py +19 -0
  5. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  6. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  7. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  8. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  9. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  10. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  11. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  12. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  13. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  14. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  15. osn_selenium/abstract/executors/cdp/console.py +18 -0
  16. osn_selenium/abstract/executors/cdp/css.py +197 -0
  17. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  18. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  19. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  20. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  21. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  22. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  23. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  24. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  25. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  26. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  27. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  28. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  29. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  30. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  31. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  32. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  33. osn_selenium/abstract/executors/cdp/input.py +158 -0
  34. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  35. osn_selenium/abstract/executors/cdp/io.py +24 -0
  36. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  37. osn_selenium/abstract/executors/cdp/log.py +27 -0
  38. osn_selenium/abstract/executors/cdp/media.py +14 -0
  39. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  40. osn_selenium/abstract/executors/cdp/network.py +252 -0
  41. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  42. osn_selenium/abstract/executors/cdp/page.py +347 -0
  43. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  44. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  45. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  46. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  47. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  48. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  49. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  50. osn_selenium/abstract/executors/cdp/security.py +26 -0
  51. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  52. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  53. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  54. osn_selenium/abstract/executors/cdp/target.py +125 -0
  55. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  56. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  57. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  58. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  59. osn_selenium/abstract/executors/cdp.py +63 -0
  60. osn_selenium/abstract/executors/javascript.py +203 -0
  61. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  62. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  63. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  64. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  65. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  66. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  67. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  68. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  69. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  70. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  71. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  72. osn_selenium/abstract/instances/alert.py +67 -0
  73. osn_selenium/abstract/instances/browser.py +76 -0
  74. osn_selenium/abstract/instances/browsing_context.py +310 -0
  75. osn_selenium/abstract/instances/dialog.py +107 -0
  76. osn_selenium/abstract/instances/fedcm.py +133 -0
  77. osn_selenium/abstract/instances/mobile.py +79 -0
  78. osn_selenium/abstract/instances/network.py +100 -0
  79. osn_selenium/abstract/instances/permissions.py +52 -0
  80. osn_selenium/abstract/instances/script.py +109 -0
  81. osn_selenium/abstract/instances/shadow_root.py +81 -0
  82. osn_selenium/abstract/instances/storage.py +98 -0
  83. osn_selenium/abstract/instances/switch_to.py +104 -0
  84. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  85. osn_selenium/abstract/instances/web_element.py +395 -0
  86. osn_selenium/abstract/instances/web_extension.py +70 -0
  87. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  88. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  89. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  90. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  91. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  92. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  93. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  94. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  95. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  96. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  97. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  98. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  99. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  100. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  101. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  102. osn_selenium/abstract/webdriver/core/base.py +298 -0
  103. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  104. osn_selenium/abstract/webdriver/core/components.py +82 -0
  105. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  106. osn_selenium/abstract/webdriver/core/element.py +55 -0
  107. osn_selenium/abstract/webdriver/core/file.py +82 -0
  108. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  109. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  110. osn_selenium/abstract/webdriver/core/script.py +88 -0
  111. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  112. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  113. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  114. osn_selenium/abstract/webdriver/core/window.py +237 -0
  115. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  116. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  117. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  118. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  119. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  120. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  121. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  122. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  123. osn_selenium/base_mixin.py +122 -0
  124. osn_selenium/browsers_handler/__init__.py +47 -17
  125. osn_selenium/browsers_handler/_linux.py +226 -0
  126. osn_selenium/browsers_handler/_windows.py +21 -14
  127. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  128. osn_selenium/dev_tools/_decorators.py +149 -0
  129. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  130. osn_selenium/dev_tools/_functions.py +174 -0
  131. osn_selenium/dev_tools/_system_utils.py +35 -0
  132. osn_selenium/dev_tools/_typehints.py +35 -0
  133. osn_selenium/dev_tools/_validators.py +227 -0
  134. osn_selenium/dev_tools/_wrappers.py +92 -0
  135. osn_selenium/dev_tools/domains/__init__.py +7 -40
  136. osn_selenium/dev_tools/domains/abstract.py +98 -254
  137. osn_selenium/dev_tools/domains/fetch.py +229 -906
  138. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  139. osn_selenium/dev_tools/filters.py +40 -0
  140. osn_selenium/dev_tools/logger/main.py +214 -0
  141. osn_selenium/dev_tools/logger/models.py +232 -0
  142. osn_selenium/dev_tools/logger/target.py +278 -0
  143. osn_selenium/dev_tools/manager/__init__.py +16 -0
  144. osn_selenium/dev_tools/manager/base.py +124 -0
  145. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  146. osn_selenium/dev_tools/manager/logging.py +153 -0
  147. osn_selenium/dev_tools/manager/settings.py +89 -0
  148. osn_selenium/dev_tools/manager/targets.py +175 -0
  149. osn_selenium/dev_tools/models.py +49 -0
  150. osn_selenium/dev_tools/settings.py +139 -0
  151. osn_selenium/dev_tools/target/__init__.py +16 -0
  152. osn_selenium/dev_tools/target/base.py +427 -0
  153. osn_selenium/dev_tools/target/detach.py +54 -0
  154. osn_selenium/dev_tools/target/discovery.py +112 -0
  155. osn_selenium/dev_tools/target/events.py +120 -0
  156. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  157. osn_selenium/dev_tools/target/lifecycle.py +184 -0
  158. osn_selenium/dev_tools/target/logging.py +163 -0
  159. osn_selenium/exceptions/__init__.py +1 -0
  160. osn_selenium/exceptions/base.py +9 -0
  161. osn_selenium/exceptions/configuration.py +84 -0
  162. osn_selenium/exceptions/dependencies.py +60 -0
  163. osn_selenium/exceptions/devtools.py +114 -0
  164. osn_selenium/exceptions/flags.py +45 -0
  165. osn_selenium/exceptions/instance.py +92 -0
  166. osn_selenium/exceptions/javascript.py +31 -0
  167. osn_selenium/exceptions/logic.py +31 -0
  168. osn_selenium/exceptions/path.py +77 -0
  169. osn_selenium/exceptions/platform.py +33 -0
  170. osn_selenium/exceptions/protocol.py +86 -0
  171. osn_selenium/exceptions/webdriver.py +44 -0
  172. osn_selenium/exceptions/window.py +63 -0
  173. osn_selenium/executors/__init__.py +1 -0
  174. osn_selenium/executors/sync/__init__.py +1 -0
  175. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  176. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  177. osn_selenium/executors/sync/cdp/animation.py +50 -0
  178. osn_selenium/executors/sync/cdp/audits.py +48 -0
  179. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  180. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  181. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  182. osn_selenium/executors/sync/cdp/browser.py +131 -0
  183. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  184. osn_selenium/executors/sync/cdp/cast.py +38 -0
  185. osn_selenium/executors/sync/cdp/console.py +24 -0
  186. osn_selenium/executors/sync/cdp/css.py +187 -0
  187. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  188. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  189. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  190. osn_selenium/executors/sync/cdp/dom.py +310 -0
  191. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  192. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  193. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  194. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  195. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  196. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  197. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  198. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  199. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  200. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  201. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  202. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  203. osn_selenium/executors/sync/cdp/input.py +233 -0
  204. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  205. osn_selenium/executors/sync/cdp/io.py +33 -0
  206. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  207. osn_selenium/executors/sync/cdp/log.py +35 -0
  208. osn_selenium/executors/sync/cdp/media.py +21 -0
  209. osn_selenium/executors/sync/cdp/memory.py +62 -0
  210. osn_selenium/executors/sync/cdp/network.py +287 -0
  211. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  212. osn_selenium/executors/sync/cdp/page.py +365 -0
  213. osn_selenium/executors/sync/cdp/performance.py +33 -0
  214. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  215. osn_selenium/executors/sync/cdp/preload.py +21 -0
  216. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  217. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  218. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  219. osn_selenium/executors/sync/cdp/schema.py +23 -0
  220. osn_selenium/executors/sync/cdp/security.py +30 -0
  221. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  222. osn_selenium/executors/sync/cdp/storage.py +151 -0
  223. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  224. osn_selenium/executors/sync/cdp/target.py +147 -0
  225. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  226. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  227. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  228. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  229. osn_selenium/executors/sync/cdp.py +100 -0
  230. osn_selenium/executors/sync/javascript.py +79 -0
  231. osn_selenium/executors/trio_threads/__init__.py +1 -0
  232. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  233. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  234. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  235. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  236. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  237. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  238. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  239. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  240. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  241. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  242. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  243. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  244. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  245. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  246. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  247. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  248. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  249. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  250. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  251. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  252. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  253. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  254. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  255. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  256. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  257. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  258. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  259. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  260. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  261. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  262. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  263. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  264. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  265. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  266. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  267. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  268. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  269. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  270. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  271. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  272. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  273. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  274. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  275. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  276. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  277. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  278. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  279. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  280. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  281. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  282. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  283. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  284. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  285. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  286. osn_selenium/executors/trio_threads/cdp.py +104 -0
  287. osn_selenium/executors/trio_threads/javascript.py +90 -0
  288. osn_selenium/executors/unified/__init__.py +1 -0
  289. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  290. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  291. osn_selenium/executors/unified/cdp/animation.py +50 -0
  292. osn_selenium/executors/unified/cdp/audits.py +45 -0
  293. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  294. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  295. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  296. osn_selenium/executors/unified/cdp/browser.py +143 -0
  297. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  298. osn_selenium/executors/unified/cdp/cast.py +32 -0
  299. osn_selenium/executors/unified/cdp/console.py +18 -0
  300. osn_selenium/executors/unified/cdp/css.py +237 -0
  301. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  302. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  303. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  304. osn_selenium/executors/unified/cdp/dom.py +380 -0
  305. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  306. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  307. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  308. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  309. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  310. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  311. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  312. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  313. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  314. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  315. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  316. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  317. osn_selenium/executors/unified/cdp/input.py +254 -0
  318. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  319. osn_selenium/executors/unified/cdp/io.py +29 -0
  320. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  321. osn_selenium/executors/unified/cdp/log.py +29 -0
  322. osn_selenium/executors/unified/cdp/media.py +15 -0
  323. osn_selenium/executors/unified/cdp/memory.py +59 -0
  324. osn_selenium/executors/unified/cdp/network.py +323 -0
  325. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  326. osn_selenium/executors/unified/cdp/page.py +410 -0
  327. osn_selenium/executors/unified/cdp/performance.py +27 -0
  328. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  329. osn_selenium/executors/unified/cdp/preload.py +15 -0
  330. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  331. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  332. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  333. osn_selenium/executors/unified/cdp/schema.py +17 -0
  334. osn_selenium/executors/unified/cdp/security.py +27 -0
  335. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  336. osn_selenium/executors/unified/cdp/storage.py +178 -0
  337. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  338. osn_selenium/executors/unified/cdp/target.py +165 -0
  339. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  340. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  341. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  342. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  343. osn_selenium/executors/unified/javascript.py +104 -0
  344. osn_selenium/flags/__init__.py +1 -0
  345. osn_selenium/flags/_functions.py +45 -0
  346. osn_selenium/flags/_typehints.py +34 -0
  347. osn_selenium/flags/_validators.py +101 -0
  348. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +159 -245
  349. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +130 -374
  350. osn_selenium/flags/chrome.py +259 -0
  351. osn_selenium/flags/edge.py +259 -0
  352. osn_selenium/flags/models/__init__.py +1 -0
  353. osn_selenium/flags/models/base.py +130 -0
  354. osn_selenium/flags/models/blink.py +263 -0
  355. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  356. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  357. osn_selenium/flags/models/values.py +44 -0
  358. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  359. osn_selenium/flags/yandex.py +259 -0
  360. osn_selenium/instances/__init__.py +1 -0
  361. osn_selenium/instances/_functions.py +242 -0
  362. osn_selenium/instances/_typehints.py +148 -0
  363. osn_selenium/instances/_utils.py +143 -0
  364. osn_selenium/instances/convert.py +287 -0
  365. osn_selenium/instances/protocols.py +105 -0
  366. osn_selenium/instances/sync/__init__.py +1 -0
  367. osn_selenium/instances/sync/action_chains/__init__.py +32 -0
  368. osn_selenium/instances/sync/action_chains/base.py +74 -0
  369. osn_selenium/instances/sync/action_chains/click.py +61 -0
  370. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  371. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  372. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  373. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  374. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  375. osn_selenium/instances/sync/action_chains/move.py +46 -0
  376. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  377. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  378. osn_selenium/instances/sync/alert.py +69 -0
  379. osn_selenium/instances/sync/browser.py +72 -0
  380. osn_selenium/instances/sync/browsing_context.py +193 -0
  381. osn_selenium/instances/sync/dialog.py +81 -0
  382. osn_selenium/instances/sync/fedcm.py +92 -0
  383. osn_selenium/instances/sync/mobile.py +75 -0
  384. osn_selenium/instances/sync/network.py +90 -0
  385. osn_selenium/instances/sync/permissions.py +80 -0
  386. osn_selenium/instances/sync/script.py +77 -0
  387. osn_selenium/instances/sync/shadow_root.py +113 -0
  388. osn_selenium/instances/sync/storage.py +91 -0
  389. osn_selenium/instances/sync/switch_to.py +92 -0
  390. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  391. osn_selenium/instances/sync/web_element.py +179 -0
  392. osn_selenium/instances/sync/web_extension.py +77 -0
  393. osn_selenium/instances/trio_threads/__init__.py +1 -0
  394. osn_selenium/instances/trio_threads/action_chains/__init__.py +32 -0
  395. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  396. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  397. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  399. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  400. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  401. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  402. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  403. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  404. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  405. osn_selenium/instances/trio_threads/alert.py +87 -0
  406. osn_selenium/instances/trio_threads/browser.py +90 -0
  407. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  408. osn_selenium/instances/trio_threads/dialog.py +99 -0
  409. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  410. osn_selenium/instances/trio_threads/mobile.py +93 -0
  411. osn_selenium/instances/trio_threads/network.py +108 -0
  412. osn_selenium/instances/trio_threads/permissions.py +102 -0
  413. osn_selenium/instances/trio_threads/script.py +95 -0
  414. osn_selenium/instances/trio_threads/shadow_root.py +154 -0
  415. osn_selenium/instances/trio_threads/storage.py +109 -0
  416. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  417. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  418. osn_selenium/instances/trio_threads/web_element.py +217 -0
  419. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  420. osn_selenium/instances/unified/__init__.py +1 -0
  421. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  422. osn_selenium/instances/unified/action_chains/base.py +31 -0
  423. osn_selenium/instances/unified/action_chains/click.py +27 -0
  424. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  425. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  426. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  427. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  428. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  429. osn_selenium/instances/unified/action_chains/move.py +24 -0
  430. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  431. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  432. osn_selenium/instances/unified/alert.py +29 -0
  433. osn_selenium/instances/unified/browser.py +33 -0
  434. osn_selenium/instances/unified/browsing_context.py +151 -0
  435. osn_selenium/instances/unified/dialog.py +42 -0
  436. osn_selenium/instances/unified/fedcm.py +48 -0
  437. osn_selenium/instances/unified/mobile.py +36 -0
  438. osn_selenium/instances/unified/network.py +50 -0
  439. osn_selenium/instances/unified/permissions.py +43 -0
  440. osn_selenium/instances/unified/script.py +38 -0
  441. osn_selenium/instances/unified/shadow_root.py +46 -0
  442. osn_selenium/instances/unified/storage.py +48 -0
  443. osn_selenium/instances/unified/switch_to.py +49 -0
  444. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  445. osn_selenium/instances/unified/web_element.py +145 -0
  446. osn_selenium/instances/unified/web_extension.py +38 -0
  447. osn_selenium/javascript/__init__.py +1 -0
  448. osn_selenium/javascript/_functions.py +63 -0
  449. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  450. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  451. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  452. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  453. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  454. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  455. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  456. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  457. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  458. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  459. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  460. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  461. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  462. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  463. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  464. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  465. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  466. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  467. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  468. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  469. osn_selenium/javascript/functions.py +44 -0
  470. osn_selenium/javascript/models.py +35 -0
  471. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  472. osn_selenium/models.py +94 -0
  473. osn_selenium/trio_threads_mixin.py +159 -0
  474. osn_selenium/webdrivers/_args_helpers.py +181 -0
  475. osn_selenium/webdrivers/_bridges.py +57 -0
  476. osn_selenium/webdrivers/_decorators.py +83 -0
  477. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  478. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  479. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  480. osn_selenium/webdrivers/_typehints.py +10 -0
  481. osn_selenium/webdrivers/protocols.py +50 -0
  482. osn_selenium/webdrivers/sync/__init__.py +1 -0
  483. osn_selenium/webdrivers/sync/blink/__init__.py +124 -0
  484. osn_selenium/webdrivers/sync/blink/base.py +140 -0
  485. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  486. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  487. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  488. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  489. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  490. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  491. osn_selenium/webdrivers/sync/chrome/__init__.py +102 -0
  492. osn_selenium/webdrivers/sync/chrome/base.py +118 -0
  493. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  494. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  495. osn_selenium/webdrivers/sync/core/__init__.py +100 -0
  496. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  497. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  498. osn_selenium/webdrivers/sync/core/base.py +175 -0
  499. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  500. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  501. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  502. osn_selenium/webdrivers/sync/core/element.py +42 -0
  503. osn_selenium/webdrivers/sync/core/file.py +40 -0
  504. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  505. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  506. osn_selenium/webdrivers/sync/core/script.py +53 -0
  507. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  508. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  509. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  510. osn_selenium/webdrivers/sync/core/window.py +99 -0
  511. osn_selenium/webdrivers/sync/edge/__init__.py +102 -0
  512. osn_selenium/webdrivers/sync/edge/base.py +114 -0
  513. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  514. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  515. osn_selenium/webdrivers/sync/yandex/__init__.py +102 -0
  516. osn_selenium/webdrivers/sync/yandex/base.py +111 -0
  517. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  518. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  519. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  520. osn_selenium/webdrivers/trio_threads/blink/__init__.py +134 -0
  521. osn_selenium/webdrivers/trio_threads/blink/base.py +143 -0
  522. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  523. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  524. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  525. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  526. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  527. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  528. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +114 -0
  529. osn_selenium/webdrivers/trio_threads/chrome/base.py +119 -0
  530. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  531. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  532. osn_selenium/webdrivers/trio_threads/core/__init__.py +115 -0
  533. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  534. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  535. osn_selenium/webdrivers/trio_threads/core/base.py +199 -0
  536. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  537. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  538. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  539. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  540. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  541. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  542. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  543. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  544. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  545. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  546. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  547. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  548. osn_selenium/webdrivers/trio_threads/edge/__init__.py +114 -0
  549. osn_selenium/webdrivers/trio_threads/edge/base.py +115 -0
  550. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  551. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  552. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +114 -0
  553. osn_selenium/webdrivers/trio_threads/yandex/base.py +112 -0
  554. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  555. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  556. osn_selenium/webdrivers/unified/__init__.py +1 -0
  557. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  558. osn_selenium/webdrivers/unified/blink/base.py +135 -0
  559. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  560. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  561. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  562. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  563. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  564. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  565. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  566. osn_selenium/webdrivers/unified/chrome/base.py +58 -0
  567. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  568. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  569. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  570. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  571. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  572. osn_selenium/webdrivers/unified/core/base.py +139 -0
  573. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  574. osn_selenium/webdrivers/unified/core/components.py +32 -0
  575. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  576. osn_selenium/webdrivers/unified/core/element.py +24 -0
  577. osn_selenium/webdrivers/unified/core/file.py +35 -0
  578. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  579. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  580. osn_selenium/webdrivers/unified/core/script.py +32 -0
  581. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  582. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  583. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  584. osn_selenium/webdrivers/unified/core/window.py +135 -0
  585. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  586. osn_selenium/webdrivers/unified/edge/base.py +56 -0
  587. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  588. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  589. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  590. osn_selenium/webdrivers/unified/yandex/base.py +58 -0
  591. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  592. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  593. osn_selenium-1.1.0.dist-info/METADATA +252 -0
  594. osn_selenium-1.1.0.dist-info/RECORD +615 -0
  595. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/WHEEL +1 -1
  596. osn_selenium/captcha_workers/__init__.py +0 -26
  597. osn_selenium/dev_tools/_types.py +0 -22
  598. osn_selenium/dev_tools/errors.py +0 -89
  599. osn_selenium/dev_tools/logger.py +0 -558
  600. osn_selenium/dev_tools/manager.py +0 -1551
  601. osn_selenium/dev_tools/utils.py +0 -509
  602. osn_selenium/errors.py +0 -16
  603. osn_selenium/types.py +0 -118
  604. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  605. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  606. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  607. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  608. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  609. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  610. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  611. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  612. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  613. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  614. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  615. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  616. osn_selenium/webdrivers/_functions.py +0 -504
  617. osn_selenium/webdrivers/types.py +0 -390
  618. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  619. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  620. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  621. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  622. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  623. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  624. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  628. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  629. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  630. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  631. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  632. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  633. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  634. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  635. {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,135 @@
1
+ import pathlib
2
+ from typing import Mapping, Optional, Type
3
+ from osn_selenium.models import WindowRect
4
+ from osn_selenium.flags.blink import BlinkFlagsManager
5
+ from osn_selenium.flags.models.values import ArgumentValue
6
+ from osn_selenium.browsers_handler import get_path_to_browser
7
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
8
+ from osn_selenium._typehints import (
9
+ ARCHITECTURES_TYPEHINT,
10
+ PATH_TYPEHINT
11
+ )
12
+ from selenium.webdriver.chromium.webdriver import (
13
+ ChromiumDriver as legacyWebDriver
14
+ )
15
+ from osn_selenium.webdrivers._executable_tables.functions import (
16
+ find_browser_previous_session
17
+ )
18
+ from osn_selenium.flags.models.blink import (
19
+ BlinkArguments,
20
+ BlinkExperimentalOptions,
21
+ BlinkFlags
22
+ )
23
+ from osn_system_utils.api.network import (
24
+ get_localhost_free_port_of,
25
+ get_random_localhost_free_port
26
+ )
27
+
28
+
29
+ __all__ = ["UnifiedBlinkBaseMixin"]
30
+
31
+
32
+ class UnifiedBlinkBaseMixin(UnifiedCoreBaseMixin):
33
+ def __init__(
34
+ self,
35
+ browser_exe: Optional[PATH_TYPEHINT],
36
+ browser_name_in_system: str,
37
+ webdriver_path: str,
38
+ architecture: ARCHITECTURES_TYPEHINT,
39
+ use_browser_exe: bool = True,
40
+ flags_manager_type: Type[BlinkFlagsManager] = BlinkFlagsManager,
41
+ flags: Optional[BlinkFlags] = None,
42
+ start_page_url: str = "",
43
+ implicitly_wait: int = 5,
44
+ page_load_timeout: int = 5,
45
+ script_timeout: int = 5,
46
+ window_rect: Optional[WindowRect] = None,
47
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
48
+ ignore_cdp_version_package_missing: bool = True,
49
+ ):
50
+ UnifiedCoreBaseMixin.__init__(
51
+ self,
52
+ webdriver_path=webdriver_path,
53
+ architecture=architecture,
54
+ flags_manager_type=flags_manager_type,
55
+ flags=flags,
56
+ implicitly_wait=implicitly_wait,
57
+ page_load_timeout=page_load_timeout,
58
+ script_timeout=script_timeout,
59
+ window_rect=window_rect,
60
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
61
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
62
+ )
63
+
64
+ if browser_exe is not None:
65
+ self._webdriver_flags_manager.browser_exe = browser_exe
66
+
67
+ if start_page_url is not None:
68
+ self._webdriver_flags_manager.start_page_url = start_page_url
69
+
70
+ if window_rect is not None:
71
+ self._window_rect = window_rect
72
+
73
+ if use_browser_exe is not None and browser_name_in_system is not None:
74
+ self._detect_browser_exe_impl(
75
+ browser_name_in_system=browser_name_in_system,
76
+ use_browser_exe=use_browser_exe
77
+ )
78
+
79
+ def _detect_browser_exe_impl(self, browser_name_in_system: str, use_browser_exe: bool) -> None:
80
+ if self._browser_exe_impl is None and use_browser_exe:
81
+ self._webdriver_flags_manager.browser_exe = get_path_to_browser(browser_name_in_system)
82
+ elif self._browser_exe_impl is not None and not use_browser_exe:
83
+ self._webdriver_flags_manager.browser_exe = None
84
+
85
+ @property
86
+ def _debugging_ip_impl(self) -> Optional[str]:
87
+ return self._webdriver_flags_manager.arguments.get("remote_debugging_address", ArgumentValue(command_line="", value=None)).value
88
+
89
+ @property
90
+ def _driver_impl(self) -> Optional[legacyWebDriver]:
91
+ return super()._driver_impl
92
+
93
+ @property
94
+ def _debugging_port_impl(self) -> Optional[int]:
95
+ return self._webdriver_flags_manager.arguments.get("remote_debugging_port", ArgumentValue(command_line="", value=None)).value
96
+
97
+ @property
98
+ def _browser_exe_impl(self) -> Optional[pathlib.Path]:
99
+ return self._webdriver_flags_manager.browser_exe
100
+
101
+ def _find_debugging_port_impl(self, debugging_port: Optional[int]) -> int:
102
+ if self._browser_exe_impl is not None:
103
+ user_data_dir_command = self._webdriver_flags_manager.flags_definitions.get("user_data_dir", None)
104
+ user_data_dir_value = self._webdriver_flags_manager.arguments.get("user_data_dir", None)
105
+
106
+ user_data_dir = None if user_data_dir_command is None else user_data_dir_value.value if user_data_dir_value is not None else None
107
+
108
+ if user_data_dir_command is not None:
109
+ previous_session = find_browser_previous_session(self._browser_exe_impl, user_data_dir_command.command, user_data_dir)
110
+
111
+ if previous_session is not None:
112
+ return previous_session
113
+
114
+ if debugging_port is not None:
115
+ return get_localhost_free_port_of(ports_to_check=debugging_port, on_candidates="min")
116
+
117
+ if self._debugging_port_impl is None or self._debugging_port_impl == 0:
118
+ return get_random_localhost_free_port()
119
+
120
+ return self._debugging_port_impl
121
+
122
+ def _set_debugging_port_impl(self, debugging_port: Optional[int], debugging_address: Optional[str]) -> None:
123
+ if self._browser_exe_impl is not None:
124
+ _debugging_address = "127.0.0.1" if debugging_address is None else debugging_address
125
+ _debugging_port = 0 if debugging_port is None else debugging_port
126
+
127
+ self._webdriver_flags_manager.update_flags(
128
+ BlinkFlags(
129
+ argument=BlinkArguments(
130
+ remote_debugging_port=debugging_port,
131
+ remote_debugging_address=debugging_address,
132
+ ),
133
+ experimental_option=BlinkExperimentalOptions(debugger_address=f"{_debugging_address}:{_debugging_port}"),
134
+ )
135
+ )
@@ -0,0 +1,30 @@
1
+ from typing import Any, Dict, List
2
+ from osn_selenium.webdrivers._decorators import requires_driver
3
+ from osn_selenium.webdrivers.unified.blink.base import (
4
+ UnifiedBlinkBaseMixin
5
+ )
6
+
7
+
8
+ __all__ = ["UnifiedBlinkCastingMixin"]
9
+
10
+
11
+ class UnifiedBlinkCastingMixin(UnifiedBlinkBaseMixin):
12
+ @requires_driver
13
+ def _get_sinks_impl(self) -> List[Dict[str, Any]]:
14
+ return self._driver_impl.get_sinks()
15
+
16
+ @requires_driver
17
+ def _set_sink_to_use_impl(self, sink_name: str) -> Dict[str, Any]:
18
+ return self._driver_impl.set_sink_to_use(sink_name=sink_name)
19
+
20
+ @requires_driver
21
+ def _start_desktop_mirroring_impl(self, sink_name: str) -> Dict[str, Any]:
22
+ return self._driver_impl.start_desktop_mirroring(sink_name=sink_name)
23
+
24
+ @requires_driver
25
+ def _start_tab_mirroring_impl(self, sink_name: str) -> Dict[str, Any]:
26
+ return self._driver_impl.start_tab_mirroring(sink_name=sink_name)
27
+
28
+ @requires_driver
29
+ def _stop_casting_impl(self, sink_name: str) -> Dict[str, Any]:
30
+ return self._driver_impl.stop_casting(sink_name=sink_name)
@@ -0,0 +1,22 @@
1
+ from typing import Any, Dict
2
+ from osn_selenium.webdrivers._decorators import requires_driver
3
+ from osn_selenium.webdrivers.unified.blink.base import (
4
+ UnifiedBlinkBaseMixin
5
+ )
6
+
7
+
8
+ __all__ = ["UnifiedBlinkFeaturesMixin"]
9
+
10
+
11
+ class UnifiedBlinkFeaturesMixin(UnifiedBlinkBaseMixin):
12
+ @requires_driver
13
+ def _get_issue_message_impl(self) -> Any:
14
+ return self._driver_impl.get_issue_message()
15
+
16
+ @requires_driver
17
+ def _launch_app_impl(self, id: str) -> Dict[str, Any]:
18
+ return self._driver_impl.launch_app(id=id)
19
+
20
+ @requires_driver
21
+ def _set_permissions_impl(self, name: str, value: str) -> None:
22
+ self._driver_impl.set_permissions(name=name, value=value)
@@ -0,0 +1,114 @@
1
+ import re
2
+ import time
3
+ from typing import Optional
4
+ from subprocess import Popen
5
+ from osn_selenium.models import WindowRect
6
+ from osn_selenium._typehints import PATH_TYPEHINT
7
+ from osn_selenium.flags.models.blink import BlinkFlags
8
+ from osn_system_utils.api.process import kill_process_by_pid
9
+ from osn_selenium.webdrivers.unified.blink.settings import (
10
+ UnifiedBlinkSettingsMixin
11
+ )
12
+ from osn_selenium.webdrivers.unified.core.lifecycle import (
13
+ UnifiedCoreLifecycleMixin
14
+ )
15
+ from osn_system_utils.api.network import (
16
+ get_localhost_pids_with_addresses,
17
+ get_localhost_pids_with_ports
18
+ )
19
+
20
+
21
+ __all__ = ["UnifiedBlinkLifecycleMixin"]
22
+
23
+
24
+ class UnifiedBlinkLifecycleMixin(UnifiedBlinkSettingsMixin, UnifiedCoreLifecycleMixin):
25
+ def _create_driver_impl(self) -> None:
26
+ raise NotImplementedError("This function must be implemented in child classes.")
27
+
28
+ def _check_browser_exe_active_impl(self) -> bool:
29
+ debugging_port = self._debugging_port_impl
30
+ debugging_ip = self._debugging_ip_impl
31
+
32
+ for pid, addresses in get_localhost_pids_with_addresses().items():
33
+ for address_str in addresses:
34
+ if re.search(rf":{debugging_port}\Z", address_str) is not None:
35
+ found_ip = re.search(rf"\A(.+):{debugging_port}\Z", address_str).group(1)
36
+
37
+ if found_ip != debugging_ip:
38
+ self._set_debugging_port_impl(debugging_port=debugging_port, debugging_address=found_ip)
39
+
40
+ return True
41
+ return False
42
+
43
+ def _start_webdriver_impl(
44
+ self,
45
+ flags: Optional[BlinkFlags] = None,
46
+ browser_exe: Optional[PATH_TYPEHINT] = None,
47
+ browser_name_in_system: Optional[str] = None,
48
+ use_browser_exe: Optional[bool] = None,
49
+ start_page_url: Optional[str] = None,
50
+ window_rect: Optional[WindowRect] = None,
51
+ ) -> None:
52
+ if self._driver_impl is None:
53
+ self._update_settings_impl(
54
+ flags=flags,
55
+ browser_exe=browser_exe,
56
+ browser_name_in_system=browser_name_in_system,
57
+ use_browser_exe=use_browser_exe,
58
+ start_page_url=start_page_url,
59
+ window_rect=window_rect,
60
+ )
61
+
62
+ if self._browser_exe_impl is not None:
63
+ is_active = self._check_browser_exe_active_impl()
64
+
65
+ if not is_active:
66
+ Popen(args=self._webdriver_flags_manager.start_command, shell=True)
67
+
68
+ while not is_active:
69
+ is_active = self._check_browser_exe_active_impl()
70
+ if not is_active:
71
+ time.sleep(0.1)
72
+
73
+ self._create_driver_impl()
74
+ self._is_active = True
75
+
76
+ def _close_webdriver_impl(self) -> None:
77
+ if self._browser_exe_impl is not None:
78
+ debugging_port = self._debugging_port_impl
79
+ pids_with_ports = get_localhost_pids_with_ports()
80
+
81
+ for pid, ports in pids_with_ports.items():
82
+ if debugging_port in ports and 1 <= len(ports) <= 2:
83
+ kill_process_by_pid(pid=pid, force=True)
84
+
85
+ is_active = self._check_browser_exe_active_impl()
86
+ while is_active:
87
+ is_active = self._check_browser_exe_active_impl()
88
+ if is_active:
89
+ time.sleep(0.05)
90
+
91
+ if self._driver_impl is not None:
92
+ self._quit_impl()
93
+ self._driver = None
94
+
95
+ self._is_active = False
96
+
97
+ def _restart_webdriver_impl(
98
+ self,
99
+ flags: Optional[BlinkFlags] = None,
100
+ browser_exe: Optional[PATH_TYPEHINT] = None,
101
+ browser_name_in_system: Optional[str] = None,
102
+ use_browser_exe: Optional[bool] = None,
103
+ start_page_url: Optional[str] = None,
104
+ window_rect: Optional[WindowRect] = None,
105
+ ) -> None:
106
+ self._close_webdriver_impl()
107
+ self._start_webdriver_impl(
108
+ flags=flags,
109
+ browser_exe=browser_exe,
110
+ browser_name_in_system=browser_name_in_system,
111
+ use_browser_exe=use_browser_exe,
112
+ start_page_url=start_page_url,
113
+ window_rect=window_rect
114
+ )
@@ -0,0 +1,18 @@
1
+ from typing import Any
2
+ from osn_selenium.webdrivers._decorators import requires_driver
3
+ from osn_selenium.webdrivers.unified.blink.base import (
4
+ UnifiedBlinkBaseMixin
5
+ )
6
+
7
+
8
+ __all__ = ["UnifiedBlinkLoggingMixin"]
9
+
10
+
11
+ class UnifiedBlinkLoggingMixin(UnifiedBlinkBaseMixin):
12
+ @requires_driver
13
+ def _get_log_impl(self, log_type: str) -> Any:
14
+ return self._driver_impl.get_log(log_type=log_type)
15
+
16
+ @requires_driver
17
+ def _log_types_impl(self) -> Any:
18
+ return self._driver_impl.log_types
@@ -0,0 +1,22 @@
1
+ from typing import Any, Dict
2
+ from osn_selenium.webdrivers._decorators import requires_driver
3
+ from osn_selenium.webdrivers.unified.blink.base import (
4
+ UnifiedBlinkBaseMixin
5
+ )
6
+
7
+
8
+ __all__ = ["UnifiedBlinkNetworkMixin"]
9
+
10
+
11
+ class UnifiedBlinkNetworkMixin(UnifiedBlinkBaseMixin):
12
+ @requires_driver
13
+ def _delete_network_conditions_impl(self) -> None:
14
+ self._driver_impl.delete_network_conditions()
15
+
16
+ @requires_driver
17
+ def _get_network_conditions_impl(self) -> Dict[str, Any]:
18
+ return self._driver_impl.get_network_conditions()
19
+
20
+ @requires_driver
21
+ def _set_network_conditions_impl(self, **network_conditions: Any) -> None:
22
+ self._driver_impl.set_network_conditions(**network_conditions)
@@ -0,0 +1,86 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium._typehints import PATH_TYPEHINT
4
+ from osn_selenium.flags.models.blink import BlinkFlags
5
+ from osn_selenium.exceptions.webdriver import (
6
+ WebDriverAlreadyRunningError
7
+ )
8
+ from osn_selenium.webdrivers.unified.blink.base import (
9
+ UnifiedBlinkBaseMixin
10
+ )
11
+
12
+
13
+ __all__ = ["UnifiedBlinkSettingsMixin"]
14
+
15
+
16
+ class UnifiedBlinkSettingsMixin(UnifiedBlinkBaseMixin):
17
+ def _reset_settings_impl(
18
+ self,
19
+ flags: Optional[BlinkFlags] = None,
20
+ browser_exe: Optional[PATH_TYPEHINT] = None,
21
+ browser_name_in_system: Optional[str] = None,
22
+ use_browser_exe: Optional[bool] = None,
23
+ start_page_url: str = "",
24
+ window_rect: Optional[WindowRect] = None,
25
+ ) -> None:
26
+ if not self._is_active:
27
+ if flags is not None:
28
+ self._webdriver_flags_manager.set_flags(flags)
29
+ else:
30
+ self._webdriver_flags_manager.clear_flags()
31
+
32
+ self._webdriver_flags_manager.browser_exe = browser_exe
33
+ self._webdriver_flags_manager.start_page_url = start_page_url
34
+ self._window_rect = window_rect
35
+
36
+ if use_browser_exe is not None and browser_name_in_system is not None:
37
+ self._detect_browser_exe_impl(
38
+ browser_name_in_system=browser_name_in_system,
39
+ use_browser_exe=use_browser_exe
40
+ )
41
+
42
+ if self._browser_exe_impl is not None and (
43
+ self._debugging_port_impl is not None
44
+ or self._debugging_ip_impl is not None
45
+ ):
46
+ self._set_debugging_port_impl(
47
+ self._find_debugging_port_impl(self._debugging_port_impl),
48
+ self._debugging_ip_impl
49
+ )
50
+ else:
51
+ raise WebDriverAlreadyRunningError()
52
+
53
+ def _update_settings_impl(
54
+ self,
55
+ flags: Optional[BlinkFlags] = None,
56
+ browser_exe: Optional[PATH_TYPEHINT] = None,
57
+ browser_name_in_system: Optional[str] = None,
58
+ use_browser_exe: Optional[bool] = None,
59
+ start_page_url: Optional[str] = None,
60
+ window_rect: Optional[WindowRect] = None,
61
+ ) -> None:
62
+ if not self._is_active:
63
+ if flags is not None:
64
+ self._webdriver_flags_manager.update_flags(flags)
65
+
66
+ if browser_exe is not None:
67
+ self._webdriver_flags_manager.browser_exe = browser_exe
68
+
69
+ if start_page_url is not None:
70
+ self._webdriver_flags_manager.start_page_url = start_page_url
71
+
72
+ if window_rect is not None:
73
+ self._window_rect = window_rect
74
+
75
+ if use_browser_exe is not None and browser_name_in_system is not None:
76
+ self._detect_browser_exe_impl(
77
+ browser_name_in_system=browser_name_in_system,
78
+ use_browser_exe=use_browser_exe
79
+ )
80
+
81
+ self._set_debugging_port_impl(
82
+ self._find_debugging_port_impl(self._debugging_port_impl),
83
+ self._debugging_ip_impl
84
+ )
85
+ else:
86
+ raise WebDriverAlreadyRunningError()
@@ -0,0 +1,58 @@
1
+ from typing import Mapping, Optional, Type
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium.flags.chrome import ChromeFlagsManager
4
+ from osn_selenium.flags.models.chrome import ChromeFlags
5
+ from selenium.webdriver import (
6
+ Chrome as legacyChrome
7
+ )
8
+ from osn_selenium._typehints import (
9
+ ARCHITECTURES_TYPEHINT,
10
+ PATH_TYPEHINT
11
+ )
12
+ from osn_selenium.webdrivers.unified.blink.base import (
13
+ UnifiedBlinkBaseMixin
14
+ )
15
+
16
+
17
+ __all__ = ["UnifiedChromeBaseMixin"]
18
+
19
+
20
+ class UnifiedChromeBaseMixin(UnifiedBlinkBaseMixin):
21
+ def __init__(
22
+ self,
23
+ webdriver_path: str,
24
+ architecture: ARCHITECTURES_TYPEHINT,
25
+ flags_manager_type: Type[ChromeFlagsManager] = ChromeFlagsManager,
26
+ use_browser_exe: bool = True,
27
+ browser_name_in_system: str = "Google Chrome",
28
+ browser_exe: Optional[PATH_TYPEHINT] = None,
29
+ flags: Optional[ChromeFlags] = None,
30
+ start_page_url: str = "about:blank",
31
+ implicitly_wait: int = 5,
32
+ page_load_timeout: int = 5,
33
+ script_timeout: int = 5,
34
+ window_rect: Optional[WindowRect] = None,
35
+ cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
36
+ ignore_cdp_version_package_missing: bool = True,
37
+ ):
38
+ UnifiedBlinkBaseMixin.__init__(
39
+ self,
40
+ browser_exe=browser_exe,
41
+ browser_name_in_system=browser_name_in_system,
42
+ webdriver_path=webdriver_path,
43
+ architecture=architecture,
44
+ use_browser_exe=use_browser_exe,
45
+ flags_manager_type=flags_manager_type,
46
+ flags=flags,
47
+ start_page_url=start_page_url,
48
+ implicitly_wait=implicitly_wait,
49
+ page_load_timeout=page_load_timeout,
50
+ script_timeout=script_timeout,
51
+ window_rect=window_rect,
52
+ cdp_versioned_packages_paths=cdp_versioned_packages_paths,
53
+ ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
54
+ )
55
+
56
+ @property
57
+ def _driver_impl(self) -> Optional[legacyChrome]:
58
+ return super()._driver_impl
@@ -0,0 +1,88 @@
1
+ from typing import Optional
2
+ from selenium import webdriver
3
+ from osn_selenium.models import WindowRect
4
+ from osn_selenium._typehints import PATH_TYPEHINT
5
+ from selenium.webdriver.chrome.service import Service
6
+ from osn_selenium.flags.models.chrome import ChromeFlags
7
+ from osn_selenium.webdrivers.unified.core.window import (
8
+ UnifiedCoreWindowMixin
9
+ )
10
+ from osn_selenium.webdrivers.unified.core.timeouts import (
11
+ UnifiedCoreTimeoutsMixin
12
+ )
13
+ from osn_selenium.webdrivers.unified.blink.lifecycle import (
14
+ UnifiedBlinkLifecycleMixin
15
+ )
16
+
17
+
18
+ __all__ = ["UnifiedChromeLifecycleMixin"]
19
+
20
+
21
+ class UnifiedChromeLifecycleMixin(
22
+ UnifiedBlinkLifecycleMixin,
23
+ UnifiedCoreTimeoutsMixin,
24
+ UnifiedCoreWindowMixin
25
+ ):
26
+ def _create_driver_impl(self) -> None:
27
+ webdriver_options = self._webdriver_flags_manager.options
28
+ webdriver_service = Service(
29
+ executable_path=self._webdriver_path,
30
+ port=self._debugging_port_impl
31
+ if self._browser_exe_impl is None
32
+ else 0,
33
+ service_args=self._webdriver_flags_manager.start_args
34
+ if self._browser_exe_impl is None
35
+ else None
36
+ )
37
+
38
+ self._driver = webdriver.Chrome(options=webdriver_options, service=webdriver_service)
39
+
40
+ if self._window_rect is not None:
41
+ self._set_window_rect_impl(
42
+ x=self._window_rect.x,
43
+ y=self._window_rect.y,
44
+ width=self._window_rect.width,
45
+ height=self._window_rect.height,
46
+ )
47
+
48
+ self._set_driver_timeouts_impl(
49
+ page_load_timeout=self._base_page_load_timeout,
50
+ implicit_wait_timeout=self._base_implicitly_wait,
51
+ script_timeout=self._base_implicitly_wait,
52
+ )
53
+
54
+ def _restart_webdriver_impl(
55
+ self,
56
+ flags: Optional[ChromeFlags] = None,
57
+ browser_exe: Optional[PATH_TYPEHINT] = None,
58
+ browser_name_in_system: Optional[str] = None,
59
+ use_browser_exe: Optional[bool] = None,
60
+ start_page_url: Optional[str] = None,
61
+ window_rect: Optional[WindowRect] = None,
62
+ ) -> None:
63
+ super()._restart_webdriver_impl(
64
+ flags=flags,
65
+ browser_exe=browser_exe,
66
+ browser_name_in_system=browser_name_in_system,
67
+ use_browser_exe=use_browser_exe,
68
+ start_page_url=start_page_url,
69
+ window_rect=window_rect,
70
+ )
71
+
72
+ def _start_webdriver_impl(
73
+ self,
74
+ flags: Optional[ChromeFlags] = None,
75
+ browser_exe: Optional[PATH_TYPEHINT] = None,
76
+ browser_name_in_system: Optional[str] = None,
77
+ use_browser_exe: Optional[bool] = None,
78
+ start_page_url: Optional[str] = None,
79
+ window_rect: Optional[WindowRect] = None,
80
+ ) -> None:
81
+ super()._start_webdriver_impl(
82
+ flags=flags,
83
+ browser_exe=browser_exe,
84
+ browser_name_in_system=browser_name_in_system,
85
+ use_browser_exe=use_browser_exe,
86
+ start_page_url=start_page_url,
87
+ window_rect=window_rect,
88
+ )
@@ -0,0 +1,48 @@
1
+ from typing import Optional
2
+ from osn_selenium.models import WindowRect
3
+ from osn_selenium._typehints import PATH_TYPEHINT
4
+ from osn_selenium.flags.models.chrome import ChromeFlags
5
+ from osn_selenium.webdrivers.unified.blink.settings import (
6
+ UnifiedBlinkSettingsMixin
7
+ )
8
+
9
+
10
+ __all__ = ["UnifiedChromeSettingsMixin"]
11
+
12
+
13
+ class UnifiedChromeSettingsMixin(UnifiedBlinkSettingsMixin):
14
+ def _reset_settings_impl(
15
+ self,
16
+ flags: Optional[ChromeFlags] = None,
17
+ browser_exe: Optional[PATH_TYPEHINT] = None,
18
+ browser_name_in_system: Optional[str] = None,
19
+ use_browser_exe: Optional[bool] = None,
20
+ start_page_url: str = "",
21
+ window_rect: Optional[WindowRect] = None,
22
+ ) -> None:
23
+ super()._reset_settings_impl(
24
+ flags=flags,
25
+ browser_exe=browser_exe,
26
+ browser_name_in_system=browser_name_in_system,
27
+ use_browser_exe=use_browser_exe,
28
+ start_page_url=start_page_url,
29
+ window_rect=window_rect,
30
+ )
31
+
32
+ def _update_settings_impl(
33
+ self,
34
+ flags: Optional[ChromeFlags] = None,
35
+ browser_exe: Optional[PATH_TYPEHINT] = None,
36
+ browser_name_in_system: Optional[str] = None,
37
+ use_browser_exe: Optional[bool] = None,
38
+ start_page_url: Optional[str] = None,
39
+ window_rect: Optional[WindowRect] = None,
40
+ ) -> None:
41
+ super()._update_settings_impl(
42
+ flags=flags,
43
+ browser_exe=browser_exe,
44
+ browser_name_in_system=browser_name_in_system,
45
+ use_browser_exe=use_browser_exe,
46
+ start_page_url=start_page_url,
47
+ window_rect=window_rect,
48
+ )
@@ -0,0 +1,43 @@
1
+ from typing import (
2
+ Iterable,
3
+ List,
4
+ Optional
5
+ )
6
+ from osn_selenium._typehints import DEVICES_TYPEHINT
7
+ from osn_selenium.webdrivers._decorators import requires_driver
8
+ from selenium.webdriver import (
9
+ ActionChains as legacyActionChains
10
+ )
11
+ from osn_selenium.webdrivers.unified.core.script import (
12
+ UnifiedCoreScriptMixin
13
+ )
14
+ from selenium.webdriver.support.wait import (
15
+ WebDriverWait as legacyWebDriverWait
16
+ )
17
+
18
+
19
+ __all__ = ["UnifiedCoreActionsMixin"]
20
+
21
+
22
+ class UnifiedCoreActionsMixin(UnifiedCoreScriptMixin):
23
+ @requires_driver
24
+ def _action_chains_impl(
25
+ self,
26
+ duration: int = 250,
27
+ devices: Optional[List[DEVICES_TYPEHINT]] = None,
28
+ ) -> legacyActionChains:
29
+ return legacyActionChains(driver=self._driver_impl, duration=duration, devices=devices)
30
+
31
+ @requires_driver
32
+ def _web_driver_wait_impl(
33
+ self,
34
+ timeout: float,
35
+ poll_frequency: float = 0.5,
36
+ ignored_exceptions: Optional[Iterable[BaseException]] = None,
37
+ ) -> legacyWebDriverWait:
38
+ return legacyWebDriverWait(
39
+ driver=self._driver_impl,
40
+ timeout=timeout,
41
+ poll_frequency=poll_frequency,
42
+ ignored_exceptions=ignored_exceptions,
43
+ )