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,91 @@
|
|
|
1
|
+
from selenium.webdriver.common.by import By
|
|
2
|
+
from typing import (
|
|
3
|
+
List,
|
|
4
|
+
Optional,
|
|
5
|
+
Self,
|
|
6
|
+
TYPE_CHECKING
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium.instances._typehints import SHADOW_ROOT_TYPEHINT
|
|
9
|
+
from osn_selenium.exceptions.instance import (
|
|
10
|
+
CannotConvertTypeError
|
|
11
|
+
)
|
|
12
|
+
from osn_selenium.instances.unified.shadow_root import UnifiedShadowRoot
|
|
13
|
+
from osn_selenium.abstract.instances.shadow_root import AbstractShadowRoot
|
|
14
|
+
from selenium.webdriver.remote.shadowroot import (
|
|
15
|
+
ShadowRoot as legacyShadowRoot
|
|
16
|
+
)
|
|
17
|
+
from osn_selenium.instances.convert import (
|
|
18
|
+
get_legacy_instance,
|
|
19
|
+
get_sync_instance_wrapper
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
__all__ = ["ShadowRoot"]
|
|
24
|
+
|
|
25
|
+
if TYPE_CHECKING:
|
|
26
|
+
from osn_selenium.instances.sync.web_element import WebElement
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ShadowRoot(UnifiedShadowRoot, AbstractShadowRoot):
|
|
30
|
+
"""
|
|
31
|
+
Wrapper for the legacy Selenium ShadowRoot instance.
|
|
32
|
+
|
|
33
|
+
Represents the root of a Shadow DOM tree, allowing element search
|
|
34
|
+
within the encapsulated shadow scope.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
def __init__(self, selenium_shadow_root: legacyShadowRoot) -> None:
|
|
38
|
+
"""
|
|
39
|
+
Initializes the ShadowRoot wrapper.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
selenium_shadow_root (legacyShadowRoot): The legacy Selenium ShadowRoot instance to wrap.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
UnifiedShadowRoot.__init__(self, selenium_shadow_root=selenium_shadow_root)
|
|
46
|
+
|
|
47
|
+
def find_element(self, by: str = By.ID, value: Optional[str] = None) -> "WebElement":
|
|
48
|
+
legacy_element = self._find_element_impl(by=by, value=value)
|
|
49
|
+
|
|
50
|
+
from osn_selenium.instances.sync.web_element import WebElement
|
|
51
|
+
|
|
52
|
+
return get_sync_instance_wrapper(wrapper_class=WebElement, legacy_object=legacy_element)
|
|
53
|
+
|
|
54
|
+
def find_elements(self, by: str = By.ID, value: Optional[str] = None) -> List["WebElement"]:
|
|
55
|
+
legacy_elements = self._find_elements_impl(by=by, value=value)
|
|
56
|
+
|
|
57
|
+
from osn_selenium.instances.sync.web_element import WebElement
|
|
58
|
+
|
|
59
|
+
return [
|
|
60
|
+
get_sync_instance_wrapper(wrapper_class=WebElement, legacy_object=legacy_element)
|
|
61
|
+
for legacy_element in legacy_elements
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
@classmethod
|
|
65
|
+
def from_legacy(cls, legacy_object: SHADOW_ROOT_TYPEHINT) -> Self:
|
|
66
|
+
"""
|
|
67
|
+
Creates an instance from a legacy Selenium ShadowRoot object.
|
|
68
|
+
|
|
69
|
+
This factory method is used to wrap an existing Selenium ShadowRoot
|
|
70
|
+
instance into the new interface.
|
|
71
|
+
|
|
72
|
+
Args:
|
|
73
|
+
legacy_object (SHADOW_ROOT_TYPEHINT): The legacy Selenium ShadowRoot instance or its wrapper.
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
Self: A new instance of a class implementing ShadowRoot.
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
legacy_shadow_root_obj = get_legacy_instance(instance=legacy_object)
|
|
80
|
+
|
|
81
|
+
if not isinstance(legacy_shadow_root_obj, legacyShadowRoot):
|
|
82
|
+
raise CannotConvertTypeError(from_=legacyShadowRoot, to_=legacy_object)
|
|
83
|
+
|
|
84
|
+
return cls(selenium_shadow_root=legacy_shadow_root_obj)
|
|
85
|
+
|
|
86
|
+
def id(self) -> str:
|
|
87
|
+
return self._id_impl()
|
|
88
|
+
|
|
89
|
+
@property
|
|
90
|
+
def legacy(self) -> legacyShadowRoot:
|
|
91
|
+
return self._legacy_impl
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Optional,
|
|
3
|
+
Self,
|
|
4
|
+
Union
|
|
5
|
+
)
|
|
6
|
+
from osn_selenium.instances._typehints import STORAGE_TYPEHINT
|
|
7
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
8
|
+
from osn_selenium.instances.unified.storage import UnifiedStorage
|
|
9
|
+
from osn_selenium.abstract.instances.storage import AbstractStorage
|
|
10
|
+
from osn_selenium.exceptions.instance import (
|
|
11
|
+
CannotConvertTypeError
|
|
12
|
+
)
|
|
13
|
+
from selenium.webdriver.common.bidi.storage import (
|
|
14
|
+
BrowsingContextPartitionDescriptor,
|
|
15
|
+
CookieFilter,
|
|
16
|
+
DeleteCookiesResult,
|
|
17
|
+
GetCookiesResult,
|
|
18
|
+
PartialCookie,
|
|
19
|
+
SetCookieResult,
|
|
20
|
+
Storage as legacyStorage,
|
|
21
|
+
StorageKeyPartitionDescriptor
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
__all__ = ["Storage"]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class Storage(UnifiedStorage, AbstractStorage):
|
|
29
|
+
"""
|
|
30
|
+
Wrapper for the legacy Selenium BiDi Storage instance.
|
|
31
|
+
|
|
32
|
+
Manages browser storage mechanisms, primarily focusing on getting, setting,
|
|
33
|
+
and deleting cookies with specific filters and partition descriptors.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
def __init__(self, selenium_storage: legacyStorage) -> None:
|
|
37
|
+
"""
|
|
38
|
+
Initializes the Storage wrapper.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
selenium_storage (legacyStorage): The legacy Selenium Storage instance to wrap.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
UnifiedStorage.__init__(self, selenium_storage=selenium_storage)
|
|
45
|
+
|
|
46
|
+
def delete_cookies(
|
|
47
|
+
self,
|
|
48
|
+
filter: Optional[CookieFilter] = None,
|
|
49
|
+
partition: Optional[Union[BrowsingContextPartitionDescriptor, StorageKeyPartitionDescriptor]] = None,
|
|
50
|
+
) -> DeleteCookiesResult:
|
|
51
|
+
return self._delete_cookies_impl(filter=filter, partition=partition)
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def from_legacy(cls, legacy_object: STORAGE_TYPEHINT) -> Self:
|
|
55
|
+
"""
|
|
56
|
+
Creates an instance from a legacy Selenium Storage object.
|
|
57
|
+
|
|
58
|
+
This factory method is used to wrap an existing Selenium Storage
|
|
59
|
+
instance into the new interface.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
legacy_object (STORAGE_TYPEHINT): The legacy Selenium Storage instance or its wrapper.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
Self: A new instance of a class implementing Storage.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
legacy_storage_obj = get_legacy_instance(instance=legacy_object)
|
|
69
|
+
|
|
70
|
+
if not isinstance(legacy_storage_obj, legacyStorage):
|
|
71
|
+
raise CannotConvertTypeError(from_=legacyStorage, to_=legacy_object)
|
|
72
|
+
|
|
73
|
+
return cls(selenium_storage=legacy_storage_obj)
|
|
74
|
+
|
|
75
|
+
def get_cookies(
|
|
76
|
+
self,
|
|
77
|
+
filter: Optional[CookieFilter] = None,
|
|
78
|
+
partition: Optional[Union[BrowsingContextPartitionDescriptor, StorageKeyPartitionDescriptor]] = None,
|
|
79
|
+
) -> GetCookiesResult:
|
|
80
|
+
return self._get_cookies_impl(filter=filter, partition=partition)
|
|
81
|
+
|
|
82
|
+
@property
|
|
83
|
+
def legacy(self) -> legacyStorage:
|
|
84
|
+
return self._legacy_impl
|
|
85
|
+
|
|
86
|
+
def set_cookie(
|
|
87
|
+
self,
|
|
88
|
+
cookie: PartialCookie,
|
|
89
|
+
partition: Optional[Union[BrowsingContextPartitionDescriptor, StorageKeyPartitionDescriptor]] = None,
|
|
90
|
+
) -> SetCookieResult:
|
|
91
|
+
return self._set_cookie_impl(cookie=cookie, partition=partition)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Optional,
|
|
3
|
+
Self,
|
|
4
|
+
Union
|
|
5
|
+
)
|
|
6
|
+
from osn_selenium.instances.sync.alert import Alert
|
|
7
|
+
from osn_selenium.instances.sync.web_element import WebElement
|
|
8
|
+
from osn_selenium.instances.unified.switch_to import UnifiedSwitchTo
|
|
9
|
+
from osn_selenium.abstract.instances.switch_to import AbstractSwitchTo
|
|
10
|
+
from osn_selenium.exceptions.instance import (
|
|
11
|
+
CannotConvertTypeError
|
|
12
|
+
)
|
|
13
|
+
from selenium.webdriver.remote.switch_to import (
|
|
14
|
+
SwitchTo as legacySwitchTo
|
|
15
|
+
)
|
|
16
|
+
from osn_selenium.instances._typehints import (
|
|
17
|
+
SWITCH_TO_TYPEHINT,
|
|
18
|
+
WEB_ELEMENT_TYPEHINT
|
|
19
|
+
)
|
|
20
|
+
from osn_selenium.instances.convert import (
|
|
21
|
+
get_legacy_instance,
|
|
22
|
+
get_sync_instance_wrapper
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
__all__ = ["SwitchTo"]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class SwitchTo(UnifiedSwitchTo, AbstractSwitchTo):
|
|
30
|
+
"""
|
|
31
|
+
Wrapper for the legacy Selenium SwitchTo instance.
|
|
32
|
+
|
|
33
|
+
Provides mechanisms to change the driver's focus to different frames,
|
|
34
|
+
windows, or alerts.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
def __init__(self, selenium_switch_to: legacySwitchTo) -> None:
|
|
38
|
+
"""
|
|
39
|
+
Initializes the SwitchTo wrapper.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
selenium_switch_to (legacySwitchTo): The legacy Selenium SwitchTo instance to wrap.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
UnifiedSwitchTo.__init__(self, selenium_switch_to=selenium_switch_to)
|
|
46
|
+
|
|
47
|
+
def active_element(self) -> WebElement:
|
|
48
|
+
return get_sync_instance_wrapper(wrapper_class=WebElement, legacy_object=self._active_element_impl())
|
|
49
|
+
|
|
50
|
+
def alert(self) -> Alert:
|
|
51
|
+
return get_sync_instance_wrapper(wrapper_class=Alert, legacy_object=self._alert_impl())
|
|
52
|
+
|
|
53
|
+
def default_content(self) -> None:
|
|
54
|
+
self._default_content_impl()
|
|
55
|
+
|
|
56
|
+
def frame(self, frame_reference: Union[str, int, WEB_ELEMENT_TYPEHINT]) -> None:
|
|
57
|
+
self._frame_impl(frame_reference=frame_reference)
|
|
58
|
+
|
|
59
|
+
@classmethod
|
|
60
|
+
def from_legacy(cls, legacy_object: SWITCH_TO_TYPEHINT) -> Self:
|
|
61
|
+
"""
|
|
62
|
+
Creates an instance from a legacy Selenium SwitchTo object.
|
|
63
|
+
|
|
64
|
+
This factory method is used to wrap an existing Selenium SwitchTo
|
|
65
|
+
instance into the new interface.
|
|
66
|
+
|
|
67
|
+
Args:
|
|
68
|
+
legacy_object (SWITCH_TO_TYPEHINT): The legacy Selenium SwitchTo instance or its wrapper.
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
Self: A new instance of a class implementing SwitchTo.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
legacy_switch_to_obj = get_legacy_instance(instance=legacy_object)
|
|
75
|
+
|
|
76
|
+
if not isinstance(legacy_switch_to_obj, legacySwitchTo):
|
|
77
|
+
raise CannotConvertTypeError(from_=legacySwitchTo, to_=legacy_object)
|
|
78
|
+
|
|
79
|
+
return cls(selenium_switch_to=legacy_switch_to_obj)
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def legacy(self) -> legacySwitchTo:
|
|
83
|
+
return self._legacy_impl
|
|
84
|
+
|
|
85
|
+
def new_window(self, type_hint: Optional[str] = None) -> None:
|
|
86
|
+
self._new_window_impl(type_hint=type_hint)
|
|
87
|
+
|
|
88
|
+
def parent_frame(self) -> None:
|
|
89
|
+
self._parent_frame_impl()
|
|
90
|
+
|
|
91
|
+
def window(self, window_name: str) -> None:
|
|
92
|
+
self._window_impl(window_name=window_name)
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Callable,
|
|
3
|
+
Self,
|
|
4
|
+
TypeVar
|
|
5
|
+
)
|
|
6
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
7
|
+
from osn_selenium.exceptions.instance import (
|
|
8
|
+
CannotConvertTypeError
|
|
9
|
+
)
|
|
10
|
+
from osn_selenium.instances._typehints import (
|
|
11
|
+
WebDriverWaitInputType
|
|
12
|
+
)
|
|
13
|
+
from osn_selenium.instances.unified.web_driver_wait import UnifiedWebDriverWait
|
|
14
|
+
from selenium.webdriver.support.wait import (
|
|
15
|
+
WebDriverWait as legacyWebDriverWait
|
|
16
|
+
)
|
|
17
|
+
from osn_selenium.abstract.instances.web_driver_wait import (
|
|
18
|
+
AbstractWebDriverWait
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
__all__ = ["OUTPUT", "WebDriverWait"]
|
|
23
|
+
|
|
24
|
+
OUTPUT = TypeVar("OUTPUT")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class WebDriverWait(UnifiedWebDriverWait, AbstractWebDriverWait):
|
|
28
|
+
"""
|
|
29
|
+
Wrapper for the legacy Selenium WebDriverWait instance.
|
|
30
|
+
|
|
31
|
+
Provides conditional waiting functionality, pausing execution until
|
|
32
|
+
specific conditions (expected conditions) are met or a timeout occurs.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
def __init__(self, selenium_webdriver_wait: legacyWebDriverWait) -> None:
|
|
36
|
+
"""
|
|
37
|
+
Initializes the WebDriverWait wrapper.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
selenium_webdriver_wait (legacyWebDriverWait): The legacy Selenium WebDriverWait instance to wrap.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
UnifiedWebDriverWait.__init__(self, selenium_webdriver_wait=selenium_webdriver_wait)
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
def from_legacy(cls, legacy_object: legacyWebDriverWait) -> Self:
|
|
47
|
+
"""
|
|
48
|
+
Creates a WebDriverWait wrapper instance from a legacy Selenium object.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
legacy_object (legacyWebDriverWait): The legacy object to convert.
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
Self: An instance of the WebDriverWait wrapper.
|
|
55
|
+
|
|
56
|
+
Raises:
|
|
57
|
+
CannotConvertTypeError: If the provided object cannot be converted to legacyWebDriverWait.
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
legacy_wait_obj = get_legacy_instance(instance=legacy_object)
|
|
61
|
+
|
|
62
|
+
if not isinstance(legacy_wait_obj, legacyWebDriverWait):
|
|
63
|
+
raise CannotConvertTypeError(from_=legacyWebDriverWait, to_=legacy_object)
|
|
64
|
+
|
|
65
|
+
return cls(selenium_webdriver_wait=legacy_wait_obj)
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def legacy(self) -> legacyWebDriverWait:
|
|
69
|
+
return self._legacy_impl
|
|
70
|
+
|
|
71
|
+
def until(
|
|
72
|
+
self,
|
|
73
|
+
method: Callable[[WebDriverWaitInputType], OUTPUT],
|
|
74
|
+
message: str = ""
|
|
75
|
+
) -> OUTPUT:
|
|
76
|
+
return self._until_impl(method=method, message=message)
|
|
77
|
+
|
|
78
|
+
def until_not(
|
|
79
|
+
self,
|
|
80
|
+
method: Callable[[WebDriverWaitInputType], OUTPUT],
|
|
81
|
+
message: str = ""
|
|
82
|
+
) -> OUTPUT:
|
|
83
|
+
return self._until_not_impl(method=method, message=message)
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
from selenium.webdriver.common.by import By
|
|
2
|
+
from osn_selenium.instances.sync.shadow_root import ShadowRoot
|
|
3
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
4
|
+
from osn_selenium.instances.sync.web_driver_wait import WebDriverWait
|
|
5
|
+
from typing import (
|
|
6
|
+
Any,
|
|
7
|
+
Dict,
|
|
8
|
+
Iterable,
|
|
9
|
+
List,
|
|
10
|
+
Optional,
|
|
11
|
+
Self
|
|
12
|
+
)
|
|
13
|
+
from osn_selenium.exceptions.instance import (
|
|
14
|
+
CannotConvertTypeError
|
|
15
|
+
)
|
|
16
|
+
from osn_selenium.instances.unified.web_element import UnifiedWebElement
|
|
17
|
+
from osn_selenium.abstract.instances.web_element import AbstractWebElement
|
|
18
|
+
from selenium.webdriver.remote.webelement import (
|
|
19
|
+
WebElement as legacyWebElement
|
|
20
|
+
)
|
|
21
|
+
from osn_selenium.instances.convert import (
|
|
22
|
+
get_legacy_instance,
|
|
23
|
+
get_sync_instance_wrapper
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
__all__ = ["WebElement"]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class WebElement(UnifiedWebElement, AbstractWebElement):
|
|
31
|
+
"""
|
|
32
|
+
Represents an HTML element in the DOM, offering methods for interaction (click, type),
|
|
33
|
+
property retrieval, and finding child elements.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
def __init__(self, selenium_web_element: legacyWebElement) -> None:
|
|
37
|
+
"""
|
|
38
|
+
Initializes the WebElement wrapper.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
selenium_web_element (legacyWebElement): The legacy Selenium WebElement instance to wrap.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
UnifiedWebElement.__init__(self, selenium_web_element=selenium_web_element)
|
|
45
|
+
|
|
46
|
+
def accessible_name(self) -> str:
|
|
47
|
+
return self._accessible_name_impl()
|
|
48
|
+
|
|
49
|
+
def aria_role(self) -> str:
|
|
50
|
+
return self._aria_role_impl()
|
|
51
|
+
|
|
52
|
+
def clear(self) -> None:
|
|
53
|
+
self._clear_impl()
|
|
54
|
+
|
|
55
|
+
def click(self) -> None:
|
|
56
|
+
self._click_impl()
|
|
57
|
+
|
|
58
|
+
def find_element(self, by: str = By.ID, value: Any = None) -> Self:
|
|
59
|
+
web_element = self._find_element_impl(by=by, value=value)
|
|
60
|
+
|
|
61
|
+
return get_sync_instance_wrapper(wrapper_class=self.__class__, legacy_object=web_element)
|
|
62
|
+
|
|
63
|
+
def find_elements(self, by: str = By.ID, value: Any = None) -> List[Self]:
|
|
64
|
+
web_elements = self._find_elements_impl(by=by, value=value)
|
|
65
|
+
|
|
66
|
+
return [
|
|
67
|
+
get_sync_instance_wrapper(wrapper_class=self.__class__, legacy_object=web_element)
|
|
68
|
+
for web_element in web_elements
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
def get_attribute(self, name: str) -> Optional[str]:
|
|
72
|
+
return self._get_attribute_impl(name=name)
|
|
73
|
+
|
|
74
|
+
def get_dom_attribute(self, name: str) -> Optional[str]:
|
|
75
|
+
return self._get_dom_attribute_impl(name=name)
|
|
76
|
+
|
|
77
|
+
def get_property(self, name: str) -> Any:
|
|
78
|
+
return self._get_property_impl(name=name)
|
|
79
|
+
|
|
80
|
+
def id(self) -> str:
|
|
81
|
+
return self._id_impl()
|
|
82
|
+
|
|
83
|
+
def is_displayed(self) -> bool:
|
|
84
|
+
return self._is_displayed_impl()
|
|
85
|
+
|
|
86
|
+
def is_enabled(self) -> bool:
|
|
87
|
+
return self._is_enabled_impl()
|
|
88
|
+
|
|
89
|
+
def is_selected(self) -> bool:
|
|
90
|
+
return self._is_selected_impl()
|
|
91
|
+
|
|
92
|
+
@property
|
|
93
|
+
def legacy(self) -> legacyWebElement:
|
|
94
|
+
return self._legacy_impl
|
|
95
|
+
|
|
96
|
+
def location(self) -> Dict:
|
|
97
|
+
return self._location_impl()
|
|
98
|
+
|
|
99
|
+
def location_once_scrolled_into_view(self) -> Dict:
|
|
100
|
+
return self._location_once_scrolled_into_view_impl()
|
|
101
|
+
|
|
102
|
+
@classmethod
|
|
103
|
+
def from_legacy(cls, legacy_object: WEB_ELEMENT_TYPEHINT) -> Self:
|
|
104
|
+
"""
|
|
105
|
+
Creates an instance from a legacy Selenium WebElement object.
|
|
106
|
+
|
|
107
|
+
This factory method is used to wrap an existing Selenium WebElement
|
|
108
|
+
instance into the new interface.
|
|
109
|
+
|
|
110
|
+
Args:
|
|
111
|
+
legacy_object (WEB_ELEMENT_TYPEHINT): The legacy Selenium WebElement instance or its wrapper.
|
|
112
|
+
|
|
113
|
+
Returns:
|
|
114
|
+
Self: A new instance of a class implementing WebElement.
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
legacy_element_obj = get_legacy_instance(instance=legacy_object)
|
|
118
|
+
|
|
119
|
+
if not isinstance(legacy_element_obj, legacyWebElement):
|
|
120
|
+
raise CannotConvertTypeError(from_=legacyWebElement, to_=legacy_object)
|
|
121
|
+
|
|
122
|
+
return cls(selenium_web_element=legacy_element_obj)
|
|
123
|
+
|
|
124
|
+
def parent(self) -> Self:
|
|
125
|
+
web_element = self._parent_impl()
|
|
126
|
+
|
|
127
|
+
return self.from_legacy(legacy_object=web_element)
|
|
128
|
+
|
|
129
|
+
def rect(self) -> Dict:
|
|
130
|
+
return self._rect_impl()
|
|
131
|
+
|
|
132
|
+
def screenshot(self, filename: str) -> bool:
|
|
133
|
+
return self._screenshot_impl(filename=filename)
|
|
134
|
+
|
|
135
|
+
def screenshot_as_base64(self) -> str:
|
|
136
|
+
return self._screenshot_as_base64_impl()
|
|
137
|
+
|
|
138
|
+
def screenshot_as_png(self) -> bytes:
|
|
139
|
+
return self._screenshot_as_png_impl()
|
|
140
|
+
|
|
141
|
+
def send_keys(self, *value: str) -> None:
|
|
142
|
+
self._send_keys_impl(*value)
|
|
143
|
+
|
|
144
|
+
def session_id(self) -> str:
|
|
145
|
+
return self._session_id_impl()
|
|
146
|
+
|
|
147
|
+
def shadow_root(self) -> ShadowRoot:
|
|
148
|
+
shadow_root = self._shadow_root_impl()
|
|
149
|
+
|
|
150
|
+
return get_sync_instance_wrapper(wrapper_class=ShadowRoot, legacy_object=shadow_root)
|
|
151
|
+
|
|
152
|
+
def size(self) -> Dict:
|
|
153
|
+
return self._size_impl()
|
|
154
|
+
|
|
155
|
+
def submit(self) -> None:
|
|
156
|
+
self._submit_impl()
|
|
157
|
+
|
|
158
|
+
def tag_name(self) -> str:
|
|
159
|
+
return self._tag_name_impl()
|
|
160
|
+
|
|
161
|
+
def text(self) -> str:
|
|
162
|
+
return self._text_impl()
|
|
163
|
+
|
|
164
|
+
def value_of_css_property(self, property_name: str) -> str:
|
|
165
|
+
return self._value_of_css_property_impl(property_name=property_name)
|
|
166
|
+
|
|
167
|
+
def web_driver_wait(
|
|
168
|
+
self,
|
|
169
|
+
timeout: float,
|
|
170
|
+
poll_frequency: float = 0.5,
|
|
171
|
+
ignored_exceptions: Optional[Iterable[BaseException]] = None,
|
|
172
|
+
) -> WebDriverWait:
|
|
173
|
+
web_driver_wait = self._web_driver_wait_impl(
|
|
174
|
+
timeout=timeout,
|
|
175
|
+
poll_frequency=poll_frequency,
|
|
176
|
+
ignored_exceptions=ignored_exceptions,
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
return get_sync_instance_wrapper(wrapper_class=WebDriverWait, legacy_object=web_driver_wait)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Dict,
|
|
3
|
+
Optional,
|
|
4
|
+
Self,
|
|
5
|
+
Union
|
|
6
|
+
)
|
|
7
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
8
|
+
from osn_selenium.exceptions.instance import (
|
|
9
|
+
CannotConvertTypeError
|
|
10
|
+
)
|
|
11
|
+
from osn_selenium.instances._typehints import (
|
|
12
|
+
WEB_EXTENSION_TYPEHINT
|
|
13
|
+
)
|
|
14
|
+
from osn_selenium.instances.unified.web_extension import UnifiedWebExtension
|
|
15
|
+
from osn_selenium.abstract.instances.web_extension import AbstractWebExtension
|
|
16
|
+
from selenium.webdriver.common.bidi.webextension import (
|
|
17
|
+
WebExtension as legacyWebExtension
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
__all__ = ["WebExtension"]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class WebExtension(UnifiedWebExtension, AbstractWebExtension):
|
|
25
|
+
"""
|
|
26
|
+
Wrapper for the legacy Selenium WebExtension instance.
|
|
27
|
+
|
|
28
|
+
Manages the installation and uninstallation of browser extensions via the
|
|
29
|
+
WebDriver BiDi protocol.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
def __init__(self, selenium_web_extension: legacyWebExtension) -> None:
|
|
33
|
+
"""
|
|
34
|
+
Initializes the WebExtension wrapper.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
selenium_web_extension (legacyWebExtension): The legacy Selenium WebExtension instance to wrap.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
UnifiedWebExtension.__init__(self, selenium_web_extension=selenium_web_extension)
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def from_legacy(cls, legacy_object: WEB_EXTENSION_TYPEHINT) -> Self:
|
|
44
|
+
"""
|
|
45
|
+
Creates an instance from a legacy Selenium WebExtension object.
|
|
46
|
+
|
|
47
|
+
This factory method is used to wrap an existing Selenium WebExtension
|
|
48
|
+
instance into the new interface.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
legacy_object (WEB_EXTENSION_TYPEHINT): The legacy Selenium WebExtension instance or its wrapper.
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
Self: A new instance of a class implementing WebExtension.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
legacy_web_extension_obj = get_legacy_instance(instance=legacy_object)
|
|
58
|
+
|
|
59
|
+
if not isinstance(legacy_web_extension_obj, legacyWebExtension):
|
|
60
|
+
raise CannotConvertTypeError(from_=legacyWebExtension, to_=legacy_object)
|
|
61
|
+
|
|
62
|
+
return cls(selenium_web_extension=legacy_web_extension_obj)
|
|
63
|
+
|
|
64
|
+
def install(
|
|
65
|
+
self,
|
|
66
|
+
path: Optional[str] = None,
|
|
67
|
+
archive_path: Optional[str] = None,
|
|
68
|
+
base64_value: Optional[str] = None,
|
|
69
|
+
) -> Dict:
|
|
70
|
+
return self._install_impl(path=path, archive_path=archive_path, base64_value=base64_value)
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def legacy(self) -> legacyWebExtension:
|
|
74
|
+
return self._legacy_impl
|
|
75
|
+
|
|
76
|
+
def uninstall(self, extension_id_or_result: Union[str, Dict]) -> None:
|
|
77
|
+
self._uninstall_impl(extension_id_or_result=extension_id_or_result)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
2
|
+
from osn_selenium.instances.trio_threads.action_chains.click import ClickMixin
|
|
3
|
+
from osn_selenium.instances.trio_threads.action_chains.utils import UtilsMixin
|
|
4
|
+
from osn_selenium.instances.trio_threads.action_chains.hm_move import HMMoveMixin
|
|
5
|
+
from osn_selenium.instances.trio_threads.action_chains.hm_scroll import HMScrollMixin
|
|
6
|
+
from osn_selenium.instances.trio_threads.action_chains.hm_keyboard import HMKeyboardMixin
|
|
7
|
+
from osn_selenium.instances.trio_threads.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
|