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,148 @@
|
|
|
1
|
+
from typing import Union
|
|
2
|
+
from osn_selenium.abstract.instances.alert import AbstractAlert
|
|
3
|
+
from osn_selenium.abstract.instances.fedcm import AbstractFedCM
|
|
4
|
+
from selenium.webdriver.common.alert import Alert as legacyAlert
|
|
5
|
+
from selenium.webdriver.remote.fedcm import FedCM as legacyFedCM
|
|
6
|
+
from osn_selenium.abstract.instances.dialog import AbstractDialog
|
|
7
|
+
from osn_selenium.abstract.instances.mobile import AbstractMobile
|
|
8
|
+
from osn_selenium.abstract.instances.script import AbstractScript
|
|
9
|
+
from osn_selenium.abstract.instances.browser import AbstractBrowser
|
|
10
|
+
from osn_selenium.abstract.instances.network import AbstractNetwork
|
|
11
|
+
from osn_selenium.abstract.instances.storage import AbstractStorage
|
|
12
|
+
from osn_selenium.abstract.instances.switch_to import AbstractSwitchTo
|
|
13
|
+
from selenium.webdriver.remote.mobile import (
|
|
14
|
+
Mobile as legacyMobile
|
|
15
|
+
)
|
|
16
|
+
from osn_selenium.abstract.instances.shadow_root import AbstractShadowRoot
|
|
17
|
+
from osn_selenium.abstract.instances.web_element import AbstractWebElement
|
|
18
|
+
from osn_selenium.abstract.instances.permissions import AbstractPermissions
|
|
19
|
+
from selenium.webdriver.common.bidi.script import (
|
|
20
|
+
Script as legacyScript
|
|
21
|
+
)
|
|
22
|
+
from selenium.webdriver.common.fedcm.dialog import (
|
|
23
|
+
Dialog as legacyDialog
|
|
24
|
+
)
|
|
25
|
+
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
26
|
+
from osn_selenium.abstract.instances.web_extension import AbstractWebExtension
|
|
27
|
+
from selenium.webdriver.remote.switch_to import (
|
|
28
|
+
SwitchTo as legacySwitchTo
|
|
29
|
+
)
|
|
30
|
+
from selenium.webdriver.common.bidi.browser import (
|
|
31
|
+
Browser as legacyBrowser
|
|
32
|
+
)
|
|
33
|
+
from selenium.webdriver.common.bidi.network import (
|
|
34
|
+
Network as legacyNetwork
|
|
35
|
+
)
|
|
36
|
+
from selenium.webdriver.common.bidi.storage import (
|
|
37
|
+
Storage as legacyStorage
|
|
38
|
+
)
|
|
39
|
+
from selenium.webdriver.remote.webdriver import (
|
|
40
|
+
WebDriver as legacyWebDriver
|
|
41
|
+
)
|
|
42
|
+
from selenium.webdriver.remote.shadowroot import (
|
|
43
|
+
ShadowRoot as legacyShadowRoot
|
|
44
|
+
)
|
|
45
|
+
from selenium.webdriver.remote.webelement import (
|
|
46
|
+
WebElement as legacyWebElement
|
|
47
|
+
)
|
|
48
|
+
from selenium.webdriver.support.wait import (
|
|
49
|
+
WebDriverWait as legacyWebDriverWait
|
|
50
|
+
)
|
|
51
|
+
from osn_selenium.abstract.instances.web_driver_wait import (
|
|
52
|
+
AbstractWebDriverWait
|
|
53
|
+
)
|
|
54
|
+
from osn_selenium.abstract.instances.browsing_context import (
|
|
55
|
+
AbstractBrowsingContext
|
|
56
|
+
)
|
|
57
|
+
from selenium.webdriver.common.action_chains import (
|
|
58
|
+
ActionChains as legacyActionChains
|
|
59
|
+
)
|
|
60
|
+
from selenium.webdriver.common.bidi.permissions import (
|
|
61
|
+
Permissions as legacyPermissions
|
|
62
|
+
)
|
|
63
|
+
from selenium.webdriver.common.bidi.webextension import (
|
|
64
|
+
WebExtension as legacyWebExtension
|
|
65
|
+
)
|
|
66
|
+
from selenium.webdriver.common.bidi.browsing_context import (
|
|
67
|
+
BrowsingContext as legacyBrowsingContext
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
__all__ = [
|
|
72
|
+
"ACTION_CHAINS_TYPEHINT",
|
|
73
|
+
"ALERT_TYPEHINT",
|
|
74
|
+
"ANY_ABSTRACT_INSTANCE_TYPEHINT",
|
|
75
|
+
"ANY_LEGACY_INSTANCE_TYPEHINT",
|
|
76
|
+
"BROWSER_TYPEHINT",
|
|
77
|
+
"BROWSING_CONTEXT_TYPEHINT",
|
|
78
|
+
"DIALOG_TYPEHINT",
|
|
79
|
+
"FEDCM_TYPEHINT",
|
|
80
|
+
"MOBILE_TYPEHINT",
|
|
81
|
+
"NETWORK_TYPEHINT",
|
|
82
|
+
"PERMISSIONS_TYPEHINT",
|
|
83
|
+
"SCRIPT_TYPEHINT",
|
|
84
|
+
"SHADOW_ROOT_TYPEHINT",
|
|
85
|
+
"STORAGE_TYPEHINT",
|
|
86
|
+
"SWITCH_TO_TYPEHINT",
|
|
87
|
+
"WEB_DRIVER_WAIT_TYPEHINT",
|
|
88
|
+
"WEB_ELEMENT_TYPEHINT",
|
|
89
|
+
"WEB_EXTENSION_TYPEHINT",
|
|
90
|
+
"WebDriverWaitInputType"
|
|
91
|
+
]
|
|
92
|
+
|
|
93
|
+
ACTION_CHAINS_TYPEHINT = Union[AbstractActionChains, legacyActionChains]
|
|
94
|
+
ALERT_TYPEHINT = Union[AbstractAlert, legacyAlert]
|
|
95
|
+
BROWSER_TYPEHINT = Union[AbstractBrowser, legacyBrowser]
|
|
96
|
+
BROWSING_CONTEXT_TYPEHINT = Union[AbstractBrowsingContext, legacyBrowsingContext]
|
|
97
|
+
DIALOG_TYPEHINT = Union[AbstractDialog, legacyDialog]
|
|
98
|
+
FEDCM_TYPEHINT = Union[AbstractFedCM, legacyFedCM]
|
|
99
|
+
MOBILE_TYPEHINT = Union[AbstractMobile, legacyMobile]
|
|
100
|
+
NETWORK_TYPEHINT = Union[AbstractNetwork, legacyNetwork]
|
|
101
|
+
PERMISSIONS_TYPEHINT = Union[AbstractPermissions, legacyPermissions]
|
|
102
|
+
SCRIPT_TYPEHINT = Union[AbstractScript, legacyScript]
|
|
103
|
+
SHADOW_ROOT_TYPEHINT = Union[AbstractShadowRoot, legacyShadowRoot]
|
|
104
|
+
STORAGE_TYPEHINT = Union[AbstractStorage, legacyStorage]
|
|
105
|
+
SWITCH_TO_TYPEHINT = Union[AbstractSwitchTo, legacySwitchTo]
|
|
106
|
+
WEB_DRIVER_WAIT_TYPEHINT = Union[AbstractWebDriverWait, legacyWebDriverWait]
|
|
107
|
+
WEB_ELEMENT_TYPEHINT = Union[AbstractWebElement, legacyWebElement]
|
|
108
|
+
WEB_EXTENSION_TYPEHINT = Union[AbstractWebExtension, legacyWebExtension]
|
|
109
|
+
|
|
110
|
+
ANY_ABSTRACT_INSTANCE_TYPEHINT = Union[
|
|
111
|
+
AbstractAlert,
|
|
112
|
+
AbstractFedCM,
|
|
113
|
+
AbstractWebElement,
|
|
114
|
+
AbstractActionChains,
|
|
115
|
+
AbstractBrowser,
|
|
116
|
+
AbstractBrowsingContext,
|
|
117
|
+
AbstractDialog,
|
|
118
|
+
AbstractMobile,
|
|
119
|
+
AbstractNetwork,
|
|
120
|
+
AbstractStorage,
|
|
121
|
+
AbstractSwitchTo,
|
|
122
|
+
AbstractScript,
|
|
123
|
+
AbstractShadowRoot,
|
|
124
|
+
AbstractPermissions,
|
|
125
|
+
AbstractWebExtension,
|
|
126
|
+
AbstractWebDriverWait,
|
|
127
|
+
]
|
|
128
|
+
|
|
129
|
+
ANY_LEGACY_INSTANCE_TYPEHINT = Union[
|
|
130
|
+
legacyAlert,
|
|
131
|
+
legacyFedCM,
|
|
132
|
+
legacyWebElement,
|
|
133
|
+
legacyActionChains,
|
|
134
|
+
legacyBrowser,
|
|
135
|
+
legacyBrowsingContext,
|
|
136
|
+
legacyDialog,
|
|
137
|
+
legacyMobile,
|
|
138
|
+
legacyNetwork,
|
|
139
|
+
legacyStorage,
|
|
140
|
+
legacySwitchTo,
|
|
141
|
+
legacyScript,
|
|
142
|
+
legacyShadowRoot,
|
|
143
|
+
legacyPermissions,
|
|
144
|
+
legacyWebExtension,
|
|
145
|
+
legacyWebDriverWait,
|
|
146
|
+
]
|
|
147
|
+
|
|
148
|
+
WebDriverWaitInputType = Union[legacyWebElement, legacyWebDriver]
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
from osn_selenium.models import Point
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
__all__ = [
|
|
5
|
+
"MoveOffset",
|
|
6
|
+
"MovePart",
|
|
7
|
+
"MoveStep",
|
|
8
|
+
"ScrollDelta",
|
|
9
|
+
"ScrollPart",
|
|
10
|
+
"TextInputPart"
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class TextInputPart:
|
|
15
|
+
"""
|
|
16
|
+
Represents a segment of text input with an associated duration.
|
|
17
|
+
|
|
18
|
+
Attributes:
|
|
19
|
+
text (str): The chunk of text for this part.
|
|
20
|
+
duration (int): Duration (milliseconds) associated with this part.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
def __init__(self, text: str, duration: int):
|
|
24
|
+
self.text: str = text
|
|
25
|
+
self.duration: int = duration
|
|
26
|
+
|
|
27
|
+
def __repr__(self) -> str:
|
|
28
|
+
return self.__str__()
|
|
29
|
+
|
|
30
|
+
def __str__(self) -> str:
|
|
31
|
+
return f"TextInputPart(text={self.text}, duration={self.duration})"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class ScrollDelta:
|
|
35
|
+
"""
|
|
36
|
+
Represents the change in scroll position (dx, dy).
|
|
37
|
+
|
|
38
|
+
Attributes:
|
|
39
|
+
x (int): Horizontal scroll amount.
|
|
40
|
+
y (int): Vertical scroll amount.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
def __init__(self, x: int, y: int):
|
|
44
|
+
self.x: int = x
|
|
45
|
+
self.y: int = y
|
|
46
|
+
|
|
47
|
+
def __repr__(self) -> str:
|
|
48
|
+
return self.__str__()
|
|
49
|
+
|
|
50
|
+
def __str__(self) -> str:
|
|
51
|
+
return f"ScrollDelta(x={self.x}, y={self.y})"
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class ScrollPart:
|
|
55
|
+
"""
|
|
56
|
+
Represents a segment of a simulated scroll action.
|
|
57
|
+
|
|
58
|
+
Attributes:
|
|
59
|
+
point (Point): Coordinate point before this scroll segment.
|
|
60
|
+
delta (ScrollDelta): Scroll amount (dx, dy) for this segment.
|
|
61
|
+
duration (int): Duration (milliseconds) for this scroll segment.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
def __init__(self, point: Point, delta: ScrollDelta, duration: int):
|
|
65
|
+
self.point: Point = point
|
|
66
|
+
self.delta: ScrollDelta = delta
|
|
67
|
+
self.duration: int = duration
|
|
68
|
+
|
|
69
|
+
def __repr__(self) -> str:
|
|
70
|
+
return self.__str__()
|
|
71
|
+
|
|
72
|
+
def __str__(self) -> str:
|
|
73
|
+
return (
|
|
74
|
+
f"ScrollPart(point={self.point}, delta={self.delta}, duration={self.duration})"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class MoveStep:
|
|
79
|
+
"""
|
|
80
|
+
Internal helper class representing a step in a movement calculation.
|
|
81
|
+
|
|
82
|
+
Attributes:
|
|
83
|
+
amplitude_x (int): The horizontal component or amplitude of this step.
|
|
84
|
+
amplitude_y (int): The vertical component or amplitude of this step.
|
|
85
|
+
index (int): An index identifying this step's position in a sequence.
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
def __init__(self, amplitude_x: int, amplitude_y: int, index: int):
|
|
89
|
+
self.amplitude_x: int = amplitude_x
|
|
90
|
+
self.amplitude_y: int = amplitude_y
|
|
91
|
+
self.index: int = index
|
|
92
|
+
|
|
93
|
+
def __repr__(self) -> str:
|
|
94
|
+
return self.__str__()
|
|
95
|
+
|
|
96
|
+
def __str__(self) -> str:
|
|
97
|
+
return (
|
|
98
|
+
f"MoveStep(amplitude_x={self.amplitude_x}, amplitude_y={self.amplitude_y})"
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class MoveOffset:
|
|
103
|
+
"""
|
|
104
|
+
Represents a 2D offset or displacement (dx, dy).
|
|
105
|
+
|
|
106
|
+
Attributes:
|
|
107
|
+
x (int): Horizontal offset component.
|
|
108
|
+
y (int): Vertical offset component.
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
def __init__(self, x: int, y: int):
|
|
112
|
+
self.x: int = x
|
|
113
|
+
self.y: int = y
|
|
114
|
+
|
|
115
|
+
def __repr__(self) -> str:
|
|
116
|
+
return self.__str__()
|
|
117
|
+
|
|
118
|
+
def __str__(self) -> str:
|
|
119
|
+
return f"MoveOffset(x={self.x}, y={self.y})"
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class MovePart:
|
|
123
|
+
"""
|
|
124
|
+
Represents a segment of a simulated mouse movement.
|
|
125
|
+
|
|
126
|
+
Attributes:
|
|
127
|
+
point (Point): Target coordinate point.
|
|
128
|
+
offset (MoveOffset): Offset (dx, dy) for this segment.
|
|
129
|
+
duration (int): Duration (milliseconds) for this movement segment.
|
|
130
|
+
"""
|
|
131
|
+
|
|
132
|
+
def __init__(self, point: Point, offset: MoveOffset, duration: int):
|
|
133
|
+
self.point: Point = point
|
|
134
|
+
self.offset: MoveOffset = offset
|
|
135
|
+
self.duration: int = duration
|
|
136
|
+
|
|
137
|
+
def __repr__(self) -> str:
|
|
138
|
+
return self.__str__()
|
|
139
|
+
|
|
140
|
+
def __str__(self) -> str:
|
|
141
|
+
return (
|
|
142
|
+
f"MovePart(point={self.point}, offset={self.offset}, duration={self.duration})"
|
|
143
|
+
)
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import trio
|
|
2
|
+
from selenium.webdriver.common.alert import Alert as legacyAlert
|
|
3
|
+
from selenium.webdriver.remote.fedcm import FedCM as legacyFedCM
|
|
4
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
5
|
+
from selenium.webdriver.remote.mobile import (
|
|
6
|
+
Mobile as legacyMobile
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium.exceptions.protocol import (
|
|
9
|
+
ProtocolComplianceError
|
|
10
|
+
)
|
|
11
|
+
from typing import (
|
|
12
|
+
Any,
|
|
13
|
+
Optional,
|
|
14
|
+
Type,
|
|
15
|
+
TypeVar,
|
|
16
|
+
Union,
|
|
17
|
+
overload
|
|
18
|
+
)
|
|
19
|
+
from selenium.webdriver.common.bidi.script import (
|
|
20
|
+
Script as legacyScript
|
|
21
|
+
)
|
|
22
|
+
from selenium.webdriver.common.fedcm.dialog import (
|
|
23
|
+
Dialog as legacyDialog
|
|
24
|
+
)
|
|
25
|
+
from selenium.webdriver.remote.switch_to import (
|
|
26
|
+
SwitchTo as legacySwitchTo
|
|
27
|
+
)
|
|
28
|
+
from selenium.webdriver.common.bidi.browser import (
|
|
29
|
+
Browser as legacyBrowser
|
|
30
|
+
)
|
|
31
|
+
from selenium.webdriver.common.bidi.network import (
|
|
32
|
+
Network as legacyNetwork
|
|
33
|
+
)
|
|
34
|
+
from selenium.webdriver.common.bidi.storage import (
|
|
35
|
+
Storage as legacyStorage
|
|
36
|
+
)
|
|
37
|
+
from selenium.webdriver.remote.shadowroot import (
|
|
38
|
+
ShadowRoot as legacyShadowRoot
|
|
39
|
+
)
|
|
40
|
+
from selenium.webdriver.remote.webelement import (
|
|
41
|
+
WebElement as legacyWebElement
|
|
42
|
+
)
|
|
43
|
+
from selenium.webdriver.support.wait import (
|
|
44
|
+
WebDriverWait as legacyWebDriverWait
|
|
45
|
+
)
|
|
46
|
+
from selenium.webdriver.common.action_chains import (
|
|
47
|
+
ActionChains as legacyActionChains
|
|
48
|
+
)
|
|
49
|
+
from selenium.webdriver.common.bidi.permissions import (
|
|
50
|
+
Permissions as legacyPermissions
|
|
51
|
+
)
|
|
52
|
+
from selenium.webdriver.common.bidi.webextension import (
|
|
53
|
+
WebExtension as legacyWebExtension
|
|
54
|
+
)
|
|
55
|
+
from osn_selenium.instances.protocols import (
|
|
56
|
+
SyncInstanceWrapper,
|
|
57
|
+
TrioThreadInstanceWrapper
|
|
58
|
+
)
|
|
59
|
+
from selenium.webdriver.common.bidi.browsing_context import (
|
|
60
|
+
BrowsingContext as legacyBrowsingContext
|
|
61
|
+
)
|
|
62
|
+
from osn_selenium.instances._typehints import (
|
|
63
|
+
ACTION_CHAINS_TYPEHINT,
|
|
64
|
+
ALERT_TYPEHINT,
|
|
65
|
+
ANY_ABSTRACT_INSTANCE_TYPEHINT,
|
|
66
|
+
ANY_LEGACY_INSTANCE_TYPEHINT,
|
|
67
|
+
BROWSER_TYPEHINT,
|
|
68
|
+
BROWSING_CONTEXT_TYPEHINT,
|
|
69
|
+
DIALOG_TYPEHINT,
|
|
70
|
+
FEDCM_TYPEHINT,
|
|
71
|
+
MOBILE_TYPEHINT,
|
|
72
|
+
NETWORK_TYPEHINT,
|
|
73
|
+
PERMISSIONS_TYPEHINT,
|
|
74
|
+
SCRIPT_TYPEHINT,
|
|
75
|
+
SHADOW_ROOT_TYPEHINT,
|
|
76
|
+
STORAGE_TYPEHINT,
|
|
77
|
+
SWITCH_TO_TYPEHINT,
|
|
78
|
+
WEB_DRIVER_WAIT_TYPEHINT,
|
|
79
|
+
WEB_ELEMENT_TYPEHINT,
|
|
80
|
+
WEB_EXTENSION_TYPEHINT
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
__all__ = [
|
|
85
|
+
"get_legacy_frame_reference",
|
|
86
|
+
"get_legacy_instance",
|
|
87
|
+
"get_sync_instance_wrapper",
|
|
88
|
+
"get_trio_thread_instance_wrapper"
|
|
89
|
+
]
|
|
90
|
+
|
|
91
|
+
_SYNC_WRAPPER_TYPE = TypeVar("_SYNC_WRAPPER_TYPE", bound=SyncInstanceWrapper)
|
|
92
|
+
_TRIO_THREAD_WRAPPER_TYPE = TypeVar("_TRIO_THREAD_WRAPPER_TYPE", bound=TrioThreadInstanceWrapper)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
@overload
|
|
96
|
+
def get_legacy_instance(instance: None) -> None:
|
|
97
|
+
...
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
@overload
|
|
101
|
+
def get_legacy_instance(instance: Optional[ALERT_TYPEHINT]) -> Optional[legacyAlert]:
|
|
102
|
+
...
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
@overload
|
|
106
|
+
def get_legacy_instance(instance: Optional[FEDCM_TYPEHINT]) -> Optional[legacyFedCM]:
|
|
107
|
+
...
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
@overload
|
|
111
|
+
def get_legacy_instance(instance: Optional[DIALOG_TYPEHINT]) -> Optional[legacyDialog]:
|
|
112
|
+
...
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@overload
|
|
116
|
+
def get_legacy_instance(instance: Optional[MOBILE_TYPEHINT]) -> Optional[legacyMobile]:
|
|
117
|
+
...
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
@overload
|
|
121
|
+
def get_legacy_instance(instance: Optional[SCRIPT_TYPEHINT]) -> Optional[legacyScript]:
|
|
122
|
+
...
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@overload
|
|
126
|
+
def get_legacy_instance(instance: Optional[BROWSER_TYPEHINT]) -> Optional[legacyBrowser]:
|
|
127
|
+
...
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@overload
|
|
131
|
+
def get_legacy_instance(instance: Optional[NETWORK_TYPEHINT]) -> Optional[legacyNetwork]:
|
|
132
|
+
...
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
@overload
|
|
136
|
+
def get_legacy_instance(instance: Optional[STORAGE_TYPEHINT]) -> Optional[legacyStorage]:
|
|
137
|
+
...
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
@overload
|
|
141
|
+
def get_legacy_instance(instance: Optional[SWITCH_TO_TYPEHINT]) -> Optional[legacySwitchTo]:
|
|
142
|
+
...
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
@overload
|
|
146
|
+
def get_legacy_instance(instance: Optional[SHADOW_ROOT_TYPEHINT]) -> Optional[legacyShadowRoot]:
|
|
147
|
+
...
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
@overload
|
|
151
|
+
def get_legacy_instance(instance: Optional[WEB_ELEMENT_TYPEHINT]) -> Optional[legacyWebElement]:
|
|
152
|
+
...
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
@overload
|
|
156
|
+
def get_legacy_instance(instance: Optional[PERMISSIONS_TYPEHINT]) -> Optional[legacyPermissions]:
|
|
157
|
+
...
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
@overload
|
|
161
|
+
def get_legacy_instance(instance: Optional[ACTION_CHAINS_TYPEHINT]) -> Optional[legacyActionChains]:
|
|
162
|
+
...
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
@overload
|
|
166
|
+
def get_legacy_instance(instance: Optional[WEB_EXTENSION_TYPEHINT]) -> Optional[legacyWebExtension]:
|
|
167
|
+
...
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
@overload
|
|
171
|
+
def get_legacy_instance(instance: Optional[WEB_DRIVER_WAIT_TYPEHINT]) -> Optional[legacyWebDriverWait]:
|
|
172
|
+
...
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
@overload
|
|
176
|
+
def get_legacy_instance(instance: Optional[BROWSING_CONTEXT_TYPEHINT]) -> Optional[legacyBrowsingContext]:
|
|
177
|
+
...
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def get_legacy_instance(
|
|
181
|
+
instance: Optional[Union[ANY_ABSTRACT_INSTANCE_TYPEHINT, ANY_LEGACY_INSTANCE_TYPEHINT]]
|
|
182
|
+
) -> Optional[ANY_LEGACY_INSTANCE_TYPEHINT]:
|
|
183
|
+
"""
|
|
184
|
+
Converts an abstract Selenium instance to its corresponding legacy Selenium instance.
|
|
185
|
+
|
|
186
|
+
This function handles various types of Selenium objects, including browser contexts,
|
|
187
|
+
web elements, alerts, and more. It returns the legacy object if the input is an
|
|
188
|
+
abstract instance, or the input itself if it's already a legacy instance or None.
|
|
189
|
+
|
|
190
|
+
Args:
|
|
191
|
+
instance (Optional[Union[ANY_ABSTRACT_TYPE, ANY_LEGACY_TYPE]]): The instance to convert.
|
|
192
|
+
Can be an abstract instance,
|
|
193
|
+
a legacy instance, or None.
|
|
194
|
+
|
|
195
|
+
Returns:
|
|
196
|
+
Optional[ANY_LEGACY_TYPE]: The converted legacy instance,
|
|
197
|
+
or None if the input was None.
|
|
198
|
+
|
|
199
|
+
Raises:
|
|
200
|
+
ExpectedTypeError: If the input instance is of an unsupported type.
|
|
201
|
+
"""
|
|
202
|
+
|
|
203
|
+
if instance is None:
|
|
204
|
+
return None
|
|
205
|
+
|
|
206
|
+
if isinstance(instance, ANY_ABSTRACT_INSTANCE_TYPEHINT):
|
|
207
|
+
return instance.legacy
|
|
208
|
+
|
|
209
|
+
if isinstance(instance, ANY_LEGACY_INSTANCE_TYPEHINT):
|
|
210
|
+
return instance
|
|
211
|
+
|
|
212
|
+
raise NotExpectedTypeError(
|
|
213
|
+
expected_type=(ANY_ABSTRACT_INSTANCE_TYPEHINT, ANY_LEGACY_INSTANCE_TYPEHINT, None),
|
|
214
|
+
received_instance=instance
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def get_trio_thread_instance_wrapper(
|
|
219
|
+
wrapper_class: Type[_TRIO_THREAD_WRAPPER_TYPE],
|
|
220
|
+
legacy_object: Any,
|
|
221
|
+
lock: trio.Lock,
|
|
222
|
+
limiter: trio.CapacityLimiter,
|
|
223
|
+
) -> _TRIO_THREAD_WRAPPER_TYPE:
|
|
224
|
+
"""
|
|
225
|
+
Creates a Trio-compatible thread instance wrapper for a legacy Selenium object.
|
|
226
|
+
|
|
227
|
+
Args:
|
|
228
|
+
wrapper_class (Type[_TRIO_THREAD_WRAPPER_TYPE]): The class used to wrap the legacy object.
|
|
229
|
+
legacy_object (Any): The legacy Selenium object to be wrapped.
|
|
230
|
+
lock (trio.Lock): The lock for Trio synchronization.
|
|
231
|
+
limiter (trio.CapacityLimiter): The capacity limiter for Trio.
|
|
232
|
+
|
|
233
|
+
Returns:
|
|
234
|
+
_TRIO_THREAD_WRAPPER_TYPE: An instance of the wrapper class.
|
|
235
|
+
|
|
236
|
+
Raises:
|
|
237
|
+
TypeIsNotWrapper: If the provided wrapper_class does not implement TrioThreadInstanceWrapper.
|
|
238
|
+
"""
|
|
239
|
+
|
|
240
|
+
if not isinstance(wrapper_class, TrioThreadInstanceWrapper):
|
|
241
|
+
raise ProtocolComplianceError(instance=wrapper_class, expected_protocols=TrioThreadInstanceWrapper)
|
|
242
|
+
|
|
243
|
+
return wrapper_class.from_legacy(legacy_object=legacy_object, lock=lock, limiter=limiter)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def get_sync_instance_wrapper(wrapper_class: Type[_SYNC_WRAPPER_TYPE], legacy_object: Any) -> _SYNC_WRAPPER_TYPE:
|
|
247
|
+
"""
|
|
248
|
+
Creates a synchronous instance wrapper for a legacy Selenium object.
|
|
249
|
+
|
|
250
|
+
Args:
|
|
251
|
+
wrapper_class (Type[_SYNC_WRAPPER_TYPE]): The class used to wrap the legacy object.
|
|
252
|
+
legacy_object (Any): The legacy Selenium object to be wrapped.
|
|
253
|
+
|
|
254
|
+
Returns:
|
|
255
|
+
_SYNC_WRAPPER_TYPE: An instance of the wrapper class.
|
|
256
|
+
|
|
257
|
+
Raises:
|
|
258
|
+
TypeIsNotWrapper: If the provided wrapper_class does not implement SyncInstanceWrapper.
|
|
259
|
+
"""
|
|
260
|
+
|
|
261
|
+
if not isinstance(wrapper_class, SyncInstanceWrapper):
|
|
262
|
+
raise ProtocolComplianceError(instance=wrapper_class, expected_protocols=SyncInstanceWrapper)
|
|
263
|
+
|
|
264
|
+
return wrapper_class.from_legacy(legacy_object=legacy_object)
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
def get_legacy_frame_reference(frame_reference: Optional[Union[str, int, WEB_ELEMENT_TYPEHINT]]) -> Optional[Union[str, int, legacyWebElement]]:
|
|
268
|
+
"""
|
|
269
|
+
Converts a frame reference to its legacy Selenium equivalent.
|
|
270
|
+
|
|
271
|
+
The frame reference can be a string (frame name), an integer (frame index),
|
|
272
|
+
an AbstractWebElement, or a legacy WebElement. If it's a web element,
|
|
273
|
+
it is converted to its legacy WebElement form using `get_legacy_instance`.
|
|
274
|
+
|
|
275
|
+
Args:
|
|
276
|
+
frame_reference (Optional[Union[str, int, WEB_ELEMENT_TYPEHINT]]): The reference to the frame.
|
|
277
|
+
|
|
278
|
+
Returns:
|
|
279
|
+
Optional[Union[str, int, legacyWebElement]]: The legacy frame reference,
|
|
280
|
+
which can be a string, integer,
|
|
281
|
+
or a legacy WebElement, or None.
|
|
282
|
+
"""
|
|
283
|
+
|
|
284
|
+
if isinstance(frame_reference, (str, int)):
|
|
285
|
+
return frame_reference
|
|
286
|
+
|
|
287
|
+
return get_legacy_instance(instance=frame_reference)
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import trio
|
|
2
|
+
from typing import (
|
|
3
|
+
Protocol,
|
|
4
|
+
Self,
|
|
5
|
+
TypeVar,
|
|
6
|
+
runtime_checkable
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"AnyInstanceWrapper",
|
|
12
|
+
"SyncInstanceWrapper",
|
|
13
|
+
"TrioThreadInstanceWrapper"
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
_LEGACY_OBJECT = TypeVar("_LEGACY_OBJECT")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@runtime_checkable
|
|
20
|
+
class TrioThreadInstanceWrapper(Protocol):
|
|
21
|
+
"""
|
|
22
|
+
Protocol for instances that wrap legacy objects and operate within Trio threads.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
@classmethod
|
|
26
|
+
def from_legacy(
|
|
27
|
+
cls,
|
|
28
|
+
legacy_object: _LEGACY_OBJECT,
|
|
29
|
+
lock: trio.Lock,
|
|
30
|
+
limiter: trio.CapacityLimiter
|
|
31
|
+
) -> Self:
|
|
32
|
+
"""
|
|
33
|
+
Creates an instance of the wrapper from a legacy object.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
legacy_object (_LEGACY_OBJECT): The legacy Selenium object to wrap.
|
|
37
|
+
lock (trio.Lock): Trio lock for synchronization.
|
|
38
|
+
limiter (trio.CapacityLimiter): Trio capacity limiter.
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
Self: An instance of the wrapper.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
...
|
|
45
|
+
|
|
46
|
+
@property
|
|
47
|
+
def legacy(self) -> _LEGACY_OBJECT:
|
|
48
|
+
"""
|
|
49
|
+
Returns the underlying legacy Selenium object.
|
|
50
|
+
|
|
51
|
+
Returns:
|
|
52
|
+
_LEGACY_OBJECT: The legacy Selenium instance.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
...
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@runtime_checkable
|
|
59
|
+
class SyncInstanceWrapper(Protocol):
|
|
60
|
+
"""
|
|
61
|
+
Protocol for instances that wrap legacy objects for synchronous use.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
@classmethod
|
|
65
|
+
def from_legacy(cls, legacy_object: _LEGACY_OBJECT) -> Self:
|
|
66
|
+
"""
|
|
67
|
+
Creates an instance of the wrapper from a legacy object.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
legacy_object (_LEGACY_OBJECT): The legacy Selenium object to wrap.
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
Self: An instance of the wrapper.
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
...
|
|
77
|
+
|
|
78
|
+
@property
|
|
79
|
+
def legacy(self) -> _LEGACY_OBJECT:
|
|
80
|
+
"""
|
|
81
|
+
Returns the underlying legacy Selenium object.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
_LEGACY_OBJECT: The legacy Selenium instance.
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
...
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@runtime_checkable
|
|
91
|
+
class AnyInstanceWrapper(Protocol):
|
|
92
|
+
"""
|
|
93
|
+
General protocol for any instance wrapper providing access to a legacy object.
|
|
94
|
+
"""
|
|
95
|
+
|
|
96
|
+
@property
|
|
97
|
+
def legacy(self) -> _LEGACY_OBJECT:
|
|
98
|
+
"""
|
|
99
|
+
Returns the underlying legacy Selenium object.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
_LEGACY_OBJECT: The legacy Selenium instance.
|
|
103
|
+
"""
|
|
104
|
+
|
|
105
|
+
...
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from osn_selenium.instances.sync.action_chains.click import ClickMixin
|
|
2
|
+
from osn_selenium.instances.sync.action_chains.utils import UtilsMixin
|
|
3
|
+
from osn_selenium.instances.sync.action_chains.hm_move import HMMoveMixin
|
|
4
|
+
from osn_selenium.instances.sync.action_chains.hm_scroll import HMScrollMixin
|
|
5
|
+
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
6
|
+
from osn_selenium.instances.sync.action_chains.hm_keyboard import HMKeyboardMixin
|
|
7
|
+
from osn_selenium.instances.sync.action_chains.drag_and_drop import DragAndDropMixin
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
__all__ = ["ActionChains"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ActionChains(
|
|
14
|
+
ClickMixin,
|
|
15
|
+
DragAndDropMixin,
|
|
16
|
+
UtilsMixin,
|
|
17
|
+
HMKeyboardMixin,
|
|
18
|
+
HMMoveMixin,
|
|
19
|
+
HMScrollMixin,
|
|
20
|
+
AbstractActionChains,
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
ActionChains class combining standard and human-like interaction mixins.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
pass
|