osn-selenium 0.0.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- osn_selenium/_base_models.py +41 -0
- osn_selenium/_cdp_import.py +253 -0
- 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/cdp.py +63 -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 +149 -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 +35 -0
- osn_selenium/dev_tools/_validators.py +227 -0
- osn_selenium/dev_tools/_wrappers.py +92 -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 +214 -0
- osn_selenium/dev_tools/logger/models.py +232 -0
- osn_selenium/dev_tools/logger/target.py +278 -0
- osn_selenium/dev_tools/manager/__init__.py +16 -0
- osn_selenium/dev_tools/manager/base.py +124 -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 +139 -0
- osn_selenium/dev_tools/target/__init__.py +16 -0
- osn_selenium/dev_tools/target/base.py +427 -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 +184 -0
- osn_selenium/dev_tools/target/logging.py +163 -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/dependencies.py +60 -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/cdp.py +100 -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/cdp.py +104 -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 +104 -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} +159 -245
- osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +130 -374
- 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 +32 -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 +113 -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 +32 -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 +154 -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 +94 -0
- osn_selenium/trio_threads_mixin.py +159 -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 +124 -0
- osn_selenium/webdrivers/sync/blink/base.py +140 -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 +102 -0
- osn_selenium/webdrivers/sync/chrome/base.py +118 -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 +100 -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 +175 -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 +102 -0
- osn_selenium/webdrivers/sync/edge/base.py +114 -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 +102 -0
- osn_selenium/webdrivers/sync/yandex/base.py +111 -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 +134 -0
- osn_selenium/webdrivers/trio_threads/blink/base.py +143 -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 +114 -0
- osn_selenium/webdrivers/trio_threads/chrome/base.py +119 -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 +115 -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 +199 -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 +114 -0
- osn_selenium/webdrivers/trio_threads/edge/base.py +115 -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 +114 -0
- osn_selenium/webdrivers/trio_threads/yandex/base.py +112 -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 +135 -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 +58 -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 +139 -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 +56 -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 +58 -0
- osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
- osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
- osn_selenium-1.1.0.dist-info/METADATA +252 -0
- osn_selenium-1.1.0.dist-info/RECORD +615 -0
- {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.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.1.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.models import Point
|
|
3
|
+
from osn_selenium.instances._functions import scroll_to_parts
|
|
4
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
5
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
6
|
+
from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
|
|
7
|
+
from osn_selenium.instances.unified.action_chains.utils import UnifiedUtilsMixin
|
|
8
|
+
from osn_selenium.instances.unified.action_chains.scroll import UnifiedScrollMixin
|
|
9
|
+
from selenium.webdriver.common.action_chains import (
|
|
10
|
+
ActionChains as legacyActionChains
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["UnifiedHMScrollMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class UnifiedHMScrollMixin(UnifiedUtilsMixin, UnifiedScrollMixin):
|
|
18
|
+
def _hm_scroll_from_origin_impl(self, delta_x: int, delta_y: int, origin: Optional[ScrollOrigin] = None) -> legacyActionChains:
|
|
19
|
+
if origin is None:
|
|
20
|
+
viewport_size = self._js_executor._get_viewport_size_impl()
|
|
21
|
+
|
|
22
|
+
origin_x = 0 if delta_x >= 0 else viewport_size.width
|
|
23
|
+
origin_y = 0 if delta_y >= 0 else viewport_size.height
|
|
24
|
+
|
|
25
|
+
origin = ScrollOrigin.from_viewport(x_offset=origin_x, y_offset=origin_y)
|
|
26
|
+
|
|
27
|
+
start = Point(x=int(origin.x_offset), y=int(origin.y_offset))
|
|
28
|
+
end = Point(x=int(origin.x_offset) + int(delta_x), y=int(origin.y_offset) + int(delta_y))
|
|
29
|
+
|
|
30
|
+
parts = scroll_to_parts(start_position=start, end_position=end)
|
|
31
|
+
|
|
32
|
+
for part in parts:
|
|
33
|
+
self._pause_impl(seconds=part.duration * 0.001)
|
|
34
|
+
self._scroll_from_origin_impl(scroll_origin=origin, delta_x=int(part.delta.x), delta_y=int(part.delta.y))
|
|
35
|
+
|
|
36
|
+
return self._legacy_impl
|
|
37
|
+
|
|
38
|
+
def _hm_scroll_by_amount_impl(self, delta_x: int, delta_y: int) -> legacyActionChains:
|
|
39
|
+
start = Point(x=0, y=0)
|
|
40
|
+
end = Point(x=int(delta_x), y=int(delta_y))
|
|
41
|
+
|
|
42
|
+
parts = scroll_to_parts(start_position=start, end_position=end)
|
|
43
|
+
|
|
44
|
+
for part in parts:
|
|
45
|
+
self._pause_impl(seconds=part.duration * 0.001)
|
|
46
|
+
self._scroll_by_amount_impl(delta_x=int(part.delta.x), delta_y=int(part.delta.y))
|
|
47
|
+
|
|
48
|
+
return self._legacy_impl
|
|
49
|
+
|
|
50
|
+
def _hm_scroll_to_element_impl(
|
|
51
|
+
self,
|
|
52
|
+
element: WEB_ELEMENT_TYPEHINT,
|
|
53
|
+
additional_lower_y_offset: int = 0,
|
|
54
|
+
additional_upper_y_offset: int = 0,
|
|
55
|
+
additional_right_x_offset: int = 0,
|
|
56
|
+
additional_left_x_offset: int = 0,
|
|
57
|
+
) -> legacyActionChains:
|
|
58
|
+
viewport_rect = self._js_executor._get_viewport_rect_impl()
|
|
59
|
+
element_rect = self._js_executor._get_element_rect_in_viewport_impl(element=get_legacy_instance(instance=element))
|
|
60
|
+
|
|
61
|
+
if element_rect.x < additional_left_x_offset:
|
|
62
|
+
delta_x = int(element_rect.x - additional_left_x_offset)
|
|
63
|
+
elif element_rect.x + element_rect.width > viewport_rect.width - additional_right_x_offset:
|
|
64
|
+
delta_x = int(
|
|
65
|
+
element_rect.x + element_rect.width - (viewport_rect.width - additional_right_x_offset)
|
|
66
|
+
)
|
|
67
|
+
else:
|
|
68
|
+
delta_x = 0
|
|
69
|
+
|
|
70
|
+
if element_rect.y < additional_upper_y_offset:
|
|
71
|
+
delta_y = int(element_rect.y - additional_upper_y_offset)
|
|
72
|
+
elif element_rect.y + element_rect.height > viewport_rect.height - additional_lower_y_offset:
|
|
73
|
+
delta_y = int(
|
|
74
|
+
element_rect.y + element_rect.height - (viewport_rect.height - additional_lower_y_offset)
|
|
75
|
+
)
|
|
76
|
+
else:
|
|
77
|
+
delta_y = 0
|
|
78
|
+
|
|
79
|
+
return self._hm_scroll_by_amount_impl(delta_x=delta_x, delta_y=delta_y)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
3
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
4
|
+
from osn_selenium.instances.unified.action_chains.base import UnifiedBaseMixin
|
|
5
|
+
from selenium.webdriver.common.action_chains import (
|
|
6
|
+
ActionChains as legacyActionChains
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
__all__ = ["UnifiedKeyboardMixin"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class UnifiedKeyboardMixin(UnifiedBaseMixin):
|
|
14
|
+
def _key_down_impl(self, value: str, element: Optional[WEB_ELEMENT_TYPEHINT]) -> legacyActionChains:
|
|
15
|
+
return self._legacy_impl.key_down(value=value, element=get_legacy_instance(instance=element))
|
|
16
|
+
|
|
17
|
+
def _key_up_impl(self, value: str, element: Optional[WEB_ELEMENT_TYPEHINT]) -> legacyActionChains:
|
|
18
|
+
return self._legacy_impl.key_up(value=value, element=get_legacy_instance(instance=element))
|
|
19
|
+
|
|
20
|
+
def _send_keys_impl(self, *keys_to_send: str) -> legacyActionChains:
|
|
21
|
+
return self._legacy_impl.send_keys(*keys_to_send)
|
|
22
|
+
|
|
23
|
+
def _send_keys_to_element_impl(self, element: WEB_ELEMENT_TYPEHINT, *keys_to_send: str) -> legacyActionChains:
|
|
24
|
+
return self._legacy_impl.send_keys_to_element(get_legacy_instance(instance=element), *keys_to_send)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
2
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
3
|
+
from osn_selenium.instances.unified.action_chains.base import UnifiedBaseMixin
|
|
4
|
+
from selenium.webdriver.common.action_chains import (
|
|
5
|
+
ActionChains as legacyActionChains
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
__all__ = ["UnifiedMoveMixin"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class UnifiedMoveMixin(UnifiedBaseMixin):
|
|
13
|
+
def _move_by_offset_impl(self, xoffset: int, yoffset: int) -> legacyActionChains:
|
|
14
|
+
return self._legacy_impl.move_by_offset(xoffset=xoffset, yoffset=yoffset)
|
|
15
|
+
|
|
16
|
+
def _move_to_element_impl(self, to_element: WEB_ELEMENT_TYPEHINT) -> legacyActionChains:
|
|
17
|
+
return self._legacy_impl.move_to_element(to_element=get_legacy_instance(instance=to_element))
|
|
18
|
+
|
|
19
|
+
def _move_to_element_with_offset_impl(self, to_element: WEB_ELEMENT_TYPEHINT, xoffset: int, yoffset: int) -> legacyActionChains:
|
|
20
|
+
return self._legacy_impl.move_to_element_with_offset(
|
|
21
|
+
to_element=get_legacy_instance(instance=to_element),
|
|
22
|
+
xoffset=xoffset,
|
|
23
|
+
yoffset=yoffset
|
|
24
|
+
)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
2
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
3
|
+
from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
|
|
4
|
+
from osn_selenium.instances.unified.action_chains.base import UnifiedBaseMixin
|
|
5
|
+
from selenium.webdriver.common.action_chains import (
|
|
6
|
+
ActionChains as legacyActionChains
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
__all__ = ["UnifiedScrollMixin"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class UnifiedScrollMixin(UnifiedBaseMixin):
|
|
14
|
+
def _scroll_by_amount_impl(self, delta_x: int, delta_y: int) -> legacyActionChains:
|
|
15
|
+
return self._legacy_impl.scroll_by_amount(delta_x=delta_x, delta_y=delta_y)
|
|
16
|
+
|
|
17
|
+
def _scroll_from_origin_impl(self, scroll_origin: ScrollOrigin, delta_x: int, delta_y: int) -> legacyActionChains:
|
|
18
|
+
return self._legacy_impl.scroll_from_origin(scroll_origin=scroll_origin, delta_x=delta_x, delta_y=delta_y)
|
|
19
|
+
|
|
20
|
+
def _scroll_to_element_impl(self, element: WEB_ELEMENT_TYPEHINT) -> legacyActionChains:
|
|
21
|
+
return self._legacy_impl.scroll_to_element(element=get_legacy_instance(instance=element))
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Union
|
|
2
|
+
from osn_selenium.instances.unified.action_chains.base import UnifiedBaseMixin
|
|
3
|
+
from selenium.webdriver.common.action_chains import (
|
|
4
|
+
ActionChains as legacyActionChains
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
__all__ = ["UnifiedUtilsMixin"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UnifiedUtilsMixin(UnifiedBaseMixin):
|
|
12
|
+
def _pause_impl(self, seconds: Union[float, int]) -> legacyActionChains:
|
|
13
|
+
return self._legacy_impl.pause(seconds=seconds)
|
|
14
|
+
|
|
15
|
+
def _perform_impl(self) -> None:
|
|
16
|
+
self._legacy_impl.perform()
|
|
17
|
+
|
|
18
|
+
def _reset_actions_impl(self) -> None:
|
|
19
|
+
self._legacy_impl.reset_actions()
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from selenium.webdriver.common.alert import Alert as legacyAlert
|
|
2
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
__all__ = ["UnifiedAlert"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class UnifiedAlert:
|
|
9
|
+
def __init__(self, selenium_alert: legacyAlert):
|
|
10
|
+
if not isinstance(selenium_alert, legacyAlert):
|
|
11
|
+
raise NotExpectedTypeError(expected_type=legacyAlert, received_instance=selenium_alert)
|
|
12
|
+
|
|
13
|
+
self._selenium_alert = selenium_alert
|
|
14
|
+
|
|
15
|
+
def _accept_impl(self) -> None:
|
|
16
|
+
self._legacy_impl.accept()
|
|
17
|
+
|
|
18
|
+
def _dismiss_impl(self) -> None:
|
|
19
|
+
self._legacy_impl.dismiss()
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def _legacy_impl(self) -> legacyAlert:
|
|
23
|
+
return self._selenium_alert
|
|
24
|
+
|
|
25
|
+
def _send_keys_impl(self, keysToSend: str) -> None:
|
|
26
|
+
self._legacy_impl.send_keys(keysToSend=keysToSend)
|
|
27
|
+
|
|
28
|
+
def _text_impl(self) -> str:
|
|
29
|
+
return self._legacy_impl.text
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
3
|
+
from selenium.webdriver.common.bidi.browser import (
|
|
4
|
+
Browser as legacyBrowser,
|
|
5
|
+
ClientWindowInfo
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
__all__ = ["UnifiedBrowser"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class UnifiedBrowser:
|
|
13
|
+
def __init__(self, selenium_browser: legacyBrowser):
|
|
14
|
+
if not isinstance(selenium_browser, legacyBrowser):
|
|
15
|
+
raise NotExpectedTypeError(expected_type=legacyBrowser, received_instance=selenium_browser)
|
|
16
|
+
|
|
17
|
+
self._selenium_browser = selenium_browser
|
|
18
|
+
|
|
19
|
+
def _create_user_context_impl(self) -> str:
|
|
20
|
+
return self._legacy_impl.create_user_context()
|
|
21
|
+
|
|
22
|
+
def _get_client_windows_impl(self) -> List[ClientWindowInfo]:
|
|
23
|
+
return self._legacy_impl.get_client_windows()
|
|
24
|
+
|
|
25
|
+
def _get_user_contexts_impl(self) -> List[str]:
|
|
26
|
+
return self._legacy_impl.get_user_contexts()
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def _legacy_impl(self) -> legacyBrowser:
|
|
30
|
+
return self._selenium_browser
|
|
31
|
+
|
|
32
|
+
def _remove_user_context_impl(self, user_context_id: str) -> None:
|
|
33
|
+
self._legacy_impl.remove_user_context(user_context_id=user_context_id)
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
2
|
+
from typing import (
|
|
3
|
+
Any,
|
|
4
|
+
Callable,
|
|
5
|
+
Dict,
|
|
6
|
+
List,
|
|
7
|
+
Optional,
|
|
8
|
+
Union
|
|
9
|
+
)
|
|
10
|
+
from selenium.webdriver.common.bidi.browsing_context import (
|
|
11
|
+
BrowsingContext as legacyBrowsingContext,
|
|
12
|
+
BrowsingContextInfo
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
__all__ = ["UnifiedBrowsingContext"]
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class UnifiedBrowsingContext:
|
|
20
|
+
def __init__(self, selenium_browsing_context: legacyBrowsingContext):
|
|
21
|
+
if not isinstance(selenium_browsing_context, legacyBrowsingContext):
|
|
22
|
+
raise NotExpectedTypeError(
|
|
23
|
+
expected_type=legacyBrowsingContext,
|
|
24
|
+
received_instance=selenium_browsing_context
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
self._selenium_browsing_context = selenium_browsing_context
|
|
28
|
+
|
|
29
|
+
def _activate_impl(self, context: str) -> Any:
|
|
30
|
+
return self._legacy_impl.activate(context)
|
|
31
|
+
|
|
32
|
+
def _add_event_handler_impl(
|
|
33
|
+
self,
|
|
34
|
+
event: str,
|
|
35
|
+
callback: Callable,
|
|
36
|
+
contexts: Optional[List[str]] = None,
|
|
37
|
+
) -> int:
|
|
38
|
+
return self._legacy_impl.add_event_handler(event=event, callback=callback, contexts=contexts)
|
|
39
|
+
|
|
40
|
+
def _capture_screenshot_impl(
|
|
41
|
+
self,
|
|
42
|
+
context: str,
|
|
43
|
+
origin: str = "viewport",
|
|
44
|
+
format: Optional[Dict] = None,
|
|
45
|
+
clip: Optional[Dict] = None,
|
|
46
|
+
) -> str:
|
|
47
|
+
return self._legacy_impl.capture_screenshot(context=context, origin=origin, format=format, clip=clip)
|
|
48
|
+
|
|
49
|
+
def _clear_event_handlers_impl(self) -> None:
|
|
50
|
+
self._legacy_impl.clear_event_handlers()
|
|
51
|
+
|
|
52
|
+
def _close_impl(self, context: str, prompt_unload: bool = False) -> None:
|
|
53
|
+
self._legacy_impl.close(context=context, prompt_unload=prompt_unload)
|
|
54
|
+
|
|
55
|
+
def _create_impl(
|
|
56
|
+
self,
|
|
57
|
+
type: str,
|
|
58
|
+
reference_context: Optional[str] = None,
|
|
59
|
+
background: bool = False,
|
|
60
|
+
user_context: Optional[str] = None,
|
|
61
|
+
) -> str:
|
|
62
|
+
return self._legacy_impl.create(
|
|
63
|
+
type=type,
|
|
64
|
+
reference_context=reference_context,
|
|
65
|
+
background=background,
|
|
66
|
+
user_context=user_context
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
def _get_tree_impl(self, max_depth: Optional[int] = None, root: Optional[str] = None) -> List[BrowsingContextInfo]:
|
|
70
|
+
return self._legacy_impl.get_tree(max_depth=max_depth, root=root)
|
|
71
|
+
|
|
72
|
+
def _handle_user_prompt_impl(
|
|
73
|
+
self,
|
|
74
|
+
context: str,
|
|
75
|
+
accept: Optional[bool] = None,
|
|
76
|
+
user_text: Optional[str] = None,
|
|
77
|
+
) -> None:
|
|
78
|
+
self._legacy_impl.handle_user_prompt(context=context, accept=accept, user_text=user_text)
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def _legacy_impl(self) -> legacyBrowsingContext:
|
|
82
|
+
return self._selenium_browsing_context
|
|
83
|
+
|
|
84
|
+
def _locate_nodes_impl(
|
|
85
|
+
self,
|
|
86
|
+
context: str,
|
|
87
|
+
locator: Dict,
|
|
88
|
+
max_node_count: Optional[int] = None,
|
|
89
|
+
serialization_options: Optional[Dict] = None,
|
|
90
|
+
start_nodes: Optional[List[Dict]] = None,
|
|
91
|
+
) -> List[Dict]:
|
|
92
|
+
return self._legacy_impl.locate_nodes(
|
|
93
|
+
context=context,
|
|
94
|
+
locator=locator,
|
|
95
|
+
max_node_count=max_node_count,
|
|
96
|
+
serialization_options=serialization_options,
|
|
97
|
+
start_nodes=start_nodes
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
def _navigate_impl(self, context: str, url: str, wait: Optional[str] = None) -> Dict:
|
|
101
|
+
return self._legacy_impl.navigate(context=context, url=url, wait=wait)
|
|
102
|
+
|
|
103
|
+
def _print_impl(
|
|
104
|
+
self,
|
|
105
|
+
context: str,
|
|
106
|
+
background: bool = False,
|
|
107
|
+
margin: Optional[Dict] = None,
|
|
108
|
+
orientation: str = "portrait",
|
|
109
|
+
page: Optional[Dict] = None,
|
|
110
|
+
page_ranges: Optional[List[Union[int, str]]] = None,
|
|
111
|
+
scale: float = 1.0,
|
|
112
|
+
shrink_to_fit: bool = True,
|
|
113
|
+
) -> str:
|
|
114
|
+
return self._legacy_impl.print(
|
|
115
|
+
context=context,
|
|
116
|
+
background=background,
|
|
117
|
+
margin=margin,
|
|
118
|
+
orientation=orientation,
|
|
119
|
+
page=page,
|
|
120
|
+
page_ranges=page_ranges,
|
|
121
|
+
scale=scale,
|
|
122
|
+
shrink_to_fit=shrink_to_fit
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
def _reload_impl(
|
|
126
|
+
self,
|
|
127
|
+
context: str,
|
|
128
|
+
ignore_cache: Optional[bool] = None,
|
|
129
|
+
wait: Optional[str] = None,
|
|
130
|
+
) -> Dict:
|
|
131
|
+
return self._legacy_impl.reload(context=context, ignore_cache=ignore_cache, wait=wait)
|
|
132
|
+
|
|
133
|
+
def _remove_event_handler_impl(self, event: str, callback_id: int) -> None:
|
|
134
|
+
self._legacy_impl.remove_event_handler(event=event, callback_id=callback_id)
|
|
135
|
+
|
|
136
|
+
def _set_viewport_impl(
|
|
137
|
+
self,
|
|
138
|
+
context: Optional[str] = None,
|
|
139
|
+
viewport: Optional[Dict] = None,
|
|
140
|
+
device_pixel_ratio: Optional[float] = None,
|
|
141
|
+
user_contexts: Optional[List[str]] = None,
|
|
142
|
+
) -> None:
|
|
143
|
+
self._legacy_impl.set_viewport(
|
|
144
|
+
context=context,
|
|
145
|
+
viewport=viewport,
|
|
146
|
+
device_pixel_ratio=device_pixel_ratio,
|
|
147
|
+
user_contexts=user_contexts
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
def _traverse_history_impl(self, context: str, delta: int) -> Dict:
|
|
151
|
+
return self._legacy_impl.traverse_history(context=context, delta=delta)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from typing import List, Optional
|
|
2
|
+
from selenium.webdriver.common.fedcm.account import Account
|
|
3
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
4
|
+
from selenium.webdriver.common.fedcm.dialog import (
|
|
5
|
+
Dialog as legacyDialog
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
__all__ = ["UnifiedDialog"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class UnifiedDialog:
|
|
13
|
+
def __init__(self, selenium_dialog: legacyDialog):
|
|
14
|
+
if not isinstance(selenium_dialog, legacyDialog):
|
|
15
|
+
raise NotExpectedTypeError(expected_type=legacyDialog, received_instance=selenium_dialog)
|
|
16
|
+
|
|
17
|
+
self._selenium_dialog = selenium_dialog
|
|
18
|
+
|
|
19
|
+
def _accept_impl(self) -> None:
|
|
20
|
+
self._legacy_impl.accept()
|
|
21
|
+
|
|
22
|
+
def _dismiss_impl(self) -> None:
|
|
23
|
+
self._legacy_impl.dismiss()
|
|
24
|
+
|
|
25
|
+
def _get_accounts_impl(self) -> List[Account]:
|
|
26
|
+
return self._legacy_impl.get_accounts()
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def _legacy_impl(self) -> legacyDialog:
|
|
30
|
+
return self._selenium_dialog
|
|
31
|
+
|
|
32
|
+
def _select_account_impl(self, index: int) -> None:
|
|
33
|
+
self._legacy_impl.select_account(index=index)
|
|
34
|
+
|
|
35
|
+
def _subtitle_impl(self) -> Optional[str]:
|
|
36
|
+
return self._legacy_impl.subtitle
|
|
37
|
+
|
|
38
|
+
def _title_impl(self) -> str:
|
|
39
|
+
return self._legacy_impl.title
|
|
40
|
+
|
|
41
|
+
def _type_impl(self) -> Optional[str]:
|
|
42
|
+
return self._legacy_impl.type
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from typing import Dict, List, Optional
|
|
2
|
+
from selenium.webdriver.remote.fedcm import FedCM as legacyFedCM
|
|
3
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
__all__ = ["UnifiedFedCM"]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class UnifiedFedCM:
|
|
10
|
+
def __init__(self, selenium_fedcm: legacyFedCM):
|
|
11
|
+
if not isinstance(selenium_fedcm, legacyFedCM):
|
|
12
|
+
raise NotExpectedTypeError(expected_type=legacyFedCM, received_instance=selenium_fedcm)
|
|
13
|
+
|
|
14
|
+
self._selenium_fedcm = selenium_fedcm
|
|
15
|
+
|
|
16
|
+
def _accept_impl(self) -> None:
|
|
17
|
+
self._legacy_impl.accept()
|
|
18
|
+
|
|
19
|
+
def _account_list_impl(self) -> List[Dict]:
|
|
20
|
+
return self._legacy_impl.account_list
|
|
21
|
+
|
|
22
|
+
def _dialog_type_impl(self) -> str:
|
|
23
|
+
return self._legacy_impl.dialog_type
|
|
24
|
+
|
|
25
|
+
def _disable_delay_impl(self) -> None:
|
|
26
|
+
self._legacy_impl.disable_delay()
|
|
27
|
+
|
|
28
|
+
def _dismiss_impl(self) -> None:
|
|
29
|
+
self._legacy_impl.dismiss()
|
|
30
|
+
|
|
31
|
+
def _enable_delay_impl(self) -> None:
|
|
32
|
+
self._legacy_impl.enable_delay()
|
|
33
|
+
|
|
34
|
+
@property
|
|
35
|
+
def _legacy_impl(self) -> legacyFedCM:
|
|
36
|
+
return self._selenium_fedcm
|
|
37
|
+
|
|
38
|
+
def _reset_cooldown_impl(self) -> None:
|
|
39
|
+
self._legacy_impl.reset_cooldown()
|
|
40
|
+
|
|
41
|
+
def _select_account_impl(self, index: int) -> None:
|
|
42
|
+
self._legacy_impl.select_account(index=index)
|
|
43
|
+
|
|
44
|
+
def _subtitle_impl(self) -> Optional[str]:
|
|
45
|
+
return self._legacy_impl.subtitle
|
|
46
|
+
|
|
47
|
+
def _title_impl(self) -> str:
|
|
48
|
+
return self._legacy_impl.title
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from typing import List, Union
|
|
2
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
3
|
+
from selenium.webdriver.remote.mobile import (
|
|
4
|
+
Mobile as legacyMobile,
|
|
5
|
+
_ConnectionType
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
__all__ = ["UnifiedMobile"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class UnifiedMobile:
|
|
13
|
+
def __init__(self, selenium_mobile: legacyMobile):
|
|
14
|
+
if not isinstance(selenium_mobile, legacyMobile):
|
|
15
|
+
raise NotExpectedTypeError(expected_type=legacyMobile, received_instance=selenium_mobile)
|
|
16
|
+
|
|
17
|
+
self._selenium_mobile = selenium_mobile
|
|
18
|
+
|
|
19
|
+
def _contexts_impl(self) -> List[str]:
|
|
20
|
+
return self._legacy_impl.contexts
|
|
21
|
+
|
|
22
|
+
def _get_context_impl(self) -> str:
|
|
23
|
+
return self._legacy_impl.context
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def _legacy_impl(self) -> legacyMobile:
|
|
27
|
+
return self._selenium_mobile
|
|
28
|
+
|
|
29
|
+
def _network_connection_impl(self) -> _ConnectionType:
|
|
30
|
+
return self._legacy_impl.network_connection
|
|
31
|
+
|
|
32
|
+
def _set_context_impl(self, new_context: str) -> None:
|
|
33
|
+
self._legacy_impl.context = new_context
|
|
34
|
+
|
|
35
|
+
def _set_network_connection_impl(self, network: Union[int, _ConnectionType]) -> _ConnectionType:
|
|
36
|
+
return self._legacy_impl.set_network_connection(network)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Callable,
|
|
3
|
+
List,
|
|
4
|
+
Optional
|
|
5
|
+
)
|
|
6
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
7
|
+
from selenium.webdriver.common.bidi.network import (
|
|
8
|
+
Network as legacyNetwork
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
__all__ = ["UnifiedNetwork"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class UnifiedNetwork:
|
|
16
|
+
def __init__(self, selenium_network: legacyNetwork):
|
|
17
|
+
if not isinstance(selenium_network, legacyNetwork):
|
|
18
|
+
raise NotExpectedTypeError(expected_type=legacyNetwork, received_instance=selenium_network)
|
|
19
|
+
|
|
20
|
+
self._selenium_network = selenium_network
|
|
21
|
+
|
|
22
|
+
def _add_auth_handler_impl(self, username: str, password: str) -> int:
|
|
23
|
+
return self._legacy_impl.add_auth_handler(username=username, password=password)
|
|
24
|
+
|
|
25
|
+
def _add_request_handler_impl(
|
|
26
|
+
self,
|
|
27
|
+
event: str,
|
|
28
|
+
callback: Callable,
|
|
29
|
+
url_patterns: Optional[List[str]] = None,
|
|
30
|
+
contexts: Optional[List[str]] = None,
|
|
31
|
+
) -> int:
|
|
32
|
+
return self._legacy_impl.add_request_handler(
|
|
33
|
+
event=event,
|
|
34
|
+
callback=callback,
|
|
35
|
+
url_patterns=url_patterns,
|
|
36
|
+
contexts=contexts
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
def _clear_request_handlers_impl(self) -> None:
|
|
40
|
+
self._legacy_impl.clear_request_handlers()
|
|
41
|
+
|
|
42
|
+
@property
|
|
43
|
+
def _legacy_impl(self) -> legacyNetwork:
|
|
44
|
+
return self._selenium_network
|
|
45
|
+
|
|
46
|
+
def _remove_auth_handler_impl(self, callback_id: int) -> None:
|
|
47
|
+
self._legacy_impl.remove_auth_handler(callback_id=callback_id)
|
|
48
|
+
|
|
49
|
+
def _remove_request_handler_impl(self, event: str, callback_id: int) -> None:
|
|
50
|
+
self._legacy_impl.remove_request_handler(event=event, callback_id=callback_id)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Any,
|
|
3
|
+
Dict,
|
|
4
|
+
Optional,
|
|
5
|
+
Union
|
|
6
|
+
)
|
|
7
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
8
|
+
from selenium.webdriver.common.bidi.permissions import (
|
|
9
|
+
PermissionDescriptor,
|
|
10
|
+
Permissions as legacyPermissions
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["UnifiedPermissions"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class UnifiedPermissions:
|
|
18
|
+
def __init__(self, selenium_permissions: legacyPermissions):
|
|
19
|
+
if not isinstance(selenium_permissions, legacyPermissions):
|
|
20
|
+
raise NotExpectedTypeError(
|
|
21
|
+
expected_type=legacyPermissions,
|
|
22
|
+
received_instance=selenium_permissions
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
self._selenium_permissions = selenium_permissions
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def _legacy_impl(self) -> legacyPermissions:
|
|
29
|
+
return self._selenium_permissions
|
|
30
|
+
|
|
31
|
+
def _set_permission_impl(
|
|
32
|
+
self,
|
|
33
|
+
descriptor: Union[Dict[str, Any], PermissionDescriptor],
|
|
34
|
+
state: str,
|
|
35
|
+
origin: str,
|
|
36
|
+
user_context: Optional[str] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
self._legacy_impl.set_permission(
|
|
39
|
+
descriptor=descriptor,
|
|
40
|
+
state=state,
|
|
41
|
+
origin=origin,
|
|
42
|
+
user_context=user_context
|
|
43
|
+
)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from typing import Any, Callable
|
|
2
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
3
|
+
from selenium.webdriver.common.bidi.script import (
|
|
4
|
+
Script as legacyScript
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
__all__ = ["UnifiedScript"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UnifiedScript:
|
|
12
|
+
def __init__(self, selenium_script: legacyScript):
|
|
13
|
+
if not isinstance(selenium_script, legacyScript):
|
|
14
|
+
raise NotExpectedTypeError(expected_type=legacyScript, received_instance=selenium_script)
|
|
15
|
+
|
|
16
|
+
self._selenium_script = selenium_script
|
|
17
|
+
|
|
18
|
+
def _add_console_message_handler_impl(self, handler: Callable[[Any], None]) -> int:
|
|
19
|
+
return self._legacy_impl.add_console_message_handler(handler=handler)
|
|
20
|
+
|
|
21
|
+
def _add_javascript_error_handler_impl(self, handler: Callable[[Any], None]) -> int:
|
|
22
|
+
return self._legacy_impl.add_javascript_error_handler(handler=handler)
|
|
23
|
+
|
|
24
|
+
def _execute_impl(self, script: str, *args: Any) -> Any:
|
|
25
|
+
return self._legacy_impl.execute(script, *args)
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def _legacy_impl(self) -> legacyScript:
|
|
29
|
+
return self._selenium_script
|
|
30
|
+
|
|
31
|
+
def _pin_impl(self, script: str) -> str:
|
|
32
|
+
return self._legacy_impl.pin(script=script)
|
|
33
|
+
|
|
34
|
+
def _remove_console_message_handler_impl(self, id: int) -> None:
|
|
35
|
+
self._legacy_impl.remove_console_message_handler(id=id)
|
|
36
|
+
|
|
37
|
+
def _unpin_impl(self, script_id: str) -> None:
|
|
38
|
+
self._legacy_impl.unpin(script_id=script_id)
|