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,74 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Any,
|
|
3
|
+
Callable,
|
|
4
|
+
TYPE_CHECKING,
|
|
5
|
+
cast
|
|
6
|
+
)
|
|
7
|
+
from osn_selenium.instances.unified.action_chains.base import UnifiedBaseMixin
|
|
8
|
+
from osn_selenium.abstract.instances.action_chains.base import AbstractBaseMixin
|
|
9
|
+
from selenium.webdriver.common.action_chains import (
|
|
10
|
+
ActionChains as legacyActionChains
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["BaseMixin"]
|
|
15
|
+
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BaseMixin(UnifiedBaseMixin, AbstractBaseMixin):
|
|
21
|
+
"""
|
|
22
|
+
Base mixin class that bridges legacy Selenium actions with unified execution logic.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
selenium_action_chains: legacyActionChains,
|
|
28
|
+
execute_js_script_function: Callable[[str, Any], Any]
|
|
29
|
+
):
|
|
30
|
+
"""
|
|
31
|
+
Initializes an ActionChains instance from a legacy Selenium ActionChains object.
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
selenium_action_chains (legacyActionChains): The legacy Selenium action chain.
|
|
35
|
+
execute_js_script_function (Callable[[str, Any], Any]): The function used to execute JS.
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
"ActionChains": The ActionChains instance.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
UnifiedBaseMixin.__init__(
|
|
42
|
+
self,
|
|
43
|
+
selenium_action_chains=selenium_action_chains,
|
|
44
|
+
execute_js_script_function=execute_js_script_function,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
@classmethod
|
|
48
|
+
def from_legacy(
|
|
49
|
+
cls,
|
|
50
|
+
legacy_object: legacyActionChains,
|
|
51
|
+
execute_js_script_function: Callable[[str, Any], Any],
|
|
52
|
+
) -> "ActionChains":
|
|
53
|
+
"""
|
|
54
|
+
Creates an ActionChains instance from a legacy Selenium ActionChains object.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
legacy_object (legacyActionChains): The legacy Selenium action chain.
|
|
58
|
+
execute_js_script_function (Callable[[str, Any], Any]): The function used to execute JS.
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
"ActionChains": The ActionChains instance.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
return cast(
|
|
65
|
+
"ActionChains",
|
|
66
|
+
cls(
|
|
67
|
+
selenium_action_chains=legacy_object,
|
|
68
|
+
execute_js_script_function=execute_js_script_function,
|
|
69
|
+
)
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def legacy(self) -> legacyActionChains:
|
|
74
|
+
return self._legacy_impl
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Optional,
|
|
3
|
+
TYPE_CHECKING
|
|
4
|
+
)
|
|
5
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
6
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
7
|
+
from osn_selenium.instances.sync.action_chains.base import BaseMixin
|
|
8
|
+
from osn_selenium.instances.unified.action_chains.click import UnifiedClickMixin
|
|
9
|
+
from osn_selenium.abstract.instances.action_chains.click import AbstractClickMixin
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
__all__ = ["ClickMixin"]
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ClickMixin(BaseMixin, UnifiedClickMixin, AbstractClickMixin):
|
|
19
|
+
"""
|
|
20
|
+
Mixin class providing mouse click interaction methods.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
def click(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "ActionChains":
|
|
24
|
+
action_chains = self._click_impl(on_element=get_legacy_instance(instance=on_element))
|
|
25
|
+
|
|
26
|
+
return self.from_legacy(
|
|
27
|
+
legacy_object=action_chains,
|
|
28
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
def click_and_hold(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "ActionChains":
|
|
32
|
+
action_chains = self._click_and_hold_impl(on_element=get_legacy_instance(instance=on_element))
|
|
33
|
+
|
|
34
|
+
return self.from_legacy(
|
|
35
|
+
legacy_object=action_chains,
|
|
36
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
def context_click(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "ActionChains":
|
|
40
|
+
action_chains = self._context_click_impl(on_element=get_legacy_instance(instance=on_element))
|
|
41
|
+
|
|
42
|
+
return self.from_legacy(
|
|
43
|
+
legacy_object=action_chains,
|
|
44
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
def double_click(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "ActionChains":
|
|
48
|
+
action_chains = self._double_click_impl(on_element=get_legacy_instance(instance=on_element))
|
|
49
|
+
|
|
50
|
+
return self.from_legacy(
|
|
51
|
+
legacy_object=action_chains,
|
|
52
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
def release(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "ActionChains":
|
|
56
|
+
action_chains = self._release_impl(on_element=get_legacy_instance(instance=on_element))
|
|
57
|
+
|
|
58
|
+
return self.from_legacy(
|
|
59
|
+
legacy_object=action_chains,
|
|
60
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
61
|
+
)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
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.sync.action_chains.base import BaseMixin
|
|
5
|
+
from osn_selenium.instances.unified.action_chains.drag_and_drop import (
|
|
6
|
+
UnifiedDragAndDropMixin
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium.abstract.instances.action_chains.drag_and_drop import (
|
|
9
|
+
AbstractDragAndDropMixin
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
__all__ = ["DragAndDropMixin"]
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class DragAndDropMixin(BaseMixin, UnifiedDragAndDropMixin, AbstractDragAndDropMixin):
|
|
20
|
+
"""
|
|
21
|
+
Mixin class providing drag and drop interaction methods.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def drag_and_drop(self, source: WEB_ELEMENT_TYPEHINT, target: WEB_ELEMENT_TYPEHINT) -> "ActionChains":
|
|
25
|
+
action_chains = self._drag_and_drop_impl(
|
|
26
|
+
source=get_legacy_instance(instance=source),
|
|
27
|
+
target=get_legacy_instance(instance=target)
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
return self.from_legacy(
|
|
31
|
+
legacy_object=action_chains,
|
|
32
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
def drag_and_drop_by_offset(self, source: WEB_ELEMENT_TYPEHINT, xoffset: int, yoffset: int) -> "ActionChains":
|
|
36
|
+
action_chains = self._drag_and_drop_by_offset_impl(
|
|
37
|
+
source=get_legacy_instance(instance=source),
|
|
38
|
+
xoffset=xoffset,
|
|
39
|
+
yoffset=yoffset
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
return self.from_legacy(
|
|
43
|
+
legacy_object=action_chains,
|
|
44
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
45
|
+
)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
3
|
+
from osn_selenium.instances.sync.action_chains.base import BaseMixin
|
|
4
|
+
from osn_selenium.instances.unified.action_chains.hm_keyboard import (
|
|
5
|
+
UnifiedHMKeyboardMixin
|
|
6
|
+
)
|
|
7
|
+
from osn_selenium.abstract.instances.action_chains.hm_keyboard import (
|
|
8
|
+
AbstractHMKeyboardMixin
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
__all__ = ["HMKeyboardMixin"]
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class HMKeyboardMixin(BaseMixin, UnifiedHMKeyboardMixin, AbstractHMKeyboardMixin):
|
|
19
|
+
"""
|
|
20
|
+
Mixin class providing human-like keyboard interaction methods.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
def hm_send_keys(self, text: str) -> "ActionChains":
|
|
24
|
+
action_chains = self._hm_send_keys_impl(text=text)
|
|
25
|
+
|
|
26
|
+
return self.from_legacy(
|
|
27
|
+
legacy_object=action_chains,
|
|
28
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
def hm_send_keys_to_element(self, element: WEB_ELEMENT_TYPEHINT, text: str) -> "ActionChains":
|
|
32
|
+
action_chains = self._hm_send_keys_to_element_impl(element=element, text=text)
|
|
33
|
+
|
|
34
|
+
return self.from_legacy(
|
|
35
|
+
legacy_object=action_chains,
|
|
36
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
37
|
+
)
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
from osn_selenium.models import Point
|
|
2
|
+
from typing import TYPE_CHECKING, Tuple
|
|
3
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
4
|
+
from osn_selenium.instances.sync.action_chains.base import BaseMixin
|
|
5
|
+
from osn_selenium.instances.unified.action_chains.hm_move import UnifiedHMMoveMixin
|
|
6
|
+
from osn_selenium.abstract.instances.action_chains.hm_move import AbstractHMMoveMixin
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
__all__ = ["HMMoveMixin"]
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class HMMoveMixin(BaseMixin, UnifiedHMMoveMixin, AbstractHMMoveMixin):
|
|
16
|
+
"""
|
|
17
|
+
Mixin class providing human-like mouse movement interaction methods.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def hm_move(self, start_position: Point, end_position: Point) -> "ActionChains":
|
|
21
|
+
action_chains = self._hm_move_impl(start_position=start_position, end_position=end_position)
|
|
22
|
+
|
|
23
|
+
return self.from_legacy(
|
|
24
|
+
legacy_object=action_chains,
|
|
25
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
def hm_move_by_offset(self, start_position: Point, xoffset: int, yoffset: int) -> Tuple["ActionChains", Point]:
|
|
29
|
+
action_chains, point = self._hm_move_by_offset_impl(start_position=start_position, xoffset=xoffset, yoffset=yoffset)
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
self.from_legacy(
|
|
33
|
+
legacy_object=action_chains,
|
|
34
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
35
|
+
),
|
|
36
|
+
point,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
def hm_move_to_element(self, start_position: Point, element: WEB_ELEMENT_TYPEHINT) -> Tuple["ActionChains", Point]:
|
|
40
|
+
action_chains, point = self._hm_move_to_element_impl(start_position=start_position, element=element)
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
self.from_legacy(
|
|
44
|
+
legacy_object=action_chains,
|
|
45
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
46
|
+
),
|
|
47
|
+
point,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
def hm_move_to_element_with_offset(
|
|
51
|
+
self,
|
|
52
|
+
start_position: Point,
|
|
53
|
+
element: WEB_ELEMENT_TYPEHINT,
|
|
54
|
+
xoffset: int,
|
|
55
|
+
yoffset: int
|
|
56
|
+
) -> Tuple["ActionChains", Point]:
|
|
57
|
+
action_chains, point = self._hm_move_to_element_with_offset_impl(
|
|
58
|
+
start_position=start_position,
|
|
59
|
+
element=element,
|
|
60
|
+
xoffset=xoffset,
|
|
61
|
+
yoffset=yoffset
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
self.from_legacy(
|
|
66
|
+
legacy_object=action_chains,
|
|
67
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
68
|
+
),
|
|
69
|
+
point,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
def hm_move_to_element_with_random_offset(self, start_position: Point, element: WEB_ELEMENT_TYPEHINT) -> Tuple["ActionChains", Point]:
|
|
73
|
+
action_chains, point = self._hm_move_to_element_with_random_offset_impl(start_position=start_position, element=element)
|
|
74
|
+
|
|
75
|
+
return (
|
|
76
|
+
self.from_legacy(
|
|
77
|
+
legacy_object=action_chains,
|
|
78
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
79
|
+
),
|
|
80
|
+
point,
|
|
81
|
+
)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Optional,
|
|
3
|
+
TYPE_CHECKING
|
|
4
|
+
)
|
|
5
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
6
|
+
from osn_selenium.instances.sync.action_chains.base import BaseMixin
|
|
7
|
+
from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
|
|
8
|
+
from osn_selenium.instances.unified.action_chains.hm_scroll import UnifiedHMScrollMixin
|
|
9
|
+
from osn_selenium.abstract.instances.action_chains.hm_scroll import (
|
|
10
|
+
AbstractHMScrollMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["HMScrollMixin"]
|
|
15
|
+
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class HMScrollMixin(BaseMixin, UnifiedHMScrollMixin, AbstractHMScrollMixin):
|
|
21
|
+
"""
|
|
22
|
+
Mixin class providing human-like scroll interaction methods.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def hm_scroll_by_amount(self, delta_x: int, delta_y: int) -> "ActionChains":
|
|
26
|
+
action_chains = self._hm_scroll_by_amount_impl(delta_x=delta_x, delta_y=delta_y)
|
|
27
|
+
|
|
28
|
+
return self.from_legacy(
|
|
29
|
+
legacy_object=action_chains,
|
|
30
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
def hm_scroll_from_origin(self, delta_x: int, delta_y: int, origin: Optional[ScrollOrigin] = None) -> "ActionChains":
|
|
34
|
+
action_chains = self._hm_scroll_from_origin_impl(delta_x=delta_x, delta_y=delta_y, origin=origin)
|
|
35
|
+
|
|
36
|
+
return self.from_legacy(
|
|
37
|
+
legacy_object=action_chains,
|
|
38
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
def hm_scroll_to_element(
|
|
42
|
+
self,
|
|
43
|
+
element: WEB_ELEMENT_TYPEHINT,
|
|
44
|
+
additional_lower_y_offset: int = 0,
|
|
45
|
+
additional_upper_y_offset: int = 0,
|
|
46
|
+
additional_right_x_offset: int = 0,
|
|
47
|
+
additional_left_x_offset: int = 0,
|
|
48
|
+
) -> "ActionChains":
|
|
49
|
+
action_chains = self._hm_scroll_to_element_impl(
|
|
50
|
+
element=element,
|
|
51
|
+
additional_lower_y_offset=additional_lower_y_offset,
|
|
52
|
+
additional_upper_y_offset=additional_upper_y_offset,
|
|
53
|
+
additional_right_x_offset=additional_right_x_offset,
|
|
54
|
+
additional_left_x_offset=additional_left_x_offset,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
return self.from_legacy(
|
|
58
|
+
legacy_object=action_chains,
|
|
59
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
60
|
+
)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Optional,
|
|
3
|
+
TYPE_CHECKING
|
|
4
|
+
)
|
|
5
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
6
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
7
|
+
from osn_selenium.instances.sync.action_chains.base import BaseMixin
|
|
8
|
+
from osn_selenium.instances.unified.action_chains.keyboard import UnifiedKeyboardMixin
|
|
9
|
+
from osn_selenium.abstract.instances.action_chains.keyboard import (
|
|
10
|
+
AbstractKeyboardMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["KeyboardMixin"]
|
|
15
|
+
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class KeyboardMixin(BaseMixin, UnifiedKeyboardMixin, AbstractKeyboardMixin):
|
|
21
|
+
"""
|
|
22
|
+
Mixin class providing keyboard interaction methods.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def key_down(self, value: str, element: Optional[WEB_ELEMENT_TYPEHINT]) -> "ActionChains":
|
|
26
|
+
action_chains = self._key_down_impl(value=value, element=get_legacy_instance(instance=element))
|
|
27
|
+
|
|
28
|
+
return self.from_legacy(
|
|
29
|
+
legacy_object=action_chains,
|
|
30
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
def key_up(self, value: str, element: Optional[WEB_ELEMENT_TYPEHINT]) -> "ActionChains":
|
|
34
|
+
action_chains = self._key_up_impl(value=value, element=get_legacy_instance(instance=element))
|
|
35
|
+
|
|
36
|
+
return self.from_legacy(
|
|
37
|
+
legacy_object=action_chains,
|
|
38
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
def send_keys(self, *keys_to_send: str) -> "ActionChains":
|
|
42
|
+
action_chains = self._send_keys_impl(*keys_to_send)
|
|
43
|
+
|
|
44
|
+
return self.from_legacy(
|
|
45
|
+
legacy_object=action_chains,
|
|
46
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
def send_keys_to_element(self, element: WEB_ELEMENT_TYPEHINT, *keys_to_send: str) -> "ActionChains":
|
|
50
|
+
action_chains = self._send_keys_to_element_impl(get_legacy_instance(instance=element), *keys_to_send)
|
|
51
|
+
|
|
52
|
+
return self.from_legacy(
|
|
53
|
+
legacy_object=action_chains,
|
|
54
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
55
|
+
)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
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.sync.action_chains.base import BaseMixin
|
|
5
|
+
from osn_selenium.instances.unified.action_chains.move import UnifiedMoveMixin
|
|
6
|
+
from osn_selenium.abstract.instances.action_chains.move import AbstractMoveMixin
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
__all__ = ["MoveMixin"]
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class MoveMixin(BaseMixin, UnifiedMoveMixin, AbstractMoveMixin):
|
|
16
|
+
"""
|
|
17
|
+
Mixin class providing mouse movement interaction methods.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def move_by_offset(self, xoffset: int, yoffset: int) -> "ActionChains":
|
|
21
|
+
action_chains = self._move_by_offset_impl(xoffset=xoffset, yoffset=yoffset)
|
|
22
|
+
|
|
23
|
+
return self.from_legacy(
|
|
24
|
+
legacy_object=action_chains,
|
|
25
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
def move_to_element(self, to_element: WEB_ELEMENT_TYPEHINT) -> "ActionChains":
|
|
29
|
+
action_chains = self._move_to_element_impl(to_element=get_legacy_instance(instance=to_element))
|
|
30
|
+
|
|
31
|
+
return self.from_legacy(
|
|
32
|
+
legacy_object=action_chains,
|
|
33
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def move_to_element_with_offset(self, to_element: WEB_ELEMENT_TYPEHINT, xoffset: int, yoffset: int) -> "ActionChains":
|
|
37
|
+
action_chains = self._move_to_element_with_offset_impl(
|
|
38
|
+
to_element=get_legacy_instance(instance=to_element),
|
|
39
|
+
xoffset=xoffset,
|
|
40
|
+
yoffset=yoffset
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
return self.from_legacy(
|
|
44
|
+
legacy_object=action_chains,
|
|
45
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
46
|
+
)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
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.sync.action_chains.base import BaseMixin
|
|
5
|
+
from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
|
|
6
|
+
from osn_selenium.instances.unified.action_chains.scroll import UnifiedScrollMixin
|
|
7
|
+
from osn_selenium.abstract.instances.action_chains.scroll import AbstractScrollMixin
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
__all__ = ["ScrollMixin"]
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ScrollMixin(BaseMixin, UnifiedScrollMixin, AbstractScrollMixin):
|
|
17
|
+
"""
|
|
18
|
+
Mixin class providing scroll and wheel interaction methods.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
def scroll_by_amount(self, delta_x: int, delta_y: int) -> "ActionChains":
|
|
22
|
+
action_chains = self._scroll_by_amount_impl(delta_x=delta_x, delta_y=delta_y)
|
|
23
|
+
|
|
24
|
+
return self.from_legacy(
|
|
25
|
+
legacy_object=action_chains,
|
|
26
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
def scroll_from_origin(self, scroll_origin: ScrollOrigin, delta_x: int, delta_y: int) -> "ActionChains":
|
|
30
|
+
action_chains = self._scroll_from_origin_impl(scroll_origin=scroll_origin, delta_x=delta_x, delta_y=delta_y)
|
|
31
|
+
|
|
32
|
+
return self.from_legacy(
|
|
33
|
+
legacy_object=action_chains,
|
|
34
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
def scroll_to_element(self, element: WEB_ELEMENT_TYPEHINT) -> "ActionChains":
|
|
38
|
+
action_chains = self._scroll_to_element_impl(element=get_legacy_instance(instance=element))
|
|
39
|
+
|
|
40
|
+
return self.from_legacy(
|
|
41
|
+
legacy_object=action_chains,
|
|
42
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
43
|
+
)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING, Union
|
|
2
|
+
from osn_selenium.instances.sync.action_chains.base import BaseMixin
|
|
3
|
+
from osn_selenium.instances.unified.action_chains.utils import UnifiedUtilsMixin
|
|
4
|
+
from osn_selenium.abstract.instances.action_chains.utils import AbstractUtilsMixin
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
__all__ = ["UtilsMixin"]
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from osn_selenium.instances.sync.action_chains import ActionChains
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class UtilsMixin(BaseMixin, UnifiedUtilsMixin, AbstractUtilsMixin):
|
|
14
|
+
"""
|
|
15
|
+
Mixin class providing utility methods for action chains.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def pause(self, seconds: Union[float, int]) -> "ActionChains":
|
|
19
|
+
action_chains = self._pause_impl(seconds=seconds)
|
|
20
|
+
|
|
21
|
+
return self.from_legacy(
|
|
22
|
+
legacy_object=action_chains,
|
|
23
|
+
execute_js_script_function=self._execute_js_script_function,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
def perform(self) -> None:
|
|
27
|
+
self._perform_impl()
|
|
28
|
+
|
|
29
|
+
def reset_actions(self) -> None:
|
|
30
|
+
self._reset_actions_impl()
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
from typing import Self
|
|
2
|
+
from osn_selenium.instances._typehints import ALERT_TYPEHINT
|
|
3
|
+
from osn_selenium.instances.unified.alert import UnifiedAlert
|
|
4
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
5
|
+
from osn_selenium.abstract.instances.alert import AbstractAlert
|
|
6
|
+
from selenium.webdriver.common.alert import Alert as legacyAlert
|
|
7
|
+
from osn_selenium.exceptions.instance import (
|
|
8
|
+
CannotConvertTypeError
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
__all__ = ["Alert"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Alert(UnifiedAlert, AbstractAlert):
|
|
16
|
+
"""
|
|
17
|
+
Wrapper for the legacy Selenium Alert instance.
|
|
18
|
+
|
|
19
|
+
Manages browser alerts, prompts, and confirmation dialogs, allowing
|
|
20
|
+
acceptance, dismissal, text retrieval, and input.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
def __init__(self, selenium_alert: legacyAlert) -> None:
|
|
24
|
+
"""
|
|
25
|
+
Initializes the Alert wrapper.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
selenium_alert (legacyAlert): The legacy Selenium Alert instance to wrap.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
UnifiedAlert.__init__(self, selenium_alert=selenium_alert)
|
|
32
|
+
|
|
33
|
+
def accept(self) -> None:
|
|
34
|
+
self._accept_impl()
|
|
35
|
+
|
|
36
|
+
def dismiss(self) -> None:
|
|
37
|
+
self._dismiss_impl()
|
|
38
|
+
|
|
39
|
+
@classmethod
|
|
40
|
+
def from_legacy(cls, legacy_object: ALERT_TYPEHINT) -> Self:
|
|
41
|
+
"""
|
|
42
|
+
Creates an instance from a legacy Selenium Alert object.
|
|
43
|
+
|
|
44
|
+
This factory method is used to wrap an existing Selenium Alert
|
|
45
|
+
instance into the new interface.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
legacy_object (ALERT_TYPEHINT): The legacy Selenium Alert instance or its wrapper.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
Self: A new instance of a class implementing Alert.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
legacy_alert_obj = get_legacy_instance(instance=legacy_object)
|
|
55
|
+
|
|
56
|
+
if not isinstance(legacy_alert_obj, legacyAlert):
|
|
57
|
+
raise CannotConvertTypeError(from_=legacyAlert, to_=legacy_object)
|
|
58
|
+
|
|
59
|
+
return cls(selenium_alert=legacy_alert_obj)
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def legacy(self) -> legacyAlert:
|
|
63
|
+
return self._legacy_impl
|
|
64
|
+
|
|
65
|
+
def send_keys(self, keysToSend: str) -> None:
|
|
66
|
+
self._send_keys_impl(keysToSend=keysToSend)
|
|
67
|
+
|
|
68
|
+
def text(self) -> str:
|
|
69
|
+
return self._text_impl()
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
from typing import List, Self
|
|
2
|
+
from osn_selenium.instances._typehints import BROWSER_TYPEHINT
|
|
3
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
4
|
+
from osn_selenium.instances.unified.browser import UnifiedBrowser
|
|
5
|
+
from osn_selenium.abstract.instances.browser import AbstractBrowser
|
|
6
|
+
from osn_selenium.exceptions.instance import (
|
|
7
|
+
CannotConvertTypeError
|
|
8
|
+
)
|
|
9
|
+
from selenium.webdriver.common.bidi.browser import (
|
|
10
|
+
Browser as legacyBrowser,
|
|
11
|
+
ClientWindowInfo
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
__all__ = ["Browser"]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Browser(UnifiedBrowser, AbstractBrowser):
|
|
19
|
+
"""
|
|
20
|
+
Wrapper for the legacy Selenium BiDi Browser instance.
|
|
21
|
+
|
|
22
|
+
Provides methods to manage user contexts (profiles) and inspect client
|
|
23
|
+
window information via the WebDriver BiDi protocol.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(self, selenium_browser: legacyBrowser) -> None:
|
|
27
|
+
"""
|
|
28
|
+
Initializes the Browser wrapper.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
selenium_browser (legacyBrowser): The legacy Selenium Browser instance to wrap.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
UnifiedBrowser.__init__(self, selenium_browser=selenium_browser)
|
|
35
|
+
|
|
36
|
+
def create_user_context(self) -> str:
|
|
37
|
+
return self._create_user_context_impl()
|
|
38
|
+
|
|
39
|
+
@classmethod
|
|
40
|
+
def from_legacy(cls, legacy_object: BROWSER_TYPEHINT) -> Self:
|
|
41
|
+
"""
|
|
42
|
+
Creates an instance from a legacy Selenium Browser object.
|
|
43
|
+
|
|
44
|
+
This factory method is used to wrap an existing Selenium Browser
|
|
45
|
+
instance into the new interface.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
legacy_object (BROWSER_TYPEHINT): The legacy Selenium Browser instance or its wrapper.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
Self: A new instance of a class implementing Browser.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
legacy_browser_obj = get_legacy_instance(instance=legacy_object)
|
|
55
|
+
|
|
56
|
+
if not isinstance(legacy_browser_obj, legacyBrowser):
|
|
57
|
+
raise CannotConvertTypeError(from_=legacyBrowser, to_=legacy_object)
|
|
58
|
+
|
|
59
|
+
return cls(selenium_browser=legacy_browser_obj)
|
|
60
|
+
|
|
61
|
+
def get_client_windows(self) -> List[ClientWindowInfo]:
|
|
62
|
+
return self._get_client_windows_impl()
|
|
63
|
+
|
|
64
|
+
def get_user_contexts(self) -> List[str]:
|
|
65
|
+
return self._get_user_contexts_impl()
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def legacy(self) -> legacyBrowser:
|
|
69
|
+
return self._legacy_impl
|
|
70
|
+
|
|
71
|
+
def remove_user_context(self, user_context_id: str) -> None:
|
|
72
|
+
self._remove_user_context_impl(user_context_id=user_context_id)
|