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.
- osn_selenium/_functions.py +84 -0
- osn_selenium/_typehints.py +19 -0
- osn_selenium/abstract/executors/cdp/__init__.py +435 -0
- osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
- osn_selenium/abstract/executors/cdp/animation.py +47 -0
- osn_selenium/abstract/executors/cdp/audits.py +39 -0
- osn_selenium/abstract/executors/cdp/autofill.py +34 -0
- osn_selenium/abstract/executors/cdp/background_service.py +22 -0
- osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
- osn_selenium/abstract/executors/cdp/browser.py +122 -0
- osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
- osn_selenium/abstract/executors/cdp/cast.py +31 -0
- osn_selenium/abstract/executors/cdp/console.py +18 -0
- osn_selenium/abstract/executors/cdp/css.py +197 -0
- osn_selenium/abstract/executors/cdp/debugger.py +198 -0
- osn_selenium/abstract/executors/cdp/device_access.py +22 -0
- osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
- osn_selenium/abstract/executors/cdp/dom.py +305 -0
- osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
- osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
- osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
- osn_selenium/abstract/executors/cdp/emulation.py +259 -0
- osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
- osn_selenium/abstract/executors/cdp/extensions.py +31 -0
- osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
- osn_selenium/abstract/executors/cdp/fetch.py +76 -0
- osn_selenium/abstract/executors/cdp/file_system.py +11 -0
- osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
- osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
- osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
- osn_selenium/abstract/executors/cdp/input.py +158 -0
- osn_selenium/abstract/executors/cdp/inspector.py +14 -0
- osn_selenium/abstract/executors/cdp/io.py +24 -0
- osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
- osn_selenium/abstract/executors/cdp/log.py +27 -0
- osn_selenium/abstract/executors/cdp/media.py +14 -0
- osn_selenium/abstract/executors/cdp/memory.py +61 -0
- osn_selenium/abstract/executors/cdp/network.py +252 -0
- osn_selenium/abstract/executors/cdp/overlay.py +166 -0
- osn_selenium/abstract/executors/cdp/page.py +347 -0
- osn_selenium/abstract/executors/cdp/performance.py +28 -0
- osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
- osn_selenium/abstract/executors/cdp/preload.py +14 -0
- osn_selenium/abstract/executors/cdp/profiler.py +54 -0
- osn_selenium/abstract/executors/cdp/pwa.py +46 -0
- osn_selenium/abstract/executors/cdp/runtime.py +176 -0
- osn_selenium/abstract/executors/cdp/schema.py +11 -0
- osn_selenium/abstract/executors/cdp/security.py +26 -0
- osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
- osn_selenium/abstract/executors/cdp/storage.py +175 -0
- osn_selenium/abstract/executors/cdp/system_info.py +24 -0
- osn_selenium/abstract/executors/cdp/target.py +125 -0
- osn_selenium/abstract/executors/cdp/tethering.py +14 -0
- osn_selenium/abstract/executors/cdp/tracing.py +48 -0
- osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
- osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
- osn_selenium/abstract/executors/javascript.py +203 -0
- osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
- osn_selenium/abstract/instances/action_chains/base.py +25 -0
- osn_selenium/abstract/instances/action_chains/click.py +93 -0
- osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
- osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
- osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
- osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
- osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
- osn_selenium/abstract/instances/action_chains/move.py +60 -0
- osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
- osn_selenium/abstract/instances/action_chains/utils.py +44 -0
- osn_selenium/abstract/instances/alert.py +67 -0
- osn_selenium/abstract/instances/browser.py +76 -0
- osn_selenium/abstract/instances/browsing_context.py +310 -0
- osn_selenium/abstract/instances/dialog.py +107 -0
- osn_selenium/abstract/instances/fedcm.py +133 -0
- osn_selenium/abstract/instances/mobile.py +79 -0
- osn_selenium/abstract/instances/network.py +100 -0
- osn_selenium/abstract/instances/permissions.py +52 -0
- osn_selenium/abstract/instances/script.py +109 -0
- osn_selenium/abstract/instances/shadow_root.py +81 -0
- osn_selenium/abstract/instances/storage.py +98 -0
- osn_selenium/abstract/instances/switch_to.py +104 -0
- osn_selenium/abstract/instances/web_driver_wait.py +57 -0
- osn_selenium/abstract/instances/web_element.py +395 -0
- osn_selenium/abstract/instances/web_extension.py +70 -0
- osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
- osn_selenium/abstract/webdriver/blink/base.py +80 -0
- osn_selenium/abstract/webdriver/blink/casting.py +82 -0
- osn_selenium/abstract/webdriver/blink/features.py +51 -0
- osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
- osn_selenium/abstract/webdriver/blink/logging.py +40 -0
- osn_selenium/abstract/webdriver/blink/network.py +45 -0
- osn_selenium/abstract/webdriver/blink/settings.py +68 -0
- osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
- osn_selenium/abstract/webdriver/chrome/base.py +36 -0
- osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
- osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
- osn_selenium/abstract/webdriver/core/__init__.py +16 -0
- osn_selenium/abstract/webdriver/core/actions.py +58 -0
- osn_selenium/abstract/webdriver/core/auth.py +145 -0
- osn_selenium/abstract/webdriver/core/base.py +298 -0
- osn_selenium/abstract/webdriver/core/capture.py +84 -0
- osn_selenium/abstract/webdriver/core/components.py +82 -0
- osn_selenium/abstract/webdriver/core/devtools.py +69 -0
- osn_selenium/abstract/webdriver/core/element.py +55 -0
- osn_selenium/abstract/webdriver/core/file.py +82 -0
- osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
- osn_selenium/abstract/webdriver/core/navigation.py +65 -0
- osn_selenium/abstract/webdriver/core/script.py +88 -0
- osn_selenium/abstract/webdriver/core/settings.py +43 -0
- osn_selenium/abstract/webdriver/core/storage.py +81 -0
- osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
- osn_selenium/abstract/webdriver/core/window.py +237 -0
- osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
- osn_selenium/abstract/webdriver/edge/base.py +36 -0
- osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
- osn_selenium/abstract/webdriver/edge/settings.py +110 -0
- osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
- osn_selenium/abstract/webdriver/yandex/base.py +18 -0
- osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
- osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
- osn_selenium/base_mixin.py +122 -0
- osn_selenium/browsers_handler/__init__.py +47 -17
- osn_selenium/browsers_handler/_linux.py +226 -0
- osn_selenium/browsers_handler/_windows.py +21 -14
- osn_selenium/browsers_handler/{types.py → models.py} +5 -2
- osn_selenium/dev_tools/_decorators.py +140 -0
- osn_selenium/dev_tools/_exception_helpers.py +116 -0
- osn_selenium/dev_tools/_functions.py +174 -0
- osn_selenium/dev_tools/_system_utils.py +35 -0
- osn_selenium/dev_tools/_typehints.py +32 -0
- osn_selenium/dev_tools/_validators.py +227 -0
- osn_selenium/dev_tools/_wrappers.py +95 -0
- osn_selenium/dev_tools/domains/__init__.py +7 -40
- osn_selenium/dev_tools/domains/abstract.py +98 -254
- osn_selenium/dev_tools/domains/fetch.py +229 -906
- osn_selenium/dev_tools/domains_default/fetch.py +40 -28
- osn_selenium/dev_tools/filters.py +40 -0
- osn_selenium/dev_tools/logger/main.py +226 -0
- osn_selenium/dev_tools/logger/models.py +232 -0
- osn_selenium/dev_tools/logger/target.py +258 -0
- osn_selenium/dev_tools/manager/__init__.py +16 -0
- osn_selenium/dev_tools/manager/base.py +147 -0
- osn_selenium/dev_tools/manager/lifecycle.py +236 -0
- osn_selenium/dev_tools/manager/logging.py +153 -0
- osn_selenium/dev_tools/manager/settings.py +89 -0
- osn_selenium/dev_tools/manager/targets.py +175 -0
- osn_selenium/dev_tools/models.py +49 -0
- osn_selenium/dev_tools/settings.py +135 -0
- osn_selenium/dev_tools/target/__init__.py +16 -0
- osn_selenium/dev_tools/target/base.py +438 -0
- osn_selenium/dev_tools/target/detach.py +54 -0
- osn_selenium/dev_tools/target/discovery.py +112 -0
- osn_selenium/dev_tools/target/events.py +120 -0
- osn_selenium/dev_tools/target/fingerprint.py +126 -0
- osn_selenium/dev_tools/target/lifecycle.py +179 -0
- osn_selenium/dev_tools/target/logging.py +155 -0
- osn_selenium/exceptions/__init__.py +1 -0
- osn_selenium/exceptions/base.py +9 -0
- osn_selenium/exceptions/configuration.py +84 -0
- osn_selenium/exceptions/devtools.py +114 -0
- osn_selenium/exceptions/flags.py +45 -0
- osn_selenium/exceptions/instance.py +92 -0
- osn_selenium/exceptions/javascript.py +31 -0
- osn_selenium/exceptions/logic.py +31 -0
- osn_selenium/exceptions/path.py +77 -0
- osn_selenium/exceptions/platform.py +33 -0
- osn_selenium/exceptions/protocol.py +86 -0
- osn_selenium/exceptions/webdriver.py +44 -0
- osn_selenium/exceptions/window.py +63 -0
- osn_selenium/executors/__init__.py +1 -0
- osn_selenium/executors/sync/__init__.py +1 -0
- osn_selenium/executors/sync/cdp/__init__.py +550 -0
- osn_selenium/executors/sync/cdp/accessibility.py +74 -0
- osn_selenium/executors/sync/cdp/animation.py +50 -0
- osn_selenium/executors/sync/cdp/audits.py +48 -0
- osn_selenium/executors/sync/cdp/autofill.py +39 -0
- osn_selenium/executors/sync/cdp/background_service.py +30 -0
- osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
- osn_selenium/executors/sync/cdp/browser.py +131 -0
- osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
- osn_selenium/executors/sync/cdp/cast.py +38 -0
- osn_selenium/executors/sync/cdp/console.py +24 -0
- osn_selenium/executors/sync/cdp/css.py +187 -0
- osn_selenium/executors/sync/cdp/debugger.py +206 -0
- osn_selenium/executors/sync/cdp/device_access.py +27 -0
- osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
- osn_selenium/executors/sync/cdp/dom.py +310 -0
- osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
- osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
- osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
- osn_selenium/executors/sync/cdp/emulation.py +270 -0
- osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
- osn_selenium/executors/sync/cdp/extensions.py +39 -0
- osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
- osn_selenium/executors/sync/cdp/fetch.py +96 -0
- osn_selenium/executors/sync/cdp/file_system.py +18 -0
- osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
- osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
- osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
- osn_selenium/executors/sync/cdp/input.py +233 -0
- osn_selenium/executors/sync/cdp/inspector.py +21 -0
- osn_selenium/executors/sync/cdp/io.py +33 -0
- osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
- osn_selenium/executors/sync/cdp/log.py +35 -0
- osn_selenium/executors/sync/cdp/media.py +21 -0
- osn_selenium/executors/sync/cdp/memory.py +62 -0
- osn_selenium/executors/sync/cdp/network.py +287 -0
- osn_selenium/executors/sync/cdp/overlay.py +174 -0
- osn_selenium/executors/sync/cdp/page.py +365 -0
- osn_selenium/executors/sync/cdp/performance.py +33 -0
- osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
- osn_selenium/executors/sync/cdp/preload.py +21 -0
- osn_selenium/executors/sync/cdp/profiler.py +58 -0
- osn_selenium/executors/sync/cdp/pwa.py +55 -0
- osn_selenium/executors/sync/cdp/runtime.py +221 -0
- osn_selenium/executors/sync/cdp/schema.py +23 -0
- osn_selenium/executors/sync/cdp/security.py +30 -0
- osn_selenium/executors/sync/cdp/service_worker.py +56 -0
- osn_selenium/executors/sync/cdp/storage.py +151 -0
- osn_selenium/executors/sync/cdp/system_info.py +30 -0
- osn_selenium/executors/sync/cdp/target.py +147 -0
- osn_selenium/executors/sync/cdp/tethering.py +21 -0
- osn_selenium/executors/sync/cdp/tracing.py +62 -0
- osn_selenium/executors/sync/cdp/web_audio.py +24 -0
- osn_selenium/executors/sync/cdp/web_authn.py +82 -0
- osn_selenium/executors/sync/javascript.py +79 -0
- osn_selenium/executors/trio_threads/__init__.py +1 -0
- osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
- osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
- osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
- osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
- osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
- osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
- osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
- osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
- osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
- osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
- osn_selenium/executors/trio_threads/cdp/console.py +33 -0
- osn_selenium/executors/trio_threads/cdp/css.py +196 -0
- osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
- osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
- osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
- osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
- osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
- osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
- osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
- osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
- osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
- osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
- osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
- osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
- osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
- osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
- osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
- osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
- osn_selenium/executors/trio_threads/cdp/input.py +242 -0
- osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
- osn_selenium/executors/trio_threads/cdp/io.py +42 -0
- osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
- osn_selenium/executors/trio_threads/cdp/log.py +44 -0
- osn_selenium/executors/trio_threads/cdp/media.py +30 -0
- osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
- osn_selenium/executors/trio_threads/cdp/network.py +296 -0
- osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
- osn_selenium/executors/trio_threads/cdp/page.py +374 -0
- osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
- osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
- osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
- osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
- osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
- osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
- osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
- osn_selenium/executors/trio_threads/cdp/security.py +43 -0
- osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
- osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
- osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
- osn_selenium/executors/trio_threads/cdp/target.py +156 -0
- osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
- osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
- osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
- osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
- osn_selenium/executors/trio_threads/javascript.py +90 -0
- osn_selenium/executors/unified/__init__.py +1 -0
- osn_selenium/executors/unified/cdp/__init__.py +1 -0
- osn_selenium/executors/unified/cdp/accessibility.py +81 -0
- osn_selenium/executors/unified/cdp/animation.py +50 -0
- osn_selenium/executors/unified/cdp/audits.py +45 -0
- osn_selenium/executors/unified/cdp/autofill.py +41 -0
- osn_selenium/executors/unified/cdp/background_service.py +24 -0
- osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
- osn_selenium/executors/unified/cdp/browser.py +143 -0
- osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
- osn_selenium/executors/unified/cdp/cast.py +32 -0
- osn_selenium/executors/unified/cdp/console.py +18 -0
- osn_selenium/executors/unified/cdp/css.py +237 -0
- osn_selenium/executors/unified/cdp/debugger.py +243 -0
- osn_selenium/executors/unified/cdp/device_access.py +21 -0
- osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
- osn_selenium/executors/unified/cdp/dom.py +380 -0
- osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
- osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
- osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
- osn_selenium/executors/unified/cdp/emulation.py +312 -0
- osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
- osn_selenium/executors/unified/cdp/extensions.py +45 -0
- osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
- osn_selenium/executors/unified/cdp/fetch.py +111 -0
- osn_selenium/executors/unified/cdp/file_system.py +15 -0
- osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
- osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
- osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
- osn_selenium/executors/unified/cdp/input.py +254 -0
- osn_selenium/executors/unified/cdp/inspector.py +15 -0
- osn_selenium/executors/unified/cdp/io.py +29 -0
- osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
- osn_selenium/executors/unified/cdp/log.py +29 -0
- osn_selenium/executors/unified/cdp/media.py +15 -0
- osn_selenium/executors/unified/cdp/memory.py +59 -0
- osn_selenium/executors/unified/cdp/network.py +323 -0
- osn_selenium/executors/unified/cdp/overlay.py +209 -0
- osn_selenium/executors/unified/cdp/page.py +410 -0
- osn_selenium/executors/unified/cdp/performance.py +27 -0
- osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
- osn_selenium/executors/unified/cdp/preload.py +15 -0
- osn_selenium/executors/unified/cdp/profiler.py +55 -0
- osn_selenium/executors/unified/cdp/pwa.py +55 -0
- osn_selenium/executors/unified/cdp/runtime.py +245 -0
- osn_selenium/executors/unified/cdp/schema.py +17 -0
- osn_selenium/executors/unified/cdp/security.py +27 -0
- osn_selenium/executors/unified/cdp/service_worker.py +62 -0
- osn_selenium/executors/unified/cdp/storage.py +178 -0
- osn_selenium/executors/unified/cdp/system_info.py +24 -0
- osn_selenium/executors/unified/cdp/target.py +165 -0
- osn_selenium/executors/unified/cdp/tethering.py +15 -0
- osn_selenium/executors/unified/cdp/tracing.py +62 -0
- osn_selenium/executors/unified/cdp/web_audio.py +18 -0
- osn_selenium/executors/unified/cdp/web_authn.py +103 -0
- osn_selenium/executors/unified/javascript.py +108 -0
- osn_selenium/flags/__init__.py +1 -0
- osn_selenium/flags/_functions.py +45 -0
- osn_selenium/flags/_typehints.py +34 -0
- osn_selenium/flags/_validators.py +101 -0
- osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +165 -243
- osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +133 -371
- osn_selenium/flags/chrome.py +259 -0
- osn_selenium/flags/edge.py +259 -0
- osn_selenium/flags/models/__init__.py +1 -0
- osn_selenium/flags/models/base.py +130 -0
- osn_selenium/flags/models/blink.py +263 -0
- osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
- osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
- osn_selenium/flags/models/values.py +44 -0
- osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
- osn_selenium/flags/yandex.py +259 -0
- osn_selenium/instances/__init__.py +1 -0
- osn_selenium/instances/_functions.py +242 -0
- osn_selenium/instances/_typehints.py +148 -0
- osn_selenium/instances/_utils.py +143 -0
- osn_selenium/instances/convert.py +287 -0
- osn_selenium/instances/protocols.py +105 -0
- osn_selenium/instances/sync/__init__.py +1 -0
- osn_selenium/instances/sync/action_chains/__init__.py +26 -0
- osn_selenium/instances/sync/action_chains/base.py +74 -0
- osn_selenium/instances/sync/action_chains/click.py +61 -0
- osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
- osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
- osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
- osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
- osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
- osn_selenium/instances/sync/action_chains/move.py +46 -0
- osn_selenium/instances/sync/action_chains/scroll.py +43 -0
- osn_selenium/instances/sync/action_chains/utils.py +30 -0
- osn_selenium/instances/sync/alert.py +69 -0
- osn_selenium/instances/sync/browser.py +72 -0
- osn_selenium/instances/sync/browsing_context.py +193 -0
- osn_selenium/instances/sync/dialog.py +81 -0
- osn_selenium/instances/sync/fedcm.py +92 -0
- osn_selenium/instances/sync/mobile.py +75 -0
- osn_selenium/instances/sync/network.py +90 -0
- osn_selenium/instances/sync/permissions.py +80 -0
- osn_selenium/instances/sync/script.py +77 -0
- osn_selenium/instances/sync/shadow_root.py +91 -0
- osn_selenium/instances/sync/storage.py +91 -0
- osn_selenium/instances/sync/switch_to.py +92 -0
- osn_selenium/instances/sync/web_driver_wait.py +83 -0
- osn_selenium/instances/sync/web_element.py +179 -0
- osn_selenium/instances/sync/web_extension.py +77 -0
- osn_selenium/instances/trio_threads/__init__.py +1 -0
- osn_selenium/instances/trio_threads/action_chains/__init__.py +26 -0
- osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
- osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
- osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
- osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
- osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
- osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
- osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
- osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
- osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
- osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
- osn_selenium/instances/trio_threads/alert.py +87 -0
- osn_selenium/instances/trio_threads/browser.py +90 -0
- osn_selenium/instances/trio_threads/browsing_context.py +216 -0
- osn_selenium/instances/trio_threads/dialog.py +99 -0
- osn_selenium/instances/trio_threads/fedcm.py +110 -0
- osn_selenium/instances/trio_threads/mobile.py +93 -0
- osn_selenium/instances/trio_threads/network.py +108 -0
- osn_selenium/instances/trio_threads/permissions.py +102 -0
- osn_selenium/instances/trio_threads/script.py +95 -0
- osn_selenium/instances/trio_threads/shadow_root.py +123 -0
- osn_selenium/instances/trio_threads/storage.py +109 -0
- osn_selenium/instances/trio_threads/switch_to.py +124 -0
- osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
- osn_selenium/instances/trio_threads/web_element.py +217 -0
- osn_selenium/instances/trio_threads/web_extension.py +99 -0
- osn_selenium/instances/unified/__init__.py +1 -0
- osn_selenium/instances/unified/action_chains/__init__.py +22 -0
- osn_selenium/instances/unified/action_chains/base.py +31 -0
- osn_selenium/instances/unified/action_chains/click.py +27 -0
- osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
- osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
- osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
- osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
- osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
- osn_selenium/instances/unified/action_chains/move.py +24 -0
- osn_selenium/instances/unified/action_chains/scroll.py +21 -0
- osn_selenium/instances/unified/action_chains/utils.py +19 -0
- osn_selenium/instances/unified/alert.py +29 -0
- osn_selenium/instances/unified/browser.py +33 -0
- osn_selenium/instances/unified/browsing_context.py +151 -0
- osn_selenium/instances/unified/dialog.py +42 -0
- osn_selenium/instances/unified/fedcm.py +48 -0
- osn_selenium/instances/unified/mobile.py +36 -0
- osn_selenium/instances/unified/network.py +50 -0
- osn_selenium/instances/unified/permissions.py +43 -0
- osn_selenium/instances/unified/script.py +38 -0
- osn_selenium/instances/unified/shadow_root.py +46 -0
- osn_selenium/instances/unified/storage.py +48 -0
- osn_selenium/instances/unified/switch_to.py +49 -0
- osn_selenium/instances/unified/web_driver_wait.py +45 -0
- osn_selenium/instances/unified/web_element.py +145 -0
- osn_selenium/instances/unified/web_extension.py +38 -0
- osn_selenium/javascript/__init__.py +1 -0
- osn_selenium/javascript/_functions.py +63 -0
- osn_selenium/javascript/fingerprint/__init__.py +120 -0
- osn_selenium/javascript/fingerprint/_decorators.py +41 -0
- osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
- osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
- osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
- osn_selenium/javascript/fingerprint/_functions.py +35 -0
- osn_selenium/javascript/fingerprint/_typehints.py +27 -0
- osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
- osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
- osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
- osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
- osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
- osn_selenium/javascript/fingerprint/registry/models.py +41 -0
- osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
- osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
- osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
- osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
- osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
- osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
- osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
- osn_selenium/javascript/functions.py +44 -0
- osn_selenium/javascript/models.py +35 -0
- osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
- osn_selenium/models.py +139 -0
- osn_selenium/webdrivers/_args_helpers.py +181 -0
- osn_selenium/webdrivers/_bridges.py +57 -0
- osn_selenium/webdrivers/_decorators.py +83 -0
- osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
- osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
- osn_selenium/webdrivers/_executable_tables/models.py +19 -0
- osn_selenium/webdrivers/_typehints.py +10 -0
- osn_selenium/webdrivers/protocols.py +50 -0
- osn_selenium/webdrivers/sync/__init__.py +1 -0
- osn_selenium/webdrivers/sync/blink/__init__.py +114 -0
- osn_selenium/webdrivers/sync/blink/base.py +128 -0
- osn_selenium/webdrivers/sync/blink/casting.py +34 -0
- osn_selenium/webdrivers/sync/blink/features.py +28 -0
- osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
- osn_selenium/webdrivers/sync/blink/logging.py +25 -0
- osn_selenium/webdrivers/sync/blink/network.py +28 -0
- osn_selenium/webdrivers/sync/blink/settings.py +63 -0
- osn_selenium/webdrivers/sync/chrome/__init__.py +67 -0
- osn_selenium/webdrivers/sync/chrome/base.py +106 -0
- osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
- osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
- osn_selenium/webdrivers/sync/core/__init__.py +91 -0
- osn_selenium/webdrivers/sync/core/actions.py +59 -0
- osn_selenium/webdrivers/sync/core/auth.py +77 -0
- osn_selenium/webdrivers/sync/core/base.py +167 -0
- osn_selenium/webdrivers/sync/core/capture.py +37 -0
- osn_selenium/webdrivers/sync/core/comonents.py +57 -0
- osn_selenium/webdrivers/sync/core/devtools.py +47 -0
- osn_selenium/webdrivers/sync/core/element.py +42 -0
- osn_selenium/webdrivers/sync/core/file.py +40 -0
- osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
- osn_selenium/webdrivers/sync/core/navigation.py +36 -0
- osn_selenium/webdrivers/sync/core/script.py +53 -0
- osn_selenium/webdrivers/sync/core/settings.py +35 -0
- osn_selenium/webdrivers/sync/core/storage.py +48 -0
- osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
- osn_selenium/webdrivers/sync/core/window.py +99 -0
- osn_selenium/webdrivers/sync/edge/__init__.py +67 -0
- osn_selenium/webdrivers/sync/edge/base.py +102 -0
- osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
- osn_selenium/webdrivers/sync/edge/settings.py +58 -0
- osn_selenium/webdrivers/sync/yandex/__init__.py +67 -0
- osn_selenium/webdrivers/sync/yandex/base.py +99 -0
- osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
- osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
- osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
- osn_selenium/webdrivers/trio_threads/blink/__init__.py +124 -0
- osn_selenium/webdrivers/trio_threads/blink/base.py +133 -0
- osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
- osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
- osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
- osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
- osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
- osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/chrome/__init__.py +81 -0
- osn_selenium/webdrivers/trio_threads/chrome/base.py +107 -0
- osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
- osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/core/__init__.py +109 -0
- osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
- osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
- osn_selenium/webdrivers/trio_threads/core/base.py +191 -0
- osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
- osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
- osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
- osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
- osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
- osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
- osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
- osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
- osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
- osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
- osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
- osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
- osn_selenium/webdrivers/trio_threads/edge/__init__.py +81 -0
- osn_selenium/webdrivers/trio_threads/edge/base.py +103 -0
- osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
- osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/yandex/__init__.py +81 -0
- osn_selenium/webdrivers/trio_threads/yandex/base.py +100 -0
- osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
- osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
- osn_selenium/webdrivers/unified/__init__.py +1 -0
- osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
- osn_selenium/webdrivers/unified/blink/base.py +131 -0
- osn_selenium/webdrivers/unified/blink/casting.py +30 -0
- osn_selenium/webdrivers/unified/blink/features.py +22 -0
- osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
- osn_selenium/webdrivers/unified/blink/logging.py +18 -0
- osn_selenium/webdrivers/unified/blink/network.py +22 -0
- osn_selenium/webdrivers/unified/blink/settings.py +86 -0
- osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
- osn_selenium/webdrivers/unified/chrome/base.py +54 -0
- osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
- osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
- osn_selenium/webdrivers/unified/core/__init__.py +1 -0
- osn_selenium/webdrivers/unified/core/actions.py +43 -0
- osn_selenium/webdrivers/unified/core/auth.py +70 -0
- osn_selenium/webdrivers/unified/core/base.py +132 -0
- osn_selenium/webdrivers/unified/core/capture.py +32 -0
- osn_selenium/webdrivers/unified/core/components.py +32 -0
- osn_selenium/webdrivers/unified/core/devtools.py +35 -0
- osn_selenium/webdrivers/unified/core/element.py +24 -0
- osn_selenium/webdrivers/unified/core/file.py +35 -0
- osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
- osn_selenium/webdrivers/unified/core/navigation.py +31 -0
- osn_selenium/webdrivers/unified/core/script.py +32 -0
- osn_selenium/webdrivers/unified/core/settings.py +44 -0
- osn_selenium/webdrivers/unified/core/storage.py +37 -0
- osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
- osn_selenium/webdrivers/unified/core/window.py +135 -0
- osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
- osn_selenium/webdrivers/unified/edge/base.py +52 -0
- osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
- osn_selenium/webdrivers/unified/edge/settings.py +48 -0
- osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
- osn_selenium/webdrivers/unified/yandex/base.py +54 -0
- osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
- osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
- osn_selenium-1.0.0.dist-info/METADATA +239 -0
- osn_selenium-1.0.0.dist-info/RECORD +608 -0
- {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/WHEEL +1 -1
- osn_selenium/captcha_workers/__init__.py +0 -26
- osn_selenium/dev_tools/_types.py +0 -22
- osn_selenium/dev_tools/errors.py +0 -89
- osn_selenium/dev_tools/logger.py +0 -558
- osn_selenium/dev_tools/manager.py +0 -1551
- osn_selenium/dev_tools/utils.py +0 -509
- osn_selenium/errors.py +0 -16
- osn_selenium/types.py +0 -118
- osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
- osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
- osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
- osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
- osn_selenium/webdrivers/Blink/protocols.py +0 -330
- osn_selenium/webdrivers/Blink/webdriver.py +0 -637
- osn_selenium/webdrivers/Chrome/protocols.py +0 -228
- osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
- osn_selenium/webdrivers/Edge/protocols.py +0 -228
- osn_selenium/webdrivers/Edge/webdriver.py +0 -394
- osn_selenium/webdrivers/Yandex/protocols.py +0 -211
- osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
- osn_selenium/webdrivers/_functions.py +0 -504
- osn_selenium/webdrivers/types.py +0 -390
- osn_selenium-0.0.0.dist-info/METADATA +0 -710
- osn_selenium-0.0.0.dist-info/RECORD +0 -57
- /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
- {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import trio
|
|
2
|
+
from typing import Optional, Type
|
|
3
|
+
from osn_selenium.models import WindowRect
|
|
4
|
+
from osn_selenium.flags.models.yandex import YandexFlags
|
|
5
|
+
from osn_selenium.flags.yandex import YandexFlagsManager
|
|
6
|
+
from osn_selenium.webdrivers.trio_threads.chrome.base import ChromeBaseMixin
|
|
7
|
+
from osn_selenium._typehints import (
|
|
8
|
+
ARCHITECTURES_TYPEHINT,
|
|
9
|
+
PATH_TYPEHINT
|
|
10
|
+
)
|
|
11
|
+
from osn_selenium.webdrivers.unified.yandex.base import (
|
|
12
|
+
UnifiedYandexBaseMixin
|
|
13
|
+
)
|
|
14
|
+
from osn_selenium.abstract.webdriver.yandex.base import (
|
|
15
|
+
AbstractYandexBaseMixin
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
__all__ = ["YandexBaseMixin"]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class YandexBaseMixin(UnifiedYandexBaseMixin, ChromeBaseMixin, AbstractYandexBaseMixin):
|
|
23
|
+
"""
|
|
24
|
+
Base mixin for Yandex WebDrivers handling core initialization and state management.
|
|
25
|
+
|
|
26
|
+
This class serves as the foundation for browser-specific implementations, managing
|
|
27
|
+
the WebDriver executable path, configuration flags, timeouts, and the active
|
|
28
|
+
driver instance.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
def __init__(
|
|
32
|
+
self,
|
|
33
|
+
webdriver_path: str,
|
|
34
|
+
architecture: ARCHITECTURES_TYPEHINT,
|
|
35
|
+
flags_manager_type: Type[YandexFlagsManager] = YandexFlagsManager,
|
|
36
|
+
use_browser_exe: bool = True,
|
|
37
|
+
browser_name_in_system: str = "Yandex",
|
|
38
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
39
|
+
flags: Optional[YandexFlags] = None,
|
|
40
|
+
start_page_url: str = "about:blank",
|
|
41
|
+
implicitly_wait: int = 5,
|
|
42
|
+
page_load_timeout: int = 5,
|
|
43
|
+
script_timeout: int = 5,
|
|
44
|
+
window_rect: Optional[WindowRect] = None,
|
|
45
|
+
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
46
|
+
):
|
|
47
|
+
"""
|
|
48
|
+
Initializes the Trio-based Yandex WebDriver mixin.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
webdriver_path (str): Path to the YandexDriver executable.
|
|
52
|
+
architecture (ARCHITECTURE_TYPEHINT): System architecture.
|
|
53
|
+
flags_manager_type (Type[YandexFlagsManager]): The class type used for managing Yandex flags.
|
|
54
|
+
Defaults to YandexFlagsManager.
|
|
55
|
+
use_browser_exe (bool): Whether to use a specific browser executable path or auto-detect.
|
|
56
|
+
Defaults to True.
|
|
57
|
+
browser_name_in_system (str): The name of the browser in the system registry or path.
|
|
58
|
+
Defaults to "Yandex".
|
|
59
|
+
browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Yandex browser executable.
|
|
60
|
+
flags (Optional[YandexFlags]): Initial set of flags.
|
|
61
|
+
start_page_url (str): The initial URL. Defaults to "about:blank".
|
|
62
|
+
implicitly_wait (int): Default implicit wait time.
|
|
63
|
+
page_load_timeout (int): Default page load timeout.
|
|
64
|
+
script_timeout (int): Default script timeout.
|
|
65
|
+
window_rect (Optional[WindowRect]): Initial window dimensions.
|
|
66
|
+
capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
ChromeBaseMixin.__init__(
|
|
70
|
+
self,
|
|
71
|
+
browser_exe=browser_exe,
|
|
72
|
+
browser_name_in_system=browser_name_in_system,
|
|
73
|
+
use_browser_exe=use_browser_exe,
|
|
74
|
+
webdriver_path=webdriver_path,
|
|
75
|
+
architecture=architecture,
|
|
76
|
+
flags_manager_type=flags_manager_type,
|
|
77
|
+
flags=flags,
|
|
78
|
+
start_page_url=start_page_url,
|
|
79
|
+
implicitly_wait=implicitly_wait,
|
|
80
|
+
page_load_timeout=page_load_timeout,
|
|
81
|
+
script_timeout=script_timeout,
|
|
82
|
+
window_rect=window_rect,
|
|
83
|
+
capacity_limiter=capacity_limiter,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
UnifiedYandexBaseMixin.__init__(
|
|
87
|
+
self,
|
|
88
|
+
webdriver_path=webdriver_path,
|
|
89
|
+
architecture=architecture,
|
|
90
|
+
flags_manager_type=flags_manager_type,
|
|
91
|
+
use_browser_exe=use_browser_exe,
|
|
92
|
+
browser_name_in_system=browser_name_in_system,
|
|
93
|
+
browser_exe=browser_exe,
|
|
94
|
+
flags=flags,
|
|
95
|
+
start_page_url=start_page_url,
|
|
96
|
+
implicitly_wait=implicitly_wait,
|
|
97
|
+
page_load_timeout=page_load_timeout,
|
|
98
|
+
script_timeout=script_timeout,
|
|
99
|
+
window_rect=window_rect,
|
|
100
|
+
)
|
|
@@ -0,0 +1,63 @@
|
|
|
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.yandex import YandexFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_threads.chrome import ChromeLifecycleMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.yandex.lifecycle import (
|
|
7
|
+
UnifiedYandexLifecycleMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.yandex.lifecycle import (
|
|
10
|
+
AbstractYandexLifecycleMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["YandexLifecycleMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class YandexLifecycleMixin(
|
|
18
|
+
UnifiedYandexLifecycleMixin,
|
|
19
|
+
ChromeLifecycleMixin,
|
|
20
|
+
AbstractYandexLifecycleMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for managing the lifecycle of the Yandex WebDriver.
|
|
24
|
+
|
|
25
|
+
Handles the creation, startup, shutdown, and restarting processes of the
|
|
26
|
+
underlying browser instance, ensuring clean session management.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
async def restart_webdriver(
|
|
30
|
+
self,
|
|
31
|
+
flags: Optional[YandexFlags] = None,
|
|
32
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
33
|
+
browser_name_in_system: Optional[str] = None,
|
|
34
|
+
use_browser_exe: Optional[bool] = None,
|
|
35
|
+
start_page_url: Optional[str] = None,
|
|
36
|
+
window_rect: Optional[WindowRect] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
|
|
39
|
+
flags=flags,
|
|
40
|
+
browser_exe=browser_exe,
|
|
41
|
+
browser_name_in_system=browser_name_in_system,
|
|
42
|
+
use_browser_exe=use_browser_exe,
|
|
43
|
+
start_page_url=start_page_url,
|
|
44
|
+
window_rect=window_rect,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
async def start_webdriver(
|
|
48
|
+
self,
|
|
49
|
+
flags: Optional[YandexFlags] = None,
|
|
50
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
51
|
+
browser_name_in_system: Optional[str] = None,
|
|
52
|
+
use_browser_exe: Optional[bool] = None,
|
|
53
|
+
start_page_url: Optional[str] = None,
|
|
54
|
+
window_rect: Optional[WindowRect] = None,
|
|
55
|
+
) -> None:
|
|
56
|
+
await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
|
|
57
|
+
flags=flags,
|
|
58
|
+
browser_exe=browser_exe,
|
|
59
|
+
browser_name_in_system=browser_name_in_system,
|
|
60
|
+
use_browser_exe=use_browser_exe,
|
|
61
|
+
start_page_url=start_page_url,
|
|
62
|
+
window_rect=window_rect,
|
|
63
|
+
)
|
|
@@ -0,0 +1,63 @@
|
|
|
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.yandex import YandexFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_threads.chrome import ChromeSettingsMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.yandex.settings import (
|
|
7
|
+
UnifiedYandexSettingsMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.yandex.settings import (
|
|
10
|
+
AbstractYandexSettingsMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["YandexSettingsMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class YandexSettingsMixin(
|
|
18
|
+
UnifiedYandexSettingsMixin,
|
|
19
|
+
ChromeSettingsMixin,
|
|
20
|
+
AbstractYandexSettingsMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for configuring and updating settings of the Yandex WebDriver.
|
|
24
|
+
|
|
25
|
+
Provides methods to modify browser flags, window rectangles, and other
|
|
26
|
+
configuration parameters either before startup or during a reset.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
async def reset_settings(
|
|
30
|
+
self,
|
|
31
|
+
flags: Optional[YandexFlags] = None,
|
|
32
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
33
|
+
browser_name_in_system: Optional[str] = None,
|
|
34
|
+
use_browser_exe: Optional[bool] = None,
|
|
35
|
+
start_page_url: str = "",
|
|
36
|
+
window_rect: Optional[WindowRect] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._reset_settings_impl)(
|
|
39
|
+
flags=flags,
|
|
40
|
+
browser_exe=browser_exe,
|
|
41
|
+
browser_name_in_system=browser_name_in_system,
|
|
42
|
+
use_browser_exe=use_browser_exe,
|
|
43
|
+
start_page_url=start_page_url,
|
|
44
|
+
window_rect=window_rect,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
async def update_settings(
|
|
48
|
+
self,
|
|
49
|
+
flags: Optional[YandexFlags] = None,
|
|
50
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
51
|
+
browser_name_in_system: Optional[str] = None,
|
|
52
|
+
use_browser_exe: Optional[bool] = None,
|
|
53
|
+
start_page_url: Optional[str] = None,
|
|
54
|
+
window_rect: Optional[WindowRect] = None,
|
|
55
|
+
) -> None:
|
|
56
|
+
await self.sync_to_trio(sync_function=self._update_settings_impl)(
|
|
57
|
+
flags=flags,
|
|
58
|
+
browser_exe=browser_exe,
|
|
59
|
+
browser_name_in_system=browser_name_in_system,
|
|
60
|
+
use_browser_exe=use_browser_exe,
|
|
61
|
+
start_page_url=start_page_url,
|
|
62
|
+
window_rect=window_rect,
|
|
63
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import pathlib
|
|
2
|
+
from typing import 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
|
+
):
|
|
48
|
+
UnifiedCoreBaseMixin.__init__(
|
|
49
|
+
self,
|
|
50
|
+
webdriver_path=webdriver_path,
|
|
51
|
+
architecture=architecture,
|
|
52
|
+
flags_manager_type=flags_manager_type,
|
|
53
|
+
flags=flags,
|
|
54
|
+
implicitly_wait=implicitly_wait,
|
|
55
|
+
page_load_timeout=page_load_timeout,
|
|
56
|
+
script_timeout=script_timeout,
|
|
57
|
+
window_rect=window_rect,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
if browser_exe is not None:
|
|
61
|
+
self._webdriver_flags_manager.browser_exe = browser_exe
|
|
62
|
+
|
|
63
|
+
if start_page_url is not None:
|
|
64
|
+
self._webdriver_flags_manager.start_page_url = start_page_url
|
|
65
|
+
|
|
66
|
+
if window_rect is not None:
|
|
67
|
+
self._window_rect = window_rect
|
|
68
|
+
|
|
69
|
+
if use_browser_exe is not None and browser_name_in_system is not None:
|
|
70
|
+
self._detect_browser_exe_impl(
|
|
71
|
+
browser_name_in_system=browser_name_in_system,
|
|
72
|
+
use_browser_exe=use_browser_exe
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
def _detect_browser_exe_impl(self, browser_name_in_system: str, use_browser_exe: bool) -> None:
|
|
76
|
+
if self._browser_exe_impl is None and use_browser_exe:
|
|
77
|
+
self._webdriver_flags_manager.browser_exe = get_path_to_browser(browser_name_in_system)
|
|
78
|
+
elif self._browser_exe_impl is not None and not use_browser_exe:
|
|
79
|
+
self._webdriver_flags_manager.browser_exe = None
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def _debugging_ip_impl(self) -> Optional[str]:
|
|
83
|
+
return self._webdriver_flags_manager.arguments.get("remote_debugging_address", ArgumentValue(command_line="", value=None)).value
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def _driver_impl(self) -> Optional[legacyWebDriver]:
|
|
87
|
+
return super()._driver_impl
|
|
88
|
+
|
|
89
|
+
@property
|
|
90
|
+
def _debugging_port_impl(self) -> Optional[int]:
|
|
91
|
+
return self._webdriver_flags_manager.arguments.get("remote_debugging_port", ArgumentValue(command_line="", value=None)).value
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def _browser_exe_impl(self) -> Optional[pathlib.Path]:
|
|
95
|
+
return self._webdriver_flags_manager.browser_exe
|
|
96
|
+
|
|
97
|
+
def _find_debugging_port_impl(self, debugging_port: Optional[int]) -> int:
|
|
98
|
+
if self._browser_exe_impl is not None:
|
|
99
|
+
user_data_dir_command = self._webdriver_flags_manager.flags_definitions.get("user_data_dir", None)
|
|
100
|
+
user_data_dir_value = self._webdriver_flags_manager.arguments.get("user_data_dir", None)
|
|
101
|
+
|
|
102
|
+
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
|
|
103
|
+
|
|
104
|
+
if user_data_dir_command is not None:
|
|
105
|
+
previous_session = find_browser_previous_session(self._browser_exe_impl, user_data_dir_command.command, user_data_dir)
|
|
106
|
+
|
|
107
|
+
if previous_session is not None:
|
|
108
|
+
return previous_session
|
|
109
|
+
|
|
110
|
+
if debugging_port is not None:
|
|
111
|
+
return get_localhost_free_port_of(ports_to_check=debugging_port, on_candidates="min")
|
|
112
|
+
|
|
113
|
+
if self._debugging_port_impl is None or self._debugging_port_impl == 0:
|
|
114
|
+
return get_random_localhost_free_port()
|
|
115
|
+
|
|
116
|
+
return self._debugging_port_impl
|
|
117
|
+
|
|
118
|
+
def _set_debugging_port_impl(self, debugging_port: Optional[int], debugging_address: Optional[str]) -> None:
|
|
119
|
+
if self._browser_exe_impl is not None:
|
|
120
|
+
_debugging_address = "127.0.0.1" if debugging_address is None else debugging_address
|
|
121
|
+
_debugging_port = 0 if debugging_port is None else debugging_port
|
|
122
|
+
|
|
123
|
+
self._webdriver_flags_manager.update_flags(
|
|
124
|
+
BlinkFlags(
|
|
125
|
+
argument=BlinkArguments(
|
|
126
|
+
remote_debugging_port=debugging_port,
|
|
127
|
+
remote_debugging_address=debugging_address,
|
|
128
|
+
),
|
|
129
|
+
experimental_option=BlinkExperimentalOptions(debugger_address=f"{_debugging_address}:{_debugging_port}"),
|
|
130
|
+
)
|
|
131
|
+
)
|
|
@@ -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 @@
|
|
|
1
|
+
|