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,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 @@
|
|
|
1
|
+
|
|
@@ -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()
|