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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. osn_selenium/_functions.py +84 -0
  2. osn_selenium/_typehints.py +19 -0
  3. osn_selenium/abstract/executors/cdp/__init__.py +435 -0
  4. osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
  5. osn_selenium/abstract/executors/cdp/animation.py +47 -0
  6. osn_selenium/abstract/executors/cdp/audits.py +39 -0
  7. osn_selenium/abstract/executors/cdp/autofill.py +34 -0
  8. osn_selenium/abstract/executors/cdp/background_service.py +22 -0
  9. osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
  10. osn_selenium/abstract/executors/cdp/browser.py +122 -0
  11. osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
  12. osn_selenium/abstract/executors/cdp/cast.py +31 -0
  13. osn_selenium/abstract/executors/cdp/console.py +18 -0
  14. osn_selenium/abstract/executors/cdp/css.py +197 -0
  15. osn_selenium/abstract/executors/cdp/debugger.py +198 -0
  16. osn_selenium/abstract/executors/cdp/device_access.py +22 -0
  17. osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
  18. osn_selenium/abstract/executors/cdp/dom.py +305 -0
  19. osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
  20. osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
  21. osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
  22. osn_selenium/abstract/executors/cdp/emulation.py +259 -0
  23. osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
  24. osn_selenium/abstract/executors/cdp/extensions.py +31 -0
  25. osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
  26. osn_selenium/abstract/executors/cdp/fetch.py +76 -0
  27. osn_selenium/abstract/executors/cdp/file_system.py +11 -0
  28. osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
  29. osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
  30. osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
  31. osn_selenium/abstract/executors/cdp/input.py +158 -0
  32. osn_selenium/abstract/executors/cdp/inspector.py +14 -0
  33. osn_selenium/abstract/executors/cdp/io.py +24 -0
  34. osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
  35. osn_selenium/abstract/executors/cdp/log.py +27 -0
  36. osn_selenium/abstract/executors/cdp/media.py +14 -0
  37. osn_selenium/abstract/executors/cdp/memory.py +61 -0
  38. osn_selenium/abstract/executors/cdp/network.py +252 -0
  39. osn_selenium/abstract/executors/cdp/overlay.py +166 -0
  40. osn_selenium/abstract/executors/cdp/page.py +347 -0
  41. osn_selenium/abstract/executors/cdp/performance.py +28 -0
  42. osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
  43. osn_selenium/abstract/executors/cdp/preload.py +14 -0
  44. osn_selenium/abstract/executors/cdp/profiler.py +54 -0
  45. osn_selenium/abstract/executors/cdp/pwa.py +46 -0
  46. osn_selenium/abstract/executors/cdp/runtime.py +176 -0
  47. osn_selenium/abstract/executors/cdp/schema.py +11 -0
  48. osn_selenium/abstract/executors/cdp/security.py +26 -0
  49. osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
  50. osn_selenium/abstract/executors/cdp/storage.py +175 -0
  51. osn_selenium/abstract/executors/cdp/system_info.py +24 -0
  52. osn_selenium/abstract/executors/cdp/target.py +125 -0
  53. osn_selenium/abstract/executors/cdp/tethering.py +14 -0
  54. osn_selenium/abstract/executors/cdp/tracing.py +48 -0
  55. osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
  56. osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
  57. osn_selenium/abstract/executors/javascript.py +203 -0
  58. osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
  59. osn_selenium/abstract/instances/action_chains/base.py +25 -0
  60. osn_selenium/abstract/instances/action_chains/click.py +93 -0
  61. osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
  62. osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
  63. osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
  64. osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
  65. osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
  66. osn_selenium/abstract/instances/action_chains/move.py +60 -0
  67. osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
  68. osn_selenium/abstract/instances/action_chains/utils.py +44 -0
  69. osn_selenium/abstract/instances/alert.py +67 -0
  70. osn_selenium/abstract/instances/browser.py +76 -0
  71. osn_selenium/abstract/instances/browsing_context.py +310 -0
  72. osn_selenium/abstract/instances/dialog.py +107 -0
  73. osn_selenium/abstract/instances/fedcm.py +133 -0
  74. osn_selenium/abstract/instances/mobile.py +79 -0
  75. osn_selenium/abstract/instances/network.py +100 -0
  76. osn_selenium/abstract/instances/permissions.py +52 -0
  77. osn_selenium/abstract/instances/script.py +109 -0
  78. osn_selenium/abstract/instances/shadow_root.py +81 -0
  79. osn_selenium/abstract/instances/storage.py +98 -0
  80. osn_selenium/abstract/instances/switch_to.py +104 -0
  81. osn_selenium/abstract/instances/web_driver_wait.py +57 -0
  82. osn_selenium/abstract/instances/web_element.py +395 -0
  83. osn_selenium/abstract/instances/web_extension.py +70 -0
  84. osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
  85. osn_selenium/abstract/webdriver/blink/base.py +80 -0
  86. osn_selenium/abstract/webdriver/blink/casting.py +82 -0
  87. osn_selenium/abstract/webdriver/blink/features.py +51 -0
  88. osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
  89. osn_selenium/abstract/webdriver/blink/logging.py +40 -0
  90. osn_selenium/abstract/webdriver/blink/network.py +45 -0
  91. osn_selenium/abstract/webdriver/blink/settings.py +68 -0
  92. osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
  93. osn_selenium/abstract/webdriver/chrome/base.py +36 -0
  94. osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
  95. osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
  96. osn_selenium/abstract/webdriver/core/__init__.py +16 -0
  97. osn_selenium/abstract/webdriver/core/actions.py +58 -0
  98. osn_selenium/abstract/webdriver/core/auth.py +145 -0
  99. osn_selenium/abstract/webdriver/core/base.py +298 -0
  100. osn_selenium/abstract/webdriver/core/capture.py +84 -0
  101. osn_selenium/abstract/webdriver/core/components.py +82 -0
  102. osn_selenium/abstract/webdriver/core/devtools.py +69 -0
  103. osn_selenium/abstract/webdriver/core/element.py +55 -0
  104. osn_selenium/abstract/webdriver/core/file.py +82 -0
  105. osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
  106. osn_selenium/abstract/webdriver/core/navigation.py +65 -0
  107. osn_selenium/abstract/webdriver/core/script.py +88 -0
  108. osn_selenium/abstract/webdriver/core/settings.py +43 -0
  109. osn_selenium/abstract/webdriver/core/storage.py +81 -0
  110. osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
  111. osn_selenium/abstract/webdriver/core/window.py +237 -0
  112. osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
  113. osn_selenium/abstract/webdriver/edge/base.py +36 -0
  114. osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
  115. osn_selenium/abstract/webdriver/edge/settings.py +110 -0
  116. osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
  117. osn_selenium/abstract/webdriver/yandex/base.py +18 -0
  118. osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
  119. osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
  120. osn_selenium/base_mixin.py +122 -0
  121. osn_selenium/browsers_handler/__init__.py +47 -17
  122. osn_selenium/browsers_handler/_linux.py +226 -0
  123. osn_selenium/browsers_handler/_windows.py +21 -14
  124. osn_selenium/browsers_handler/{types.py → models.py} +5 -2
  125. osn_selenium/dev_tools/_decorators.py +140 -0
  126. osn_selenium/dev_tools/_exception_helpers.py +116 -0
  127. osn_selenium/dev_tools/_functions.py +174 -0
  128. osn_selenium/dev_tools/_system_utils.py +35 -0
  129. osn_selenium/dev_tools/_typehints.py +32 -0
  130. osn_selenium/dev_tools/_validators.py +227 -0
  131. osn_selenium/dev_tools/_wrappers.py +95 -0
  132. osn_selenium/dev_tools/domains/__init__.py +7 -40
  133. osn_selenium/dev_tools/domains/abstract.py +98 -254
  134. osn_selenium/dev_tools/domains/fetch.py +229 -906
  135. osn_selenium/dev_tools/domains_default/fetch.py +40 -28
  136. osn_selenium/dev_tools/filters.py +40 -0
  137. osn_selenium/dev_tools/logger/main.py +226 -0
  138. osn_selenium/dev_tools/logger/models.py +232 -0
  139. osn_selenium/dev_tools/logger/target.py +258 -0
  140. osn_selenium/dev_tools/manager/__init__.py +16 -0
  141. osn_selenium/dev_tools/manager/base.py +147 -0
  142. osn_selenium/dev_tools/manager/lifecycle.py +236 -0
  143. osn_selenium/dev_tools/manager/logging.py +153 -0
  144. osn_selenium/dev_tools/manager/settings.py +89 -0
  145. osn_selenium/dev_tools/manager/targets.py +175 -0
  146. osn_selenium/dev_tools/models.py +49 -0
  147. osn_selenium/dev_tools/settings.py +135 -0
  148. osn_selenium/dev_tools/target/__init__.py +16 -0
  149. osn_selenium/dev_tools/target/base.py +438 -0
  150. osn_selenium/dev_tools/target/detach.py +54 -0
  151. osn_selenium/dev_tools/target/discovery.py +112 -0
  152. osn_selenium/dev_tools/target/events.py +120 -0
  153. osn_selenium/dev_tools/target/fingerprint.py +126 -0
  154. osn_selenium/dev_tools/target/lifecycle.py +179 -0
  155. osn_selenium/dev_tools/target/logging.py +155 -0
  156. osn_selenium/exceptions/__init__.py +1 -0
  157. osn_selenium/exceptions/base.py +9 -0
  158. osn_selenium/exceptions/configuration.py +84 -0
  159. osn_selenium/exceptions/devtools.py +114 -0
  160. osn_selenium/exceptions/flags.py +45 -0
  161. osn_selenium/exceptions/instance.py +92 -0
  162. osn_selenium/exceptions/javascript.py +31 -0
  163. osn_selenium/exceptions/logic.py +31 -0
  164. osn_selenium/exceptions/path.py +77 -0
  165. osn_selenium/exceptions/platform.py +33 -0
  166. osn_selenium/exceptions/protocol.py +86 -0
  167. osn_selenium/exceptions/webdriver.py +44 -0
  168. osn_selenium/exceptions/window.py +63 -0
  169. osn_selenium/executors/__init__.py +1 -0
  170. osn_selenium/executors/sync/__init__.py +1 -0
  171. osn_selenium/executors/sync/cdp/__init__.py +550 -0
  172. osn_selenium/executors/sync/cdp/accessibility.py +74 -0
  173. osn_selenium/executors/sync/cdp/animation.py +50 -0
  174. osn_selenium/executors/sync/cdp/audits.py +48 -0
  175. osn_selenium/executors/sync/cdp/autofill.py +39 -0
  176. osn_selenium/executors/sync/cdp/background_service.py +30 -0
  177. osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
  178. osn_selenium/executors/sync/cdp/browser.py +131 -0
  179. osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
  180. osn_selenium/executors/sync/cdp/cast.py +38 -0
  181. osn_selenium/executors/sync/cdp/console.py +24 -0
  182. osn_selenium/executors/sync/cdp/css.py +187 -0
  183. osn_selenium/executors/sync/cdp/debugger.py +206 -0
  184. osn_selenium/executors/sync/cdp/device_access.py +27 -0
  185. osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
  186. osn_selenium/executors/sync/cdp/dom.py +310 -0
  187. osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
  188. osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
  189. osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
  190. osn_selenium/executors/sync/cdp/emulation.py +270 -0
  191. osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
  192. osn_selenium/executors/sync/cdp/extensions.py +39 -0
  193. osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
  194. osn_selenium/executors/sync/cdp/fetch.py +96 -0
  195. osn_selenium/executors/sync/cdp/file_system.py +18 -0
  196. osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
  197. osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
  198. osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
  199. osn_selenium/executors/sync/cdp/input.py +233 -0
  200. osn_selenium/executors/sync/cdp/inspector.py +21 -0
  201. osn_selenium/executors/sync/cdp/io.py +33 -0
  202. osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
  203. osn_selenium/executors/sync/cdp/log.py +35 -0
  204. osn_selenium/executors/sync/cdp/media.py +21 -0
  205. osn_selenium/executors/sync/cdp/memory.py +62 -0
  206. osn_selenium/executors/sync/cdp/network.py +287 -0
  207. osn_selenium/executors/sync/cdp/overlay.py +174 -0
  208. osn_selenium/executors/sync/cdp/page.py +365 -0
  209. osn_selenium/executors/sync/cdp/performance.py +33 -0
  210. osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
  211. osn_selenium/executors/sync/cdp/preload.py +21 -0
  212. osn_selenium/executors/sync/cdp/profiler.py +58 -0
  213. osn_selenium/executors/sync/cdp/pwa.py +55 -0
  214. osn_selenium/executors/sync/cdp/runtime.py +221 -0
  215. osn_selenium/executors/sync/cdp/schema.py +23 -0
  216. osn_selenium/executors/sync/cdp/security.py +30 -0
  217. osn_selenium/executors/sync/cdp/service_worker.py +56 -0
  218. osn_selenium/executors/sync/cdp/storage.py +151 -0
  219. osn_selenium/executors/sync/cdp/system_info.py +30 -0
  220. osn_selenium/executors/sync/cdp/target.py +147 -0
  221. osn_selenium/executors/sync/cdp/tethering.py +21 -0
  222. osn_selenium/executors/sync/cdp/tracing.py +62 -0
  223. osn_selenium/executors/sync/cdp/web_audio.py +24 -0
  224. osn_selenium/executors/sync/cdp/web_authn.py +82 -0
  225. osn_selenium/executors/sync/javascript.py +79 -0
  226. osn_selenium/executors/trio_threads/__init__.py +1 -0
  227. osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
  228. osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
  229. osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
  230. osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
  231. osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
  232. osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
  233. osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
  234. osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
  235. osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
  236. osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
  237. osn_selenium/executors/trio_threads/cdp/console.py +33 -0
  238. osn_selenium/executors/trio_threads/cdp/css.py +196 -0
  239. osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
  240. osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
  241. osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
  242. osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
  243. osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
  244. osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
  245. osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
  246. osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
  247. osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
  248. osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
  249. osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
  250. osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
  251. osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
  252. osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
  253. osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
  254. osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
  255. osn_selenium/executors/trio_threads/cdp/input.py +242 -0
  256. osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
  257. osn_selenium/executors/trio_threads/cdp/io.py +42 -0
  258. osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
  259. osn_selenium/executors/trio_threads/cdp/log.py +44 -0
  260. osn_selenium/executors/trio_threads/cdp/media.py +30 -0
  261. osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
  262. osn_selenium/executors/trio_threads/cdp/network.py +296 -0
  263. osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
  264. osn_selenium/executors/trio_threads/cdp/page.py +374 -0
  265. osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
  266. osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
  267. osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
  268. osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
  269. osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
  270. osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
  271. osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
  272. osn_selenium/executors/trio_threads/cdp/security.py +43 -0
  273. osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
  274. osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
  275. osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
  276. osn_selenium/executors/trio_threads/cdp/target.py +156 -0
  277. osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
  278. osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
  279. osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
  280. osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
  281. osn_selenium/executors/trio_threads/javascript.py +90 -0
  282. osn_selenium/executors/unified/__init__.py +1 -0
  283. osn_selenium/executors/unified/cdp/__init__.py +1 -0
  284. osn_selenium/executors/unified/cdp/accessibility.py +81 -0
  285. osn_selenium/executors/unified/cdp/animation.py +50 -0
  286. osn_selenium/executors/unified/cdp/audits.py +45 -0
  287. osn_selenium/executors/unified/cdp/autofill.py +41 -0
  288. osn_selenium/executors/unified/cdp/background_service.py +24 -0
  289. osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
  290. osn_selenium/executors/unified/cdp/browser.py +143 -0
  291. osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
  292. osn_selenium/executors/unified/cdp/cast.py +32 -0
  293. osn_selenium/executors/unified/cdp/console.py +18 -0
  294. osn_selenium/executors/unified/cdp/css.py +237 -0
  295. osn_selenium/executors/unified/cdp/debugger.py +243 -0
  296. osn_selenium/executors/unified/cdp/device_access.py +21 -0
  297. osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
  298. osn_selenium/executors/unified/cdp/dom.py +380 -0
  299. osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
  300. osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
  301. osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
  302. osn_selenium/executors/unified/cdp/emulation.py +312 -0
  303. osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
  304. osn_selenium/executors/unified/cdp/extensions.py +45 -0
  305. osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
  306. osn_selenium/executors/unified/cdp/fetch.py +111 -0
  307. osn_selenium/executors/unified/cdp/file_system.py +15 -0
  308. osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
  309. osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
  310. osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
  311. osn_selenium/executors/unified/cdp/input.py +254 -0
  312. osn_selenium/executors/unified/cdp/inspector.py +15 -0
  313. osn_selenium/executors/unified/cdp/io.py +29 -0
  314. osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
  315. osn_selenium/executors/unified/cdp/log.py +29 -0
  316. osn_selenium/executors/unified/cdp/media.py +15 -0
  317. osn_selenium/executors/unified/cdp/memory.py +59 -0
  318. osn_selenium/executors/unified/cdp/network.py +323 -0
  319. osn_selenium/executors/unified/cdp/overlay.py +209 -0
  320. osn_selenium/executors/unified/cdp/page.py +410 -0
  321. osn_selenium/executors/unified/cdp/performance.py +27 -0
  322. osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
  323. osn_selenium/executors/unified/cdp/preload.py +15 -0
  324. osn_selenium/executors/unified/cdp/profiler.py +55 -0
  325. osn_selenium/executors/unified/cdp/pwa.py +55 -0
  326. osn_selenium/executors/unified/cdp/runtime.py +245 -0
  327. osn_selenium/executors/unified/cdp/schema.py +17 -0
  328. osn_selenium/executors/unified/cdp/security.py +27 -0
  329. osn_selenium/executors/unified/cdp/service_worker.py +62 -0
  330. osn_selenium/executors/unified/cdp/storage.py +178 -0
  331. osn_selenium/executors/unified/cdp/system_info.py +24 -0
  332. osn_selenium/executors/unified/cdp/target.py +165 -0
  333. osn_selenium/executors/unified/cdp/tethering.py +15 -0
  334. osn_selenium/executors/unified/cdp/tracing.py +62 -0
  335. osn_selenium/executors/unified/cdp/web_audio.py +18 -0
  336. osn_selenium/executors/unified/cdp/web_authn.py +103 -0
  337. osn_selenium/executors/unified/javascript.py +108 -0
  338. osn_selenium/flags/__init__.py +1 -0
  339. osn_selenium/flags/_functions.py +45 -0
  340. osn_selenium/flags/_typehints.py +34 -0
  341. osn_selenium/flags/_validators.py +101 -0
  342. osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +165 -243
  343. osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +133 -371
  344. osn_selenium/flags/chrome.py +259 -0
  345. osn_selenium/flags/edge.py +259 -0
  346. osn_selenium/flags/models/__init__.py +1 -0
  347. osn_selenium/flags/models/base.py +130 -0
  348. osn_selenium/flags/models/blink.py +263 -0
  349. osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
  350. osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
  351. osn_selenium/flags/models/values.py +44 -0
  352. osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
  353. osn_selenium/flags/yandex.py +259 -0
  354. osn_selenium/instances/__init__.py +1 -0
  355. osn_selenium/instances/_functions.py +242 -0
  356. osn_selenium/instances/_typehints.py +148 -0
  357. osn_selenium/instances/_utils.py +143 -0
  358. osn_selenium/instances/convert.py +287 -0
  359. osn_selenium/instances/protocols.py +105 -0
  360. osn_selenium/instances/sync/__init__.py +1 -0
  361. osn_selenium/instances/sync/action_chains/__init__.py +26 -0
  362. osn_selenium/instances/sync/action_chains/base.py +74 -0
  363. osn_selenium/instances/sync/action_chains/click.py +61 -0
  364. osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
  365. osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
  366. osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
  367. osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
  368. osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
  369. osn_selenium/instances/sync/action_chains/move.py +46 -0
  370. osn_selenium/instances/sync/action_chains/scroll.py +43 -0
  371. osn_selenium/instances/sync/action_chains/utils.py +30 -0
  372. osn_selenium/instances/sync/alert.py +69 -0
  373. osn_selenium/instances/sync/browser.py +72 -0
  374. osn_selenium/instances/sync/browsing_context.py +193 -0
  375. osn_selenium/instances/sync/dialog.py +81 -0
  376. osn_selenium/instances/sync/fedcm.py +92 -0
  377. osn_selenium/instances/sync/mobile.py +75 -0
  378. osn_selenium/instances/sync/network.py +90 -0
  379. osn_selenium/instances/sync/permissions.py +80 -0
  380. osn_selenium/instances/sync/script.py +77 -0
  381. osn_selenium/instances/sync/shadow_root.py +91 -0
  382. osn_selenium/instances/sync/storage.py +91 -0
  383. osn_selenium/instances/sync/switch_to.py +92 -0
  384. osn_selenium/instances/sync/web_driver_wait.py +83 -0
  385. osn_selenium/instances/sync/web_element.py +179 -0
  386. osn_selenium/instances/sync/web_extension.py +77 -0
  387. osn_selenium/instances/trio_threads/__init__.py +1 -0
  388. osn_selenium/instances/trio_threads/action_chains/__init__.py +26 -0
  389. osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
  390. osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
  391. osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
  392. osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
  393. osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
  394. osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
  395. osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
  396. osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
  397. osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
  398. osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
  399. osn_selenium/instances/trio_threads/alert.py +87 -0
  400. osn_selenium/instances/trio_threads/browser.py +90 -0
  401. osn_selenium/instances/trio_threads/browsing_context.py +216 -0
  402. osn_selenium/instances/trio_threads/dialog.py +99 -0
  403. osn_selenium/instances/trio_threads/fedcm.py +110 -0
  404. osn_selenium/instances/trio_threads/mobile.py +93 -0
  405. osn_selenium/instances/trio_threads/network.py +108 -0
  406. osn_selenium/instances/trio_threads/permissions.py +102 -0
  407. osn_selenium/instances/trio_threads/script.py +95 -0
  408. osn_selenium/instances/trio_threads/shadow_root.py +123 -0
  409. osn_selenium/instances/trio_threads/storage.py +109 -0
  410. osn_selenium/instances/trio_threads/switch_to.py +124 -0
  411. osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
  412. osn_selenium/instances/trio_threads/web_element.py +217 -0
  413. osn_selenium/instances/trio_threads/web_extension.py +99 -0
  414. osn_selenium/instances/unified/__init__.py +1 -0
  415. osn_selenium/instances/unified/action_chains/__init__.py +22 -0
  416. osn_selenium/instances/unified/action_chains/base.py +31 -0
  417. osn_selenium/instances/unified/action_chains/click.py +27 -0
  418. osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
  419. osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
  420. osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
  421. osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
  422. osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
  423. osn_selenium/instances/unified/action_chains/move.py +24 -0
  424. osn_selenium/instances/unified/action_chains/scroll.py +21 -0
  425. osn_selenium/instances/unified/action_chains/utils.py +19 -0
  426. osn_selenium/instances/unified/alert.py +29 -0
  427. osn_selenium/instances/unified/browser.py +33 -0
  428. osn_selenium/instances/unified/browsing_context.py +151 -0
  429. osn_selenium/instances/unified/dialog.py +42 -0
  430. osn_selenium/instances/unified/fedcm.py +48 -0
  431. osn_selenium/instances/unified/mobile.py +36 -0
  432. osn_selenium/instances/unified/network.py +50 -0
  433. osn_selenium/instances/unified/permissions.py +43 -0
  434. osn_selenium/instances/unified/script.py +38 -0
  435. osn_selenium/instances/unified/shadow_root.py +46 -0
  436. osn_selenium/instances/unified/storage.py +48 -0
  437. osn_selenium/instances/unified/switch_to.py +49 -0
  438. osn_selenium/instances/unified/web_driver_wait.py +45 -0
  439. osn_selenium/instances/unified/web_element.py +145 -0
  440. osn_selenium/instances/unified/web_extension.py +38 -0
  441. osn_selenium/javascript/__init__.py +1 -0
  442. osn_selenium/javascript/_functions.py +63 -0
  443. osn_selenium/javascript/fingerprint/__init__.py +120 -0
  444. osn_selenium/javascript/fingerprint/_decorators.py +41 -0
  445. osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
  446. osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
  447. osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
  448. osn_selenium/javascript/fingerprint/_functions.py +35 -0
  449. osn_selenium/javascript/fingerprint/_typehints.py +27 -0
  450. osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
  451. osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
  452. osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
  453. osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
  454. osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
  455. osn_selenium/javascript/fingerprint/registry/models.py +41 -0
  456. osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
  457. osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
  458. osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
  459. osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
  460. osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
  461. osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
  462. osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
  463. osn_selenium/javascript/functions.py +44 -0
  464. osn_selenium/javascript/models.py +35 -0
  465. osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
  466. osn_selenium/models.py +139 -0
  467. osn_selenium/webdrivers/_args_helpers.py +181 -0
  468. osn_selenium/webdrivers/_bridges.py +57 -0
  469. osn_selenium/webdrivers/_decorators.py +83 -0
  470. osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
  471. osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
  472. osn_selenium/webdrivers/_executable_tables/models.py +19 -0
  473. osn_selenium/webdrivers/_typehints.py +10 -0
  474. osn_selenium/webdrivers/protocols.py +50 -0
  475. osn_selenium/webdrivers/sync/__init__.py +1 -0
  476. osn_selenium/webdrivers/sync/blink/__init__.py +114 -0
  477. osn_selenium/webdrivers/sync/blink/base.py +128 -0
  478. osn_selenium/webdrivers/sync/blink/casting.py +34 -0
  479. osn_selenium/webdrivers/sync/blink/features.py +28 -0
  480. osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
  481. osn_selenium/webdrivers/sync/blink/logging.py +25 -0
  482. osn_selenium/webdrivers/sync/blink/network.py +28 -0
  483. osn_selenium/webdrivers/sync/blink/settings.py +63 -0
  484. osn_selenium/webdrivers/sync/chrome/__init__.py +67 -0
  485. osn_selenium/webdrivers/sync/chrome/base.py +106 -0
  486. osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
  487. osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
  488. osn_selenium/webdrivers/sync/core/__init__.py +91 -0
  489. osn_selenium/webdrivers/sync/core/actions.py +59 -0
  490. osn_selenium/webdrivers/sync/core/auth.py +77 -0
  491. osn_selenium/webdrivers/sync/core/base.py +167 -0
  492. osn_selenium/webdrivers/sync/core/capture.py +37 -0
  493. osn_selenium/webdrivers/sync/core/comonents.py +57 -0
  494. osn_selenium/webdrivers/sync/core/devtools.py +47 -0
  495. osn_selenium/webdrivers/sync/core/element.py +42 -0
  496. osn_selenium/webdrivers/sync/core/file.py +40 -0
  497. osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
  498. osn_selenium/webdrivers/sync/core/navigation.py +36 -0
  499. osn_selenium/webdrivers/sync/core/script.py +53 -0
  500. osn_selenium/webdrivers/sync/core/settings.py +35 -0
  501. osn_selenium/webdrivers/sync/core/storage.py +48 -0
  502. osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
  503. osn_selenium/webdrivers/sync/core/window.py +99 -0
  504. osn_selenium/webdrivers/sync/edge/__init__.py +67 -0
  505. osn_selenium/webdrivers/sync/edge/base.py +102 -0
  506. osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
  507. osn_selenium/webdrivers/sync/edge/settings.py +58 -0
  508. osn_selenium/webdrivers/sync/yandex/__init__.py +67 -0
  509. osn_selenium/webdrivers/sync/yandex/base.py +99 -0
  510. osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
  511. osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
  512. osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
  513. osn_selenium/webdrivers/trio_threads/blink/__init__.py +124 -0
  514. osn_selenium/webdrivers/trio_threads/blink/base.py +133 -0
  515. osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
  516. osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
  517. osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
  518. osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
  519. osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
  520. osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
  521. osn_selenium/webdrivers/trio_threads/chrome/__init__.py +81 -0
  522. osn_selenium/webdrivers/trio_threads/chrome/base.py +107 -0
  523. osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
  524. osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
  525. osn_selenium/webdrivers/trio_threads/core/__init__.py +109 -0
  526. osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
  527. osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
  528. osn_selenium/webdrivers/trio_threads/core/base.py +191 -0
  529. osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
  530. osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
  531. osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
  532. osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
  533. osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
  534. osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
  535. osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
  536. osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
  537. osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
  538. osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
  539. osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
  540. osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
  541. osn_selenium/webdrivers/trio_threads/edge/__init__.py +81 -0
  542. osn_selenium/webdrivers/trio_threads/edge/base.py +103 -0
  543. osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
  544. osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
  545. osn_selenium/webdrivers/trio_threads/yandex/__init__.py +81 -0
  546. osn_selenium/webdrivers/trio_threads/yandex/base.py +100 -0
  547. osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
  548. osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
  549. osn_selenium/webdrivers/unified/__init__.py +1 -0
  550. osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
  551. osn_selenium/webdrivers/unified/blink/base.py +131 -0
  552. osn_selenium/webdrivers/unified/blink/casting.py +30 -0
  553. osn_selenium/webdrivers/unified/blink/features.py +22 -0
  554. osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
  555. osn_selenium/webdrivers/unified/blink/logging.py +18 -0
  556. osn_selenium/webdrivers/unified/blink/network.py +22 -0
  557. osn_selenium/webdrivers/unified/blink/settings.py +86 -0
  558. osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
  559. osn_selenium/webdrivers/unified/chrome/base.py +54 -0
  560. osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
  561. osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
  562. osn_selenium/webdrivers/unified/core/__init__.py +1 -0
  563. osn_selenium/webdrivers/unified/core/actions.py +43 -0
  564. osn_selenium/webdrivers/unified/core/auth.py +70 -0
  565. osn_selenium/webdrivers/unified/core/base.py +132 -0
  566. osn_selenium/webdrivers/unified/core/capture.py +32 -0
  567. osn_selenium/webdrivers/unified/core/components.py +32 -0
  568. osn_selenium/webdrivers/unified/core/devtools.py +35 -0
  569. osn_selenium/webdrivers/unified/core/element.py +24 -0
  570. osn_selenium/webdrivers/unified/core/file.py +35 -0
  571. osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
  572. osn_selenium/webdrivers/unified/core/navigation.py +31 -0
  573. osn_selenium/webdrivers/unified/core/script.py +32 -0
  574. osn_selenium/webdrivers/unified/core/settings.py +44 -0
  575. osn_selenium/webdrivers/unified/core/storage.py +37 -0
  576. osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
  577. osn_selenium/webdrivers/unified/core/window.py +135 -0
  578. osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
  579. osn_selenium/webdrivers/unified/edge/base.py +52 -0
  580. osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
  581. osn_selenium/webdrivers/unified/edge/settings.py +48 -0
  582. osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
  583. osn_selenium/webdrivers/unified/yandex/base.py +54 -0
  584. osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
  585. osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
  586. osn_selenium-1.0.0.dist-info/METADATA +239 -0
  587. osn_selenium-1.0.0.dist-info/RECORD +608 -0
  588. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/WHEEL +1 -1
  589. osn_selenium/captcha_workers/__init__.py +0 -26
  590. osn_selenium/dev_tools/_types.py +0 -22
  591. osn_selenium/dev_tools/errors.py +0 -89
  592. osn_selenium/dev_tools/logger.py +0 -558
  593. osn_selenium/dev_tools/manager.py +0 -1551
  594. osn_selenium/dev_tools/utils.py +0 -509
  595. osn_selenium/errors.py +0 -16
  596. osn_selenium/types.py +0 -118
  597. osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
  598. osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
  599. osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
  600. osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
  601. osn_selenium/webdrivers/Blink/protocols.py +0 -330
  602. osn_selenium/webdrivers/Blink/webdriver.py +0 -637
  603. osn_selenium/webdrivers/Chrome/protocols.py +0 -228
  604. osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
  605. osn_selenium/webdrivers/Edge/protocols.py +0 -228
  606. osn_selenium/webdrivers/Edge/webdriver.py +0 -394
  607. osn_selenium/webdrivers/Yandex/protocols.py +0 -211
  608. osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
  609. osn_selenium/webdrivers/_functions.py +0 -504
  610. osn_selenium/webdrivers/types.py +0 -390
  611. osn_selenium-0.0.0.dist-info/METADATA +0 -710
  612. osn_selenium-0.0.0.dist-info/RECORD +0 -57
  613. /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
  614. /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
  615. /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
  616. /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
  617. /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
  618. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
  619. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
  620. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
  621. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
  622. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
  623. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
  624. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
  625. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
  626. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
  627. /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
  628. {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,54 @@
1
+ from typing import 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
+ ):
36
+ UnifiedBlinkBaseMixin.__init__(
37
+ self,
38
+ browser_exe=browser_exe,
39
+ browser_name_in_system=browser_name_in_system,
40
+ webdriver_path=webdriver_path,
41
+ architecture=architecture,
42
+ use_browser_exe=use_browser_exe,
43
+ flags_manager_type=flags_manager_type,
44
+ flags=flags,
45
+ start_page_url=start_page_url,
46
+ implicitly_wait=implicitly_wait,
47
+ page_load_timeout=page_load_timeout,
48
+ script_timeout=script_timeout,
49
+ window_rect=window_rect,
50
+ )
51
+
52
+ @property
53
+ def _driver_impl(self) -> Optional[legacyChrome]:
54
+ 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
+ )
@@ -0,0 +1,70 @@
1
+ from typing import (
2
+ Any,
3
+ List,
4
+ Optional,
5
+ Union
6
+ )
7
+ from osn_selenium.webdrivers._decorators import requires_driver
8
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
9
+ from selenium.webdriver.common.virtual_authenticator import (
10
+ Credential,
11
+ VirtualAuthenticatorOptions
12
+ )
13
+
14
+
15
+ __all__ = ["UnifiedCoreAuthMixin"]
16
+
17
+
18
+ class UnifiedCoreAuthMixin(UnifiedCoreBaseMixin):
19
+ @requires_driver
20
+ def _add_credential_impl(self, credential: Credential) -> None:
21
+ self._driver_impl.add_credential(credential=credential)
22
+
23
+ @requires_driver
24
+ def _add_virtual_authenticator_impl(self, options: VirtualAuthenticatorOptions) -> None:
25
+ self._driver_impl.add_virtual_authenticator(options=options)
26
+
27
+ @requires_driver
28
+ def _fedcm_dialog_impl(
29
+ self,
30
+ timeout: int = 5,
31
+ poll_frequency: float = 0.5,
32
+ ignored_exceptions: Any = None,
33
+ ) -> Any:
34
+ return self._driver_impl.fedcm_dialog(
35
+ timeout=timeout,
36
+ poll_frequency=poll_frequency,
37
+ ignored_exceptions=ignored_exceptions,
38
+ )
39
+
40
+ @requires_driver
41
+ def _fedcm_impl(self) -> Any:
42
+ return self._driver_impl.fedcm
43
+
44
+ @requires_driver
45
+ def _get_credentials_impl(self) -> List[Credential]:
46
+ return self._driver_impl.get_credentials()
47
+
48
+ @requires_driver
49
+ def _remove_all_credentials_impl(self) -> None:
50
+ self._driver_impl.remove_all_credentials()
51
+
52
+ @requires_driver
53
+ def _remove_credential_impl(self, credential_id: Union[str, bytearray]) -> None:
54
+ self._driver_impl.remove_credential(credential_id=credential_id)
55
+
56
+ @requires_driver
57
+ def _remove_virtual_authenticator_impl(self) -> None:
58
+ self._driver_impl.remove_virtual_authenticator()
59
+
60
+ @requires_driver
61
+ def _set_user_verified_impl(self, verified: bool) -> None:
62
+ self._driver_impl.set_user_verified(verified=verified)
63
+
64
+ @requires_driver
65
+ def _supports_fedcm_impl(self) -> bool:
66
+ return self._driver_impl.supports_fedcm
67
+
68
+ @requires_driver
69
+ def _virtual_authenticator_id_impl(self) -> Optional[str]:
70
+ return self._driver_impl.virtual_authenticator_id
@@ -0,0 +1,132 @@
1
+ from osn_selenium.models import WindowRect
2
+ from typing import (
3
+ Any,
4
+ Dict,
5
+ Optional,
6
+ Type
7
+ )
8
+ from osn_selenium.flags.base import BrowserFlagsManager
9
+ from osn_selenium.flags.models.base import BrowserFlags
10
+ from selenium.webdriver.common.bidi.session import Session
11
+ from osn_selenium._typehints import (
12
+ ARCHITECTURES_TYPEHINT
13
+ )
14
+ from selenium.webdriver.remote.errorhandler import ErrorHandler
15
+ from osn_selenium.webdrivers._decorators import requires_driver
16
+ from selenium.webdriver.remote.locator_converter import LocatorConverter
17
+ from selenium.webdriver.remote.remote_connection import RemoteConnection
18
+ from osn_selenium.exceptions.webdriver import (
19
+ WebDriverNotStartedError
20
+ )
21
+ from selenium.webdriver.remote.webdriver import (
22
+ WebDriver as legacyWebDriver
23
+ )
24
+
25
+
26
+ __all__ = ["UnifiedCoreBaseMixin"]
27
+
28
+
29
+ class UnifiedCoreBaseMixin:
30
+ def __init__(
31
+ self,
32
+ webdriver_path: str,
33
+ architecture: ARCHITECTURES_TYPEHINT,
34
+ flags_manager_type: Type[BrowserFlagsManager] = BrowserFlagsManager,
35
+ flags: Optional[BrowserFlags] = None,
36
+ implicitly_wait: int = 5,
37
+ page_load_timeout: int = 5,
38
+ script_timeout: int = 5,
39
+ window_rect: Optional[WindowRect] = None,
40
+ ) -> None:
41
+ self._window_rect = window_rect
42
+ self._webdriver_path = webdriver_path
43
+ self._webdriver_flags_manager = flags_manager_type()
44
+ self._driver: Optional[legacyWebDriver] = None
45
+ self._architecture = architecture
46
+ self._base_implicitly_wait = float(implicitly_wait)
47
+ self._base_page_load_timeout = float(page_load_timeout)
48
+ self._base_script_timeout = float(script_timeout)
49
+ self._is_active = False
50
+
51
+ if flags is not None:
52
+ self._webdriver_flags_manager.update_flags(flags)
53
+
54
+ @property
55
+ def _architecture_impl(self) -> ARCHITECTURES_TYPEHINT:
56
+ return self._architecture
57
+
58
+ @requires_driver
59
+ def _capabilities_impl(self) -> Dict[str, Any]:
60
+ return self._driver_impl.capabilities
61
+
62
+ @requires_driver
63
+ def _caps_get_impl(self) -> Dict[str, Any]:
64
+ return self._driver_impl.caps
65
+
66
+ @requires_driver
67
+ def _caps_set_impl(self, value: Dict[str, Any]) -> None:
68
+ self._driver_impl.caps = value
69
+
70
+ @requires_driver
71
+ def _command_executor_get_impl(self) -> RemoteConnection:
72
+ return self._driver_impl.command_executor
73
+
74
+ @requires_driver
75
+ def _command_executor_set_impl(self, value: RemoteConnection) -> None:
76
+ self._driver_impl.command_executor = value
77
+
78
+ @property
79
+ def _driver_impl(self) -> Optional[legacyWebDriver]:
80
+ return self._driver
81
+
82
+ def _ensure_driver(self) -> None:
83
+ if self._driver is None:
84
+ raise WebDriverNotStartedError()
85
+
86
+ @requires_driver
87
+ def _error_handler_get_impl(self) -> ErrorHandler:
88
+ return self._driver_impl.error_handler
89
+
90
+ @requires_driver
91
+ def _error_handler_set_impl(self, value: ErrorHandler) -> None:
92
+ self._driver_impl.error_handler = value
93
+
94
+ @requires_driver
95
+ def _execute_impl(self, driver_command: str, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
96
+ return self._driver_impl.execute(driver_command=driver_command, params=params)
97
+
98
+ @property
99
+ def _is_active_impl(self) -> bool:
100
+ return self._is_active
101
+
102
+ @requires_driver
103
+ def _locator_converter_get_impl(self) -> LocatorConverter:
104
+ return self._driver_impl.locator_converter
105
+
106
+ @requires_driver
107
+ def _locator_converter_set_impl(self, value: LocatorConverter) -> None:
108
+ self._driver_impl.locator_converter = value
109
+
110
+ @requires_driver
111
+ def _name_impl(self) -> str:
112
+ return self._driver_impl.name
113
+
114
+ @requires_driver
115
+ def _pinned_scripts_get_impl(self) -> Dict[str, Any]:
116
+ return self._driver_impl.pinned_scripts
117
+
118
+ @requires_driver
119
+ def _pinned_scripts_set_impl(self, value: Dict[str, Any]) -> None:
120
+ self._driver_impl.pinned_scripts = value
121
+
122
+ @requires_driver
123
+ def _session_id_get_impl(self) -> Optional[str]:
124
+ return self._driver_impl.session_id
125
+
126
+ @requires_driver
127
+ def _session_id_set_impl(self, value: Optional[str]) -> None:
128
+ self._driver_impl.session_id = value
129
+
130
+ @requires_driver
131
+ def _session_impl(self) -> Session:
132
+ return self._driver_impl._session
@@ -0,0 +1,32 @@
1
+ from typing import Any, Optional
2
+ from osn_selenium.webdrivers._decorators import requires_driver
3
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
4
+
5
+
6
+ __all__ = ["UnifiedCoreCaptureMixin"]
7
+
8
+
9
+ class UnifiedCoreCaptureMixin(UnifiedCoreBaseMixin):
10
+ @requires_driver
11
+ def _get_screenshot_as_base64_impl(self) -> str:
12
+ return self._driver_impl.get_screenshot_as_base64()
13
+
14
+ @requires_driver
15
+ def _get_screenshot_as_file_impl(self, filename: str) -> bool:
16
+ return self._driver_impl.get_screenshot_as_file(filename=filename)
17
+
18
+ @requires_driver
19
+ def _get_screenshot_as_png_impl(self) -> bytes:
20
+ return self._driver_impl.get_screenshot_as_png()
21
+
22
+ @requires_driver
23
+ def _page_source_impl(self) -> str:
24
+ return self._driver_impl.page_source
25
+
26
+ @requires_driver
27
+ def _print_page_impl(self, print_options: Optional[Any] = None) -> str:
28
+ return self._driver_impl.print_page(print_options=print_options)
29
+
30
+ @requires_driver
31
+ def _save_screenshot_impl(self, filename: str) -> bool:
32
+ return self._driver_impl.save_screenshot(filename=filename)
@@ -0,0 +1,32 @@
1
+ from typing import Any
2
+ from osn_selenium.webdrivers._decorators import requires_driver
3
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
4
+
5
+
6
+ __all__ = ["UnifiedCoreComponentsMixin"]
7
+
8
+
9
+ class UnifiedCoreComponentsMixin(UnifiedCoreBaseMixin):
10
+ @requires_driver
11
+ def _browser_impl(self) -> Any:
12
+ return self._driver_impl.browser
13
+
14
+ @requires_driver
15
+ def _browsing_context_impl(self) -> Any:
16
+ return self._driver_impl.browsing_context
17
+
18
+ @requires_driver
19
+ def _dialog_impl(self) -> Any:
20
+ return self._driver_impl.dialog
21
+
22
+ @requires_driver
23
+ def _mobile_impl(self) -> Any:
24
+ return self._driver_impl.mobile
25
+
26
+ @requires_driver
27
+ def _permissions_impl(self) -> Any:
28
+ return self._driver_impl.permissions
29
+
30
+ @requires_driver
31
+ def _webextension_impl(self) -> Any:
32
+ return self._driver_impl.webextension
@@ -0,0 +1,35 @@
1
+ from contextlib import asynccontextmanager
2
+ from typing import (
3
+ Any,
4
+ AsyncGenerator,
5
+ Dict,
6
+ Tuple
7
+ )
8
+ from osn_selenium.webdrivers._decorators import requires_driver
9
+ from osn_selenium.webdrivers._args_helpers import build_cdp_kwargs
10
+ from selenium.webdriver.remote.bidi_connection import BidiConnection
11
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
12
+ from selenium.webdriver.remote.websocket_connection import WebSocketConnection
13
+
14
+
15
+ __all__ = ["UnifiedCoreDevToolsMixin"]
16
+
17
+
18
+ class UnifiedCoreDevToolsMixin(UnifiedCoreBaseMixin):
19
+ @asynccontextmanager
20
+ @requires_driver
21
+ async def _bidi_connection_impl(self) -> AsyncGenerator[BidiConnection, Any]:
22
+ async with self._driver_impl.bidi_connection() as bidi_connection:
23
+ yield bidi_connection
24
+
25
+ @requires_driver
26
+ def _execute_cdp_cmd_impl(self, cmd: str, cmd_args: Dict[str, Any]) -> Any:
27
+ return self._driver_impl.execute_cdp_cmd(cmd=cmd, cmd_args=build_cdp_kwargs(**cmd_args))
28
+
29
+ @requires_driver
30
+ def _network_impl(self) -> Any:
31
+ return self._driver_impl.network
32
+
33
+ @requires_driver
34
+ def _start_devtools_impl(self) -> Tuple[Any, WebSocketConnection]:
35
+ return self._driver_impl.start_devtools()
@@ -0,0 +1,24 @@
1
+ from typing import List, Optional
2
+ from selenium.webdriver.common.by import By
3
+ from osn_selenium.webdrivers._decorators import requires_driver
4
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
5
+ from selenium.webdriver.remote.webelement import (
6
+ WebElement as legacyWebElement
7
+ )
8
+
9
+
10
+ __all__ = ["UnifiedCoreElementMixin"]
11
+
12
+
13
+ class UnifiedCoreElementMixin(UnifiedCoreBaseMixin):
14
+ @requires_driver
15
+ def _create_web_element_impl(self, element_id: str) -> legacyWebElement:
16
+ return self._driver_impl.create_web_element(element_id=element_id)
17
+
18
+ @requires_driver
19
+ def _find_element_impl(self, by: str = By.ID, value: Optional[str] = None) -> legacyWebElement:
20
+ return self._driver_impl.find_element(by=by, value=value)
21
+
22
+ @requires_driver
23
+ def _find_elements_impl(self, by: str = By.ID, value: Optional[str] = None) -> List[legacyWebElement]:
24
+ return self._driver_impl.find_elements(by=by, value=value)
@@ -0,0 +1,35 @@
1
+ from contextlib import contextmanager
2
+ from typing import Any, Generator, List
3
+ from osn_selenium.webdrivers._decorators import requires_driver
4
+ from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
5
+
6
+
7
+ __all__ = ["UnifiedCoreFileMixin"]
8
+
9
+
10
+ class UnifiedCoreFileMixin(UnifiedCoreBaseMixin):
11
+ @requires_driver
12
+ def _delete_downloadable_files_impl(self) -> None:
13
+ self._driver_impl.delete_downloadable_files()
14
+
15
+ @requires_driver
16
+ def _download_file_impl(self, file_name: str, target_directory: str) -> None:
17
+ self._driver_impl.download_file(file_name=file_name, target_directory=target_directory)
18
+
19
+ @contextmanager
20
+ @requires_driver
21
+ def _file_detector_context_impl(self, file_detector_class: Any, *args: Any, **kwargs: Any) -> Generator[None, Any, None]:
22
+ with self._driver_impl.file_detector_context(file_detector_class, *args, **kwargs) as file_detector:
23
+ yield file_detector
24
+
25
+ @requires_driver
26
+ def _file_detector_get_impl(self) -> Any:
27
+ return self._driver_impl.file_detector
28
+
29
+ @requires_driver
30
+ def _file_detector_set_impl(self, value: Any) -> None:
31
+ self._driver_impl.file_detector = value
32
+
33
+ @requires_driver
34
+ def _get_downloadable_files_impl(self) -> List[str]:
35
+ return self._driver_impl.get_downloadable_files()
@@ -0,0 +1,84 @@
1
+ from osn_selenium.models import WindowRect
2
+ from typing import (
3
+ Any,
4
+ Dict,
5
+ Optional,
6
+ Union
7
+ )
8
+ from osn_selenium.flags.models.base import BrowserFlags
9
+ from osn_selenium.webdrivers._decorators import requires_driver
10
+ from selenium.webdriver.remote.remote_connection import RemoteConnection
11
+ from osn_selenium.exceptions.logic import (
12
+ AbstractImplementationError
13
+ )
14
+ from selenium.webdriver.remote.webdriver import (
15
+ WebDriver as legacyWebDriver
16
+ )
17
+ from osn_selenium.webdrivers.unified.core.settings import (
18
+ UnifiedCoreSettingsMixin
19
+ )
20
+ from osn_selenium.webdrivers.unified.core.timeouts import (
21
+ UnifiedCoreTimeoutsMixin
22
+ )
23
+
24
+
25
+ __all__ = ["UnifiedCoreLifecycleMixin"]
26
+
27
+
28
+ class UnifiedCoreLifecycleMixin(UnifiedCoreSettingsMixin, UnifiedCoreTimeoutsMixin):
29
+ def _remote_connect_driver_impl(self, command_executor: Union[str, RemoteConnection]) -> None:
30
+ self._driver = legacyWebDriver(
31
+ command_executor=command_executor,
32
+ options=self._webdriver_flags_manager.options,
33
+ )
34
+
35
+ self._set_driver_timeouts_impl(
36
+ page_load_timeout=self._base_page_load_timeout,
37
+ implicit_wait_timeout=self._base_implicitly_wait,
38
+ script_timeout=self._base_script_timeout,
39
+ )
40
+
41
+ self._is_active = True
42
+
43
+ def _create_driver_impl(self) -> None:
44
+ raise AbstractImplementationError(method_name="_create_driver_impl", class_name=self.__class__.__name__)
45
+
46
+ def _start_webdriver_impl(
47
+ self,
48
+ flags: Optional[BrowserFlags] = None,
49
+ window_rect: Optional[WindowRect] = None,
50
+ ) -> None:
51
+ if self._driver_impl is None:
52
+ self._update_settings_impl(flags=flags, window_rect=window_rect)
53
+ self._create_driver_impl()
54
+
55
+ @requires_driver
56
+ def _quit_impl(self) -> None:
57
+ self._driver_impl.quit()
58
+
59
+ def _close_webdriver_impl(self) -> None:
60
+ if self._driver_impl is not None:
61
+ self._quit_impl()
62
+
63
+ self._driver = None
64
+ self._is_active = False
65
+
66
+ def _restart_webdriver_impl(
67
+ self,
68
+ flags: Optional[BrowserFlags] = None,
69
+ window_rect: Optional[WindowRect] = None,
70
+ ) -> None:
71
+ self._close_webdriver_impl()
72
+ self._start_webdriver_impl(flags=flags, window_rect=window_rect)
73
+
74
+ @requires_driver
75
+ def _start_client_impl(self) -> None:
76
+ self._driver_impl.start_client()
77
+
78
+ @requires_driver
79
+ def _start_session_impl(self, capabilities: Dict[str, Any]) -> None:
80
+ self._driver_impl.start_session(capabilities=capabilities)
81
+
82
+ @requires_driver
83
+ def _stop_client_impl(self) -> None:
84
+ self._driver_impl.stop_client()