osn-selenium 0.0.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- osn_selenium/_base_models.py +41 -0
- osn_selenium/_cdp_import.py +253 -0
- osn_selenium/_functions.py +84 -0
- osn_selenium/_typehints.py +19 -0
- osn_selenium/abstract/executors/cdp/__init__.py +435 -0
- osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
- osn_selenium/abstract/executors/cdp/animation.py +47 -0
- osn_selenium/abstract/executors/cdp/audits.py +39 -0
- osn_selenium/abstract/executors/cdp/autofill.py +34 -0
- osn_selenium/abstract/executors/cdp/background_service.py +22 -0
- osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
- osn_selenium/abstract/executors/cdp/browser.py +122 -0
- osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
- osn_selenium/abstract/executors/cdp/cast.py +31 -0
- osn_selenium/abstract/executors/cdp/console.py +18 -0
- osn_selenium/abstract/executors/cdp/css.py +197 -0
- osn_selenium/abstract/executors/cdp/debugger.py +198 -0
- osn_selenium/abstract/executors/cdp/device_access.py +22 -0
- osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
- osn_selenium/abstract/executors/cdp/dom.py +305 -0
- osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
- osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
- osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
- osn_selenium/abstract/executors/cdp/emulation.py +259 -0
- osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
- osn_selenium/abstract/executors/cdp/extensions.py +31 -0
- osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
- osn_selenium/abstract/executors/cdp/fetch.py +76 -0
- osn_selenium/abstract/executors/cdp/file_system.py +11 -0
- osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
- osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
- osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
- osn_selenium/abstract/executors/cdp/input.py +158 -0
- osn_selenium/abstract/executors/cdp/inspector.py +14 -0
- osn_selenium/abstract/executors/cdp/io.py +24 -0
- osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
- osn_selenium/abstract/executors/cdp/log.py +27 -0
- osn_selenium/abstract/executors/cdp/media.py +14 -0
- osn_selenium/abstract/executors/cdp/memory.py +61 -0
- osn_selenium/abstract/executors/cdp/network.py +252 -0
- osn_selenium/abstract/executors/cdp/overlay.py +166 -0
- osn_selenium/abstract/executors/cdp/page.py +347 -0
- osn_selenium/abstract/executors/cdp/performance.py +28 -0
- osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
- osn_selenium/abstract/executors/cdp/preload.py +14 -0
- osn_selenium/abstract/executors/cdp/profiler.py +54 -0
- osn_selenium/abstract/executors/cdp/pwa.py +46 -0
- osn_selenium/abstract/executors/cdp/runtime.py +176 -0
- osn_selenium/abstract/executors/cdp/schema.py +11 -0
- osn_selenium/abstract/executors/cdp/security.py +26 -0
- osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
- osn_selenium/abstract/executors/cdp/storage.py +175 -0
- osn_selenium/abstract/executors/cdp/system_info.py +24 -0
- osn_selenium/abstract/executors/cdp/target.py +125 -0
- osn_selenium/abstract/executors/cdp/tethering.py +14 -0
- osn_selenium/abstract/executors/cdp/tracing.py +48 -0
- osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
- osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
- osn_selenium/abstract/executors/cdp.py +63 -0
- osn_selenium/abstract/executors/javascript.py +203 -0
- osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
- osn_selenium/abstract/instances/action_chains/base.py +25 -0
- osn_selenium/abstract/instances/action_chains/click.py +93 -0
- osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
- osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
- osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
- osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
- osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
- osn_selenium/abstract/instances/action_chains/move.py +60 -0
- osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
- osn_selenium/abstract/instances/action_chains/utils.py +44 -0
- osn_selenium/abstract/instances/alert.py +67 -0
- osn_selenium/abstract/instances/browser.py +76 -0
- osn_selenium/abstract/instances/browsing_context.py +310 -0
- osn_selenium/abstract/instances/dialog.py +107 -0
- osn_selenium/abstract/instances/fedcm.py +133 -0
- osn_selenium/abstract/instances/mobile.py +79 -0
- osn_selenium/abstract/instances/network.py +100 -0
- osn_selenium/abstract/instances/permissions.py +52 -0
- osn_selenium/abstract/instances/script.py +109 -0
- osn_selenium/abstract/instances/shadow_root.py +81 -0
- osn_selenium/abstract/instances/storage.py +98 -0
- osn_selenium/abstract/instances/switch_to.py +104 -0
- osn_selenium/abstract/instances/web_driver_wait.py +57 -0
- osn_selenium/abstract/instances/web_element.py +395 -0
- osn_selenium/abstract/instances/web_extension.py +70 -0
- osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
- osn_selenium/abstract/webdriver/blink/base.py +80 -0
- osn_selenium/abstract/webdriver/blink/casting.py +82 -0
- osn_selenium/abstract/webdriver/blink/features.py +51 -0
- osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
- osn_selenium/abstract/webdriver/blink/logging.py +40 -0
- osn_selenium/abstract/webdriver/blink/network.py +45 -0
- osn_selenium/abstract/webdriver/blink/settings.py +68 -0
- osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
- osn_selenium/abstract/webdriver/chrome/base.py +36 -0
- osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
- osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
- osn_selenium/abstract/webdriver/core/__init__.py +16 -0
- osn_selenium/abstract/webdriver/core/actions.py +58 -0
- osn_selenium/abstract/webdriver/core/auth.py +145 -0
- osn_selenium/abstract/webdriver/core/base.py +298 -0
- osn_selenium/abstract/webdriver/core/capture.py +84 -0
- osn_selenium/abstract/webdriver/core/components.py +82 -0
- osn_selenium/abstract/webdriver/core/devtools.py +69 -0
- osn_selenium/abstract/webdriver/core/element.py +55 -0
- osn_selenium/abstract/webdriver/core/file.py +82 -0
- osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
- osn_selenium/abstract/webdriver/core/navigation.py +65 -0
- osn_selenium/abstract/webdriver/core/script.py +88 -0
- osn_selenium/abstract/webdriver/core/settings.py +43 -0
- osn_selenium/abstract/webdriver/core/storage.py +81 -0
- osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
- osn_selenium/abstract/webdriver/core/window.py +237 -0
- osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
- osn_selenium/abstract/webdriver/edge/base.py +36 -0
- osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
- osn_selenium/abstract/webdriver/edge/settings.py +110 -0
- osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
- osn_selenium/abstract/webdriver/yandex/base.py +18 -0
- osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
- osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
- osn_selenium/base_mixin.py +122 -0
- osn_selenium/browsers_handler/__init__.py +47 -17
- osn_selenium/browsers_handler/_linux.py +226 -0
- osn_selenium/browsers_handler/_windows.py +21 -14
- osn_selenium/browsers_handler/{types.py → models.py} +5 -2
- osn_selenium/dev_tools/_decorators.py +149 -0
- osn_selenium/dev_tools/_exception_helpers.py +116 -0
- osn_selenium/dev_tools/_functions.py +174 -0
- osn_selenium/dev_tools/_system_utils.py +35 -0
- osn_selenium/dev_tools/_typehints.py +35 -0
- osn_selenium/dev_tools/_validators.py +227 -0
- osn_selenium/dev_tools/_wrappers.py +92 -0
- osn_selenium/dev_tools/domains/__init__.py +7 -40
- osn_selenium/dev_tools/domains/abstract.py +98 -254
- osn_selenium/dev_tools/domains/fetch.py +229 -906
- osn_selenium/dev_tools/domains_default/fetch.py +40 -28
- osn_selenium/dev_tools/filters.py +40 -0
- osn_selenium/dev_tools/logger/main.py +214 -0
- osn_selenium/dev_tools/logger/models.py +232 -0
- osn_selenium/dev_tools/logger/target.py +278 -0
- osn_selenium/dev_tools/manager/__init__.py +16 -0
- osn_selenium/dev_tools/manager/base.py +124 -0
- osn_selenium/dev_tools/manager/lifecycle.py +236 -0
- osn_selenium/dev_tools/manager/logging.py +153 -0
- osn_selenium/dev_tools/manager/settings.py +89 -0
- osn_selenium/dev_tools/manager/targets.py +175 -0
- osn_selenium/dev_tools/models.py +49 -0
- osn_selenium/dev_tools/settings.py +139 -0
- osn_selenium/dev_tools/target/__init__.py +16 -0
- osn_selenium/dev_tools/target/base.py +427 -0
- osn_selenium/dev_tools/target/detach.py +54 -0
- osn_selenium/dev_tools/target/discovery.py +112 -0
- osn_selenium/dev_tools/target/events.py +120 -0
- osn_selenium/dev_tools/target/fingerprint.py +126 -0
- osn_selenium/dev_tools/target/lifecycle.py +184 -0
- osn_selenium/dev_tools/target/logging.py +163 -0
- osn_selenium/exceptions/__init__.py +1 -0
- osn_selenium/exceptions/base.py +9 -0
- osn_selenium/exceptions/configuration.py +84 -0
- osn_selenium/exceptions/dependencies.py +60 -0
- osn_selenium/exceptions/devtools.py +114 -0
- osn_selenium/exceptions/flags.py +45 -0
- osn_selenium/exceptions/instance.py +92 -0
- osn_selenium/exceptions/javascript.py +31 -0
- osn_selenium/exceptions/logic.py +31 -0
- osn_selenium/exceptions/path.py +77 -0
- osn_selenium/exceptions/platform.py +33 -0
- osn_selenium/exceptions/protocol.py +86 -0
- osn_selenium/exceptions/webdriver.py +44 -0
- osn_selenium/exceptions/window.py +63 -0
- osn_selenium/executors/__init__.py +1 -0
- osn_selenium/executors/sync/__init__.py +1 -0
- osn_selenium/executors/sync/cdp/__init__.py +550 -0
- osn_selenium/executors/sync/cdp/accessibility.py +74 -0
- osn_selenium/executors/sync/cdp/animation.py +50 -0
- osn_selenium/executors/sync/cdp/audits.py +48 -0
- osn_selenium/executors/sync/cdp/autofill.py +39 -0
- osn_selenium/executors/sync/cdp/background_service.py +30 -0
- osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
- osn_selenium/executors/sync/cdp/browser.py +131 -0
- osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
- osn_selenium/executors/sync/cdp/cast.py +38 -0
- osn_selenium/executors/sync/cdp/console.py +24 -0
- osn_selenium/executors/sync/cdp/css.py +187 -0
- osn_selenium/executors/sync/cdp/debugger.py +206 -0
- osn_selenium/executors/sync/cdp/device_access.py +27 -0
- osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
- osn_selenium/executors/sync/cdp/dom.py +310 -0
- osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
- osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
- osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
- osn_selenium/executors/sync/cdp/emulation.py +270 -0
- osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
- osn_selenium/executors/sync/cdp/extensions.py +39 -0
- osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
- osn_selenium/executors/sync/cdp/fetch.py +96 -0
- osn_selenium/executors/sync/cdp/file_system.py +18 -0
- osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
- osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
- osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
- osn_selenium/executors/sync/cdp/input.py +233 -0
- osn_selenium/executors/sync/cdp/inspector.py +21 -0
- osn_selenium/executors/sync/cdp/io.py +33 -0
- osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
- osn_selenium/executors/sync/cdp/log.py +35 -0
- osn_selenium/executors/sync/cdp/media.py +21 -0
- osn_selenium/executors/sync/cdp/memory.py +62 -0
- osn_selenium/executors/sync/cdp/network.py +287 -0
- osn_selenium/executors/sync/cdp/overlay.py +174 -0
- osn_selenium/executors/sync/cdp/page.py +365 -0
- osn_selenium/executors/sync/cdp/performance.py +33 -0
- osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
- osn_selenium/executors/sync/cdp/preload.py +21 -0
- osn_selenium/executors/sync/cdp/profiler.py +58 -0
- osn_selenium/executors/sync/cdp/pwa.py +55 -0
- osn_selenium/executors/sync/cdp/runtime.py +221 -0
- osn_selenium/executors/sync/cdp/schema.py +23 -0
- osn_selenium/executors/sync/cdp/security.py +30 -0
- osn_selenium/executors/sync/cdp/service_worker.py +56 -0
- osn_selenium/executors/sync/cdp/storage.py +151 -0
- osn_selenium/executors/sync/cdp/system_info.py +30 -0
- osn_selenium/executors/sync/cdp/target.py +147 -0
- osn_selenium/executors/sync/cdp/tethering.py +21 -0
- osn_selenium/executors/sync/cdp/tracing.py +62 -0
- osn_selenium/executors/sync/cdp/web_audio.py +24 -0
- osn_selenium/executors/sync/cdp/web_authn.py +82 -0
- osn_selenium/executors/sync/cdp.py +100 -0
- osn_selenium/executors/sync/javascript.py +79 -0
- osn_selenium/executors/trio_threads/__init__.py +1 -0
- osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
- osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
- osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
- osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
- osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
- osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
- osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
- osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
- osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
- osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
- osn_selenium/executors/trio_threads/cdp/console.py +33 -0
- osn_selenium/executors/trio_threads/cdp/css.py +196 -0
- osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
- osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
- osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
- osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
- osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
- osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
- osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
- osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
- osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
- osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
- osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
- osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
- osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
- osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
- osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
- osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
- osn_selenium/executors/trio_threads/cdp/input.py +242 -0
- osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
- osn_selenium/executors/trio_threads/cdp/io.py +42 -0
- osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
- osn_selenium/executors/trio_threads/cdp/log.py +44 -0
- osn_selenium/executors/trio_threads/cdp/media.py +30 -0
- osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
- osn_selenium/executors/trio_threads/cdp/network.py +296 -0
- osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
- osn_selenium/executors/trio_threads/cdp/page.py +374 -0
- osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
- osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
- osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
- osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
- osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
- osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
- osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
- osn_selenium/executors/trio_threads/cdp/security.py +43 -0
- osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
- osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
- osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
- osn_selenium/executors/trio_threads/cdp/target.py +156 -0
- osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
- osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
- osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
- osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
- osn_selenium/executors/trio_threads/cdp.py +104 -0
- osn_selenium/executors/trio_threads/javascript.py +90 -0
- osn_selenium/executors/unified/__init__.py +1 -0
- osn_selenium/executors/unified/cdp/__init__.py +1 -0
- osn_selenium/executors/unified/cdp/accessibility.py +81 -0
- osn_selenium/executors/unified/cdp/animation.py +50 -0
- osn_selenium/executors/unified/cdp/audits.py +45 -0
- osn_selenium/executors/unified/cdp/autofill.py +41 -0
- osn_selenium/executors/unified/cdp/background_service.py +24 -0
- osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
- osn_selenium/executors/unified/cdp/browser.py +143 -0
- osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
- osn_selenium/executors/unified/cdp/cast.py +32 -0
- osn_selenium/executors/unified/cdp/console.py +18 -0
- osn_selenium/executors/unified/cdp/css.py +237 -0
- osn_selenium/executors/unified/cdp/debugger.py +243 -0
- osn_selenium/executors/unified/cdp/device_access.py +21 -0
- osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
- osn_selenium/executors/unified/cdp/dom.py +380 -0
- osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
- osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
- osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
- osn_selenium/executors/unified/cdp/emulation.py +312 -0
- osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
- osn_selenium/executors/unified/cdp/extensions.py +45 -0
- osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
- osn_selenium/executors/unified/cdp/fetch.py +111 -0
- osn_selenium/executors/unified/cdp/file_system.py +15 -0
- osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
- osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
- osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
- osn_selenium/executors/unified/cdp/input.py +254 -0
- osn_selenium/executors/unified/cdp/inspector.py +15 -0
- osn_selenium/executors/unified/cdp/io.py +29 -0
- osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
- osn_selenium/executors/unified/cdp/log.py +29 -0
- osn_selenium/executors/unified/cdp/media.py +15 -0
- osn_selenium/executors/unified/cdp/memory.py +59 -0
- osn_selenium/executors/unified/cdp/network.py +323 -0
- osn_selenium/executors/unified/cdp/overlay.py +209 -0
- osn_selenium/executors/unified/cdp/page.py +410 -0
- osn_selenium/executors/unified/cdp/performance.py +27 -0
- osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
- osn_selenium/executors/unified/cdp/preload.py +15 -0
- osn_selenium/executors/unified/cdp/profiler.py +55 -0
- osn_selenium/executors/unified/cdp/pwa.py +55 -0
- osn_selenium/executors/unified/cdp/runtime.py +245 -0
- osn_selenium/executors/unified/cdp/schema.py +17 -0
- osn_selenium/executors/unified/cdp/security.py +27 -0
- osn_selenium/executors/unified/cdp/service_worker.py +62 -0
- osn_selenium/executors/unified/cdp/storage.py +178 -0
- osn_selenium/executors/unified/cdp/system_info.py +24 -0
- osn_selenium/executors/unified/cdp/target.py +165 -0
- osn_selenium/executors/unified/cdp/tethering.py +15 -0
- osn_selenium/executors/unified/cdp/tracing.py +62 -0
- osn_selenium/executors/unified/cdp/web_audio.py +18 -0
- osn_selenium/executors/unified/cdp/web_authn.py +103 -0
- osn_selenium/executors/unified/javascript.py +104 -0
- osn_selenium/flags/__init__.py +1 -0
- osn_selenium/flags/_functions.py +45 -0
- osn_selenium/flags/_typehints.py +34 -0
- osn_selenium/flags/_validators.py +101 -0
- osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +159 -245
- osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +130 -374
- osn_selenium/flags/chrome.py +259 -0
- osn_selenium/flags/edge.py +259 -0
- osn_selenium/flags/models/__init__.py +1 -0
- osn_selenium/flags/models/base.py +130 -0
- osn_selenium/flags/models/blink.py +263 -0
- osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
- osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
- osn_selenium/flags/models/values.py +44 -0
- osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
- osn_selenium/flags/yandex.py +259 -0
- osn_selenium/instances/__init__.py +1 -0
- osn_selenium/instances/_functions.py +242 -0
- osn_selenium/instances/_typehints.py +148 -0
- osn_selenium/instances/_utils.py +143 -0
- osn_selenium/instances/convert.py +287 -0
- osn_selenium/instances/protocols.py +105 -0
- osn_selenium/instances/sync/__init__.py +1 -0
- osn_selenium/instances/sync/action_chains/__init__.py +32 -0
- osn_selenium/instances/sync/action_chains/base.py +74 -0
- osn_selenium/instances/sync/action_chains/click.py +61 -0
- osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
- osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
- osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
- osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
- osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
- osn_selenium/instances/sync/action_chains/move.py +46 -0
- osn_selenium/instances/sync/action_chains/scroll.py +43 -0
- osn_selenium/instances/sync/action_chains/utils.py +30 -0
- osn_selenium/instances/sync/alert.py +69 -0
- osn_selenium/instances/sync/browser.py +72 -0
- osn_selenium/instances/sync/browsing_context.py +193 -0
- osn_selenium/instances/sync/dialog.py +81 -0
- osn_selenium/instances/sync/fedcm.py +92 -0
- osn_selenium/instances/sync/mobile.py +75 -0
- osn_selenium/instances/sync/network.py +90 -0
- osn_selenium/instances/sync/permissions.py +80 -0
- osn_selenium/instances/sync/script.py +77 -0
- osn_selenium/instances/sync/shadow_root.py +113 -0
- osn_selenium/instances/sync/storage.py +91 -0
- osn_selenium/instances/sync/switch_to.py +92 -0
- osn_selenium/instances/sync/web_driver_wait.py +83 -0
- osn_selenium/instances/sync/web_element.py +179 -0
- osn_selenium/instances/sync/web_extension.py +77 -0
- osn_selenium/instances/trio_threads/__init__.py +1 -0
- osn_selenium/instances/trio_threads/action_chains/__init__.py +32 -0
- osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
- osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
- osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
- osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
- osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
- osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
- osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
- osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
- osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
- osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
- osn_selenium/instances/trio_threads/alert.py +87 -0
- osn_selenium/instances/trio_threads/browser.py +90 -0
- osn_selenium/instances/trio_threads/browsing_context.py +216 -0
- osn_selenium/instances/trio_threads/dialog.py +99 -0
- osn_selenium/instances/trio_threads/fedcm.py +110 -0
- osn_selenium/instances/trio_threads/mobile.py +93 -0
- osn_selenium/instances/trio_threads/network.py +108 -0
- osn_selenium/instances/trio_threads/permissions.py +102 -0
- osn_selenium/instances/trio_threads/script.py +95 -0
- osn_selenium/instances/trio_threads/shadow_root.py +154 -0
- osn_selenium/instances/trio_threads/storage.py +109 -0
- osn_selenium/instances/trio_threads/switch_to.py +124 -0
- osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
- osn_selenium/instances/trio_threads/web_element.py +217 -0
- osn_selenium/instances/trio_threads/web_extension.py +99 -0
- osn_selenium/instances/unified/__init__.py +1 -0
- osn_selenium/instances/unified/action_chains/__init__.py +22 -0
- osn_selenium/instances/unified/action_chains/base.py +31 -0
- osn_selenium/instances/unified/action_chains/click.py +27 -0
- osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
- osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
- osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
- osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
- osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
- osn_selenium/instances/unified/action_chains/move.py +24 -0
- osn_selenium/instances/unified/action_chains/scroll.py +21 -0
- osn_selenium/instances/unified/action_chains/utils.py +19 -0
- osn_selenium/instances/unified/alert.py +29 -0
- osn_selenium/instances/unified/browser.py +33 -0
- osn_selenium/instances/unified/browsing_context.py +151 -0
- osn_selenium/instances/unified/dialog.py +42 -0
- osn_selenium/instances/unified/fedcm.py +48 -0
- osn_selenium/instances/unified/mobile.py +36 -0
- osn_selenium/instances/unified/network.py +50 -0
- osn_selenium/instances/unified/permissions.py +43 -0
- osn_selenium/instances/unified/script.py +38 -0
- osn_selenium/instances/unified/shadow_root.py +46 -0
- osn_selenium/instances/unified/storage.py +48 -0
- osn_selenium/instances/unified/switch_to.py +49 -0
- osn_selenium/instances/unified/web_driver_wait.py +45 -0
- osn_selenium/instances/unified/web_element.py +145 -0
- osn_selenium/instances/unified/web_extension.py +38 -0
- osn_selenium/javascript/__init__.py +1 -0
- osn_selenium/javascript/_functions.py +63 -0
- osn_selenium/javascript/fingerprint/__init__.py +120 -0
- osn_selenium/javascript/fingerprint/_decorators.py +41 -0
- osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
- osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
- osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
- osn_selenium/javascript/fingerprint/_functions.py +35 -0
- osn_selenium/javascript/fingerprint/_typehints.py +27 -0
- osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
- osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
- osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
- osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
- osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
- osn_selenium/javascript/fingerprint/registry/models.py +41 -0
- osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
- osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
- osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
- osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
- osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
- osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
- osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
- osn_selenium/javascript/functions.py +44 -0
- osn_selenium/javascript/models.py +35 -0
- osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
- osn_selenium/models.py +94 -0
- osn_selenium/trio_threads_mixin.py +159 -0
- osn_selenium/webdrivers/_args_helpers.py +181 -0
- osn_selenium/webdrivers/_bridges.py +57 -0
- osn_selenium/webdrivers/_decorators.py +83 -0
- osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
- osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
- osn_selenium/webdrivers/_executable_tables/models.py +19 -0
- osn_selenium/webdrivers/_typehints.py +10 -0
- osn_selenium/webdrivers/protocols.py +50 -0
- osn_selenium/webdrivers/sync/__init__.py +1 -0
- osn_selenium/webdrivers/sync/blink/__init__.py +124 -0
- osn_selenium/webdrivers/sync/blink/base.py +140 -0
- osn_selenium/webdrivers/sync/blink/casting.py +34 -0
- osn_selenium/webdrivers/sync/blink/features.py +28 -0
- osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
- osn_selenium/webdrivers/sync/blink/logging.py +25 -0
- osn_selenium/webdrivers/sync/blink/network.py +28 -0
- osn_selenium/webdrivers/sync/blink/settings.py +63 -0
- osn_selenium/webdrivers/sync/chrome/__init__.py +102 -0
- osn_selenium/webdrivers/sync/chrome/base.py +118 -0
- osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
- osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
- osn_selenium/webdrivers/sync/core/__init__.py +100 -0
- osn_selenium/webdrivers/sync/core/actions.py +59 -0
- osn_selenium/webdrivers/sync/core/auth.py +77 -0
- osn_selenium/webdrivers/sync/core/base.py +175 -0
- osn_selenium/webdrivers/sync/core/capture.py +37 -0
- osn_selenium/webdrivers/sync/core/comonents.py +57 -0
- osn_selenium/webdrivers/sync/core/devtools.py +47 -0
- osn_selenium/webdrivers/sync/core/element.py +42 -0
- osn_selenium/webdrivers/sync/core/file.py +40 -0
- osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
- osn_selenium/webdrivers/sync/core/navigation.py +36 -0
- osn_selenium/webdrivers/sync/core/script.py +53 -0
- osn_selenium/webdrivers/sync/core/settings.py +35 -0
- osn_selenium/webdrivers/sync/core/storage.py +48 -0
- osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
- osn_selenium/webdrivers/sync/core/window.py +99 -0
- osn_selenium/webdrivers/sync/edge/__init__.py +102 -0
- osn_selenium/webdrivers/sync/edge/base.py +114 -0
- osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
- osn_selenium/webdrivers/sync/edge/settings.py +58 -0
- osn_selenium/webdrivers/sync/yandex/__init__.py +102 -0
- osn_selenium/webdrivers/sync/yandex/base.py +111 -0
- osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
- osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
- osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
- osn_selenium/webdrivers/trio_threads/blink/__init__.py +134 -0
- osn_selenium/webdrivers/trio_threads/blink/base.py +143 -0
- osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
- osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
- osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
- osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
- osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
- osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/chrome/__init__.py +114 -0
- osn_selenium/webdrivers/trio_threads/chrome/base.py +119 -0
- osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
- osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/core/__init__.py +115 -0
- osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
- osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
- osn_selenium/webdrivers/trio_threads/core/base.py +199 -0
- osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
- osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
- osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
- osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
- osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
- osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
- osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
- osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
- osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
- osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
- osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
- osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
- osn_selenium/webdrivers/trio_threads/edge/__init__.py +114 -0
- osn_selenium/webdrivers/trio_threads/edge/base.py +115 -0
- osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
- osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/yandex/__init__.py +114 -0
- osn_selenium/webdrivers/trio_threads/yandex/base.py +112 -0
- osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
- osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
- osn_selenium/webdrivers/unified/__init__.py +1 -0
- osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
- osn_selenium/webdrivers/unified/blink/base.py +135 -0
- osn_selenium/webdrivers/unified/blink/casting.py +30 -0
- osn_selenium/webdrivers/unified/blink/features.py +22 -0
- osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
- osn_selenium/webdrivers/unified/blink/logging.py +18 -0
- osn_selenium/webdrivers/unified/blink/network.py +22 -0
- osn_selenium/webdrivers/unified/blink/settings.py +86 -0
- osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
- osn_selenium/webdrivers/unified/chrome/base.py +58 -0
- osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
- osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
- osn_selenium/webdrivers/unified/core/__init__.py +1 -0
- osn_selenium/webdrivers/unified/core/actions.py +43 -0
- osn_selenium/webdrivers/unified/core/auth.py +70 -0
- osn_selenium/webdrivers/unified/core/base.py +139 -0
- osn_selenium/webdrivers/unified/core/capture.py +32 -0
- osn_selenium/webdrivers/unified/core/components.py +32 -0
- osn_selenium/webdrivers/unified/core/devtools.py +35 -0
- osn_selenium/webdrivers/unified/core/element.py +24 -0
- osn_selenium/webdrivers/unified/core/file.py +35 -0
- osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
- osn_selenium/webdrivers/unified/core/navigation.py +31 -0
- osn_selenium/webdrivers/unified/core/script.py +32 -0
- osn_selenium/webdrivers/unified/core/settings.py +44 -0
- osn_selenium/webdrivers/unified/core/storage.py +37 -0
- osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
- osn_selenium/webdrivers/unified/core/window.py +135 -0
- osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
- osn_selenium/webdrivers/unified/edge/base.py +56 -0
- osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
- osn_selenium/webdrivers/unified/edge/settings.py +48 -0
- osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
- osn_selenium/webdrivers/unified/yandex/base.py +58 -0
- osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
- osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
- osn_selenium-1.1.0.dist-info/METADATA +252 -0
- osn_selenium-1.1.0.dist-info/RECORD +615 -0
- {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/WHEEL +1 -1
- osn_selenium/captcha_workers/__init__.py +0 -26
- osn_selenium/dev_tools/_types.py +0 -22
- osn_selenium/dev_tools/errors.py +0 -89
- osn_selenium/dev_tools/logger.py +0 -558
- osn_selenium/dev_tools/manager.py +0 -1551
- osn_selenium/dev_tools/utils.py +0 -509
- osn_selenium/errors.py +0 -16
- osn_selenium/types.py +0 -118
- osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
- osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
- osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
- osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
- osn_selenium/webdrivers/Blink/protocols.py +0 -330
- osn_selenium/webdrivers/Blink/webdriver.py +0 -637
- osn_selenium/webdrivers/Chrome/protocols.py +0 -228
- osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
- osn_selenium/webdrivers/Edge/protocols.py +0 -228
- osn_selenium/webdrivers/Edge/webdriver.py +0 -394
- osn_selenium/webdrivers/Yandex/protocols.py +0 -211
- osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
- osn_selenium/webdrivers/_functions.py +0 -504
- osn_selenium/webdrivers/types.py +0 -390
- osn_selenium-0.0.0.dist-info/METADATA +0 -710
- osn_selenium-0.0.0.dist-info/RECORD +0 -57
- /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
- {osn_selenium-0.0.0.dist-info → osn_selenium-1.1.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
2
|
+
from osn_selenium.exceptions.instance import (
|
|
3
|
+
CannotConvertTypeError
|
|
4
|
+
)
|
|
5
|
+
from osn_selenium.instances._typehints import (
|
|
6
|
+
BROWSING_CONTEXT_TYPEHINT
|
|
7
|
+
)
|
|
8
|
+
from typing import (
|
|
9
|
+
Any,
|
|
10
|
+
Callable,
|
|
11
|
+
Dict,
|
|
12
|
+
List,
|
|
13
|
+
Optional,
|
|
14
|
+
Self,
|
|
15
|
+
Union
|
|
16
|
+
)
|
|
17
|
+
from osn_selenium.instances.unified.browsing_context import (
|
|
18
|
+
UnifiedBrowsingContext
|
|
19
|
+
)
|
|
20
|
+
from osn_selenium.abstract.instances.browsing_context import (
|
|
21
|
+
AbstractBrowsingContext
|
|
22
|
+
)
|
|
23
|
+
from selenium.webdriver.common.bidi.browsing_context import (
|
|
24
|
+
BrowsingContext as legacyBrowsingContext,
|
|
25
|
+
BrowsingContextInfo
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
__all__ = ["BrowsingContext"]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class BrowsingContext(UnifiedBrowsingContext, AbstractBrowsingContext):
|
|
33
|
+
"""
|
|
34
|
+
Wrapper for the legacy Selenium BiDi BrowsingContext instance.
|
|
35
|
+
|
|
36
|
+
Controls browser tabs and windows (contexts), allowing navigation,
|
|
37
|
+
reloading, closing, screenshotting, and DOM tree inspection.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
def __init__(self, selenium_browsing_context: legacyBrowsingContext) -> None:
|
|
41
|
+
"""
|
|
42
|
+
Initializes the BrowsingContext wrapper.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
selenium_browsing_context (legacyBrowsingContext): The legacy Selenium instance to wrap.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
UnifiedBrowsingContext.__init__(self, selenium_browsing_context=selenium_browsing_context)
|
|
49
|
+
|
|
50
|
+
def activate(self, context: str) -> Any:
|
|
51
|
+
return self._activate_impl(context=context)
|
|
52
|
+
|
|
53
|
+
def add_event_handler(
|
|
54
|
+
self,
|
|
55
|
+
event: str,
|
|
56
|
+
callback: Callable,
|
|
57
|
+
contexts: Optional[List[str]] = None,
|
|
58
|
+
) -> int:
|
|
59
|
+
return self._add_event_handler_impl(event=event, callback=callback, contexts=contexts)
|
|
60
|
+
|
|
61
|
+
def capture_screenshot(
|
|
62
|
+
self,
|
|
63
|
+
context: str,
|
|
64
|
+
origin: str = "viewport",
|
|
65
|
+
format: Optional[Dict] = None,
|
|
66
|
+
clip: Optional[Dict] = None,
|
|
67
|
+
) -> str:
|
|
68
|
+
return self._capture_screenshot_impl(context=context, origin=origin, format=format, clip=clip)
|
|
69
|
+
|
|
70
|
+
def clear_event_handlers(self) -> None:
|
|
71
|
+
self._clear_event_handlers_impl()
|
|
72
|
+
|
|
73
|
+
def close(self, context: str, prompt_unload: bool = False) -> None:
|
|
74
|
+
self._close_impl(context=context, prompt_unload=prompt_unload)
|
|
75
|
+
|
|
76
|
+
def create(
|
|
77
|
+
self,
|
|
78
|
+
type: str,
|
|
79
|
+
reference_context: Optional[str] = None,
|
|
80
|
+
background: bool = False,
|
|
81
|
+
user_context: Optional[str] = None,
|
|
82
|
+
) -> str:
|
|
83
|
+
return self._create_impl(
|
|
84
|
+
type=type,
|
|
85
|
+
reference_context=reference_context,
|
|
86
|
+
background=background,
|
|
87
|
+
user_context=user_context
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
@classmethod
|
|
91
|
+
def from_legacy(cls, legacy_object: BROWSING_CONTEXT_TYPEHINT) -> Self:
|
|
92
|
+
"""
|
|
93
|
+
Creates an instance from a legacy Selenium BrowsingContext object.
|
|
94
|
+
|
|
95
|
+
This factory method is used to wrap an existing Selenium BrowsingContext
|
|
96
|
+
instance into the new interface.
|
|
97
|
+
|
|
98
|
+
Args:
|
|
99
|
+
legacy_object (BROWSING_CONTEXT_TYPEHINT): The legacy Selenium BrowsingContext instance or its wrapper.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
Self: A new instance of a class implementing BrowsingContext.
|
|
103
|
+
"""
|
|
104
|
+
|
|
105
|
+
legacy_browsing_context_obj = get_legacy_instance(instance=legacy_object)
|
|
106
|
+
if not isinstance(legacy_browsing_context_obj, legacyBrowsingContext):
|
|
107
|
+
raise CannotConvertTypeError(from_=legacyBrowsingContext, to_=legacy_object)
|
|
108
|
+
|
|
109
|
+
return cls(selenium_browsing_context=legacy_browsing_context_obj)
|
|
110
|
+
|
|
111
|
+
def get_tree(self, max_depth: Optional[int] = None, root: Optional[str] = None) -> List[BrowsingContextInfo]:
|
|
112
|
+
return self._get_tree_impl(max_depth=max_depth, root=root)
|
|
113
|
+
|
|
114
|
+
def handle_user_prompt(
|
|
115
|
+
self,
|
|
116
|
+
context: str,
|
|
117
|
+
accept: Optional[bool] = None,
|
|
118
|
+
user_text: Optional[str] = None,
|
|
119
|
+
) -> None:
|
|
120
|
+
self._handle_user_prompt_impl(context=context, accept=accept, user_text=user_text)
|
|
121
|
+
|
|
122
|
+
@property
|
|
123
|
+
def legacy(self) -> legacyBrowsingContext:
|
|
124
|
+
return self._legacy_impl
|
|
125
|
+
|
|
126
|
+
def locate_nodes(
|
|
127
|
+
self,
|
|
128
|
+
context: str,
|
|
129
|
+
locator: Dict,
|
|
130
|
+
max_node_count: Optional[int] = None,
|
|
131
|
+
serialization_options: Optional[Dict] = None,
|
|
132
|
+
start_nodes: Optional[List[Dict]] = None,
|
|
133
|
+
) -> List[Dict]:
|
|
134
|
+
return self._locate_nodes_impl(
|
|
135
|
+
context=context,
|
|
136
|
+
locator=locator,
|
|
137
|
+
max_node_count=max_node_count,
|
|
138
|
+
serialization_options=serialization_options,
|
|
139
|
+
start_nodes=start_nodes
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
def navigate(self, context: str, url: str, wait: Optional[str] = None) -> Dict:
|
|
143
|
+
return self._navigate_impl(context=context, url=url, wait=wait)
|
|
144
|
+
|
|
145
|
+
def print(
|
|
146
|
+
self,
|
|
147
|
+
context: str,
|
|
148
|
+
background: bool = False,
|
|
149
|
+
margin: Optional[Dict] = None,
|
|
150
|
+
orientation: str = "portrait",
|
|
151
|
+
page: Optional[Dict] = None,
|
|
152
|
+
page_ranges: Optional[List[Union[int, str]]] = None,
|
|
153
|
+
scale: float = 1.0,
|
|
154
|
+
shrink_to_fit: bool = True,
|
|
155
|
+
) -> str:
|
|
156
|
+
return self._print_impl(
|
|
157
|
+
context=context,
|
|
158
|
+
background=background,
|
|
159
|
+
margin=margin,
|
|
160
|
+
orientation=orientation,
|
|
161
|
+
page=page,
|
|
162
|
+
page_ranges=page_ranges,
|
|
163
|
+
scale=scale,
|
|
164
|
+
shrink_to_fit=shrink_to_fit
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
def reload(
|
|
168
|
+
self,
|
|
169
|
+
context: str,
|
|
170
|
+
ignore_cache: Optional[bool] = None,
|
|
171
|
+
wait: Optional[str] = None,
|
|
172
|
+
) -> Dict:
|
|
173
|
+
return self._reload_impl(context=context, ignore_cache=ignore_cache, wait=wait)
|
|
174
|
+
|
|
175
|
+
def remove_event_handler(self, event: str, callback_id: int) -> None:
|
|
176
|
+
self._remove_event_handler_impl(event=event, callback_id=callback_id)
|
|
177
|
+
|
|
178
|
+
def set_viewport(
|
|
179
|
+
self,
|
|
180
|
+
context: Optional[str] = None,
|
|
181
|
+
viewport: Optional[Dict] = None,
|
|
182
|
+
device_pixel_ratio: Optional[float] = None,
|
|
183
|
+
user_contexts: Optional[List[str]] = None,
|
|
184
|
+
) -> None:
|
|
185
|
+
self._set_viewport_impl(
|
|
186
|
+
context=context,
|
|
187
|
+
viewport=viewport,
|
|
188
|
+
device_pixel_ratio=device_pixel_ratio,
|
|
189
|
+
user_contexts=user_contexts
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
def traverse_history(self, context: str, delta: int) -> Dict:
|
|
193
|
+
return self._traverse_history_impl(context=context, delta=delta)
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
from typing import List, Optional, Self
|
|
2
|
+
from selenium.webdriver.common.fedcm.account import Account
|
|
3
|
+
from osn_selenium.instances._typehints import DIALOG_TYPEHINT
|
|
4
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
5
|
+
from osn_selenium.instances.unified.dialog import UnifiedDialog
|
|
6
|
+
from osn_selenium.abstract.instances.dialog import AbstractDialog
|
|
7
|
+
from osn_selenium.exceptions.instance import (
|
|
8
|
+
CannotConvertTypeError
|
|
9
|
+
)
|
|
10
|
+
from selenium.webdriver.common.fedcm.dialog import (
|
|
11
|
+
Dialog as legacyDialog
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
__all__ = ["Dialog"]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Dialog(UnifiedDialog, AbstractDialog):
|
|
19
|
+
"""
|
|
20
|
+
Wrapper for the legacy Selenium FedCM Dialog instance (Synchronous).
|
|
21
|
+
|
|
22
|
+
Handles Federated Credential Management dialogs, including account selection
|
|
23
|
+
and dismissal.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(self, selenium_dialog: legacyDialog) -> None:
|
|
27
|
+
"""
|
|
28
|
+
Initializes the Dialog wrapper.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
selenium_dialog (legacyDialog): The legacy Selenium Dialog instance to wrap.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
UnifiedDialog.__init__(self, selenium_dialog=selenium_dialog)
|
|
35
|
+
|
|
36
|
+
def accept(self) -> None:
|
|
37
|
+
self._accept_impl()
|
|
38
|
+
|
|
39
|
+
def dismiss(self) -> None:
|
|
40
|
+
self._dismiss_impl()
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def from_legacy(cls, legacy_object: DIALOG_TYPEHINT) -> Self:
|
|
44
|
+
"""
|
|
45
|
+
Creates an instance from a legacy Selenium Dialog object.
|
|
46
|
+
|
|
47
|
+
This factory method is used to wrap an existing Selenium Dialog
|
|
48
|
+
instance into the new interface.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
selenium_dialog (DIALOG_TYPEHINT): The legacy Selenium Dialog instance or its wrapper.
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
Self: A new instance of a class implementing Dialog.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
legacy_dialog_obj = get_legacy_instance(instance=legacy_object)
|
|
58
|
+
|
|
59
|
+
if not isinstance(legacy_dialog_obj, legacyDialog):
|
|
60
|
+
raise CannotConvertTypeError(from_=legacyDialog, to_=legacy_object)
|
|
61
|
+
|
|
62
|
+
return cls(selenium_dialog=legacy_dialog_obj)
|
|
63
|
+
|
|
64
|
+
def get_accounts(self) -> List[Account]:
|
|
65
|
+
return self._get_accounts_impl()
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def legacy(self) -> legacyDialog:
|
|
69
|
+
return self._legacy_impl
|
|
70
|
+
|
|
71
|
+
def select_account(self, index: int) -> None:
|
|
72
|
+
self._select_account_impl(index=index)
|
|
73
|
+
|
|
74
|
+
def subtitle(self) -> Optional[str]:
|
|
75
|
+
return self._subtitle_impl()
|
|
76
|
+
|
|
77
|
+
def title(self) -> str:
|
|
78
|
+
return self._title_impl()
|
|
79
|
+
|
|
80
|
+
def type(self) -> Optional[str]:
|
|
81
|
+
return self._type_impl()
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Dict,
|
|
3
|
+
List,
|
|
4
|
+
Optional,
|
|
5
|
+
Self
|
|
6
|
+
)
|
|
7
|
+
from osn_selenium.instances._typehints import FEDCM_TYPEHINT
|
|
8
|
+
from osn_selenium.instances.unified.fedcm import UnifiedFedCM
|
|
9
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
10
|
+
from osn_selenium.abstract.instances.fedcm import AbstractFedCM
|
|
11
|
+
from selenium.webdriver.remote.fedcm import FedCM as legacyFedCM
|
|
12
|
+
from osn_selenium.exceptions.instance import (
|
|
13
|
+
CannotConvertTypeError
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
__all__ = ["FedCM"]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class FedCM(UnifiedFedCM, AbstractFedCM):
|
|
21
|
+
"""
|
|
22
|
+
Wrapper for the legacy Selenium FedCM instance.
|
|
23
|
+
|
|
24
|
+
Provides an interface for controlling the Federated Credential Management API,
|
|
25
|
+
including dialog delays and cooldown resets.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
def __init__(self, selenium_fedcm: legacyFedCM) -> None:
|
|
29
|
+
"""
|
|
30
|
+
Initializes the FedCM wrapper.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
selenium_fedcm (legacyFedCM): The legacy Selenium FedCM instance to wrap.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
UnifiedFedCM.__init__(self, selenium_fedcm=selenium_fedcm)
|
|
37
|
+
|
|
38
|
+
def accept(self) -> None:
|
|
39
|
+
self._accept_impl()
|
|
40
|
+
|
|
41
|
+
def account_list(self) -> List[Dict]:
|
|
42
|
+
return self._account_list_impl()
|
|
43
|
+
|
|
44
|
+
def dialog_type(self) -> str:
|
|
45
|
+
return self._dialog_type_impl()
|
|
46
|
+
|
|
47
|
+
def disable_delay(self) -> None:
|
|
48
|
+
self._disable_delay_impl()
|
|
49
|
+
|
|
50
|
+
def dismiss(self) -> None:
|
|
51
|
+
self._dismiss_impl()
|
|
52
|
+
|
|
53
|
+
def enable_delay(self) -> None:
|
|
54
|
+
self._enable_delay_impl()
|
|
55
|
+
|
|
56
|
+
@classmethod
|
|
57
|
+
def from_legacy(cls, legacy_object: FEDCM_TYPEHINT) -> Self:
|
|
58
|
+
"""
|
|
59
|
+
Creates an instance from a legacy Selenium FedCM object.
|
|
60
|
+
|
|
61
|
+
This factory method is used to wrap an existing Selenium FedCM
|
|
62
|
+
instance into the new interface.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
legacy_object (FEDCM_TYPEHINT): The legacy Selenium FedCM instance or its wrapper.
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
Self: A new instance of a class implementing FedCM.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
legacy_fedcm_obj = get_legacy_instance(instance=legacy_object)
|
|
72
|
+
|
|
73
|
+
if not isinstance(legacy_fedcm_obj, legacyFedCM):
|
|
74
|
+
raise CannotConvertTypeError(from_=legacyFedCM, to_=legacy_object)
|
|
75
|
+
|
|
76
|
+
return cls(selenium_fedcm=legacy_fedcm_obj)
|
|
77
|
+
|
|
78
|
+
@property
|
|
79
|
+
def legacy(self) -> legacyFedCM:
|
|
80
|
+
return self._legacy_impl
|
|
81
|
+
|
|
82
|
+
def reset_cooldown(self) -> None:
|
|
83
|
+
self._reset_cooldown_impl()
|
|
84
|
+
|
|
85
|
+
def select_account(self, index: int) -> None:
|
|
86
|
+
self._select_account_impl(index=index)
|
|
87
|
+
|
|
88
|
+
def subtitle(self) -> Optional[str]:
|
|
89
|
+
return self._subtitle_impl()
|
|
90
|
+
|
|
91
|
+
def title(self) -> str:
|
|
92
|
+
return self._title_impl()
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from typing import List, Self, Union
|
|
2
|
+
from osn_selenium.instances._typehints import MOBILE_TYPEHINT
|
|
3
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
4
|
+
from osn_selenium.instances.unified.mobile import UnifiedMobile
|
|
5
|
+
from osn_selenium.abstract.instances.mobile import AbstractMobile
|
|
6
|
+
from osn_selenium.exceptions.instance import (
|
|
7
|
+
CannotConvertTypeError
|
|
8
|
+
)
|
|
9
|
+
from selenium.webdriver.remote.mobile import (
|
|
10
|
+
Mobile as legacyMobile,
|
|
11
|
+
_ConnectionType
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
__all__ = ["Mobile"]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Mobile(UnifiedMobile, AbstractMobile):
|
|
19
|
+
"""
|
|
20
|
+
Wrapper for the legacy Selenium Mobile instance.
|
|
21
|
+
|
|
22
|
+
Manages network connection types and context settings (e.g., native app vs web view)
|
|
23
|
+
for mobile emulation.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(self, selenium_mobile: legacyMobile) -> None:
|
|
27
|
+
"""
|
|
28
|
+
Initializes the Mobile wrapper.
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
selenium_mobile (legacyMobile): The legacy Selenium Mobile instance to wrap.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
UnifiedMobile.__init__(self, selenium_mobile=selenium_mobile)
|
|
35
|
+
|
|
36
|
+
def context(self) -> str:
|
|
37
|
+
return self._get_context_impl()
|
|
38
|
+
|
|
39
|
+
def contexts(self) -> List[str]:
|
|
40
|
+
return self._contexts_impl()
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def from_legacy(cls, legacy_object: MOBILE_TYPEHINT) -> Self:
|
|
44
|
+
"""
|
|
45
|
+
Creates an instance from a legacy Selenium Mobile object.
|
|
46
|
+
|
|
47
|
+
This factory method is used to wrap an existing Selenium Mobile
|
|
48
|
+
instance into the new interface.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
legacy_object (MOBILE_TYPEHINT): The legacy Selenium Mobile instance or its wrapper.
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
Self: A new instance of a class implementing Mobile.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
legacy_mobile_obj = get_legacy_instance(instance=legacy_object)
|
|
58
|
+
|
|
59
|
+
if not isinstance(legacy_mobile_obj, legacyMobile):
|
|
60
|
+
raise CannotConvertTypeError(from_=legacyMobile, to_=legacy_object)
|
|
61
|
+
|
|
62
|
+
return cls(selenium_mobile=legacy_mobile_obj)
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def legacy(self) -> legacyMobile:
|
|
66
|
+
return self._legacy_impl
|
|
67
|
+
|
|
68
|
+
def network_connection(self) -> _ConnectionType:
|
|
69
|
+
return self._network_connection_impl()
|
|
70
|
+
|
|
71
|
+
def set_context(self, new_context: str) -> None:
|
|
72
|
+
self._set_context_impl(new_context=new_context)
|
|
73
|
+
|
|
74
|
+
def set_network_connection(self, network: Union[int, _ConnectionType]) -> _ConnectionType:
|
|
75
|
+
return self._set_network_connection_impl(network=network)
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Callable,
|
|
3
|
+
List,
|
|
4
|
+
Optional,
|
|
5
|
+
Self
|
|
6
|
+
)
|
|
7
|
+
from osn_selenium.instances._typehints import NETWORK_TYPEHINT
|
|
8
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
9
|
+
from osn_selenium.instances.unified.network import UnifiedNetwork
|
|
10
|
+
from osn_selenium.abstract.instances.network import AbstractNetwork
|
|
11
|
+
from osn_selenium.exceptions.instance import (
|
|
12
|
+
CannotConvertTypeError
|
|
13
|
+
)
|
|
14
|
+
from selenium.webdriver.common.bidi.network import (
|
|
15
|
+
Network as legacyNetwork
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
__all__ = ["Network"]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class Network(UnifiedNetwork, AbstractNetwork):
|
|
23
|
+
"""
|
|
24
|
+
Wrapper for the legacy Selenium BiDi Network instance.
|
|
25
|
+
|
|
26
|
+
Allows interception of network requests, adding authentication handlers,
|
|
27
|
+
and managing request callbacks.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __init__(self, selenium_network: legacyNetwork) -> None:
|
|
31
|
+
"""
|
|
32
|
+
Initializes the Network wrapper.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
selenium_network (legacyNetwork): The legacy Selenium Network instance to wrap.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
UnifiedNetwork.__init__(self, selenium_network=selenium_network)
|
|
39
|
+
|
|
40
|
+
def add_auth_handler(self, username: str, password: str) -> int:
|
|
41
|
+
return self._add_auth_handler_impl(username=username, password=password)
|
|
42
|
+
|
|
43
|
+
def add_request_handler(
|
|
44
|
+
self,
|
|
45
|
+
event: str,
|
|
46
|
+
callback: Callable,
|
|
47
|
+
url_patterns: Optional[List[str]] = None,
|
|
48
|
+
contexts: Optional[List[str]] = None,
|
|
49
|
+
) -> int:
|
|
50
|
+
return self._add_request_handler_impl(
|
|
51
|
+
event=event,
|
|
52
|
+
callback=callback,
|
|
53
|
+
url_patterns=url_patterns,
|
|
54
|
+
contexts=contexts
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
def clear_request_handlers(self) -> None:
|
|
58
|
+
self._clear_request_handlers_impl()
|
|
59
|
+
|
|
60
|
+
@classmethod
|
|
61
|
+
def from_legacy(cls, legacy_object: NETWORK_TYPEHINT) -> Self:
|
|
62
|
+
"""
|
|
63
|
+
Creates an instance from a legacy Selenium Network object.
|
|
64
|
+
|
|
65
|
+
This factory method is used to wrap an existing Selenium Network
|
|
66
|
+
instance into the new interface.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
legacy_object (NETWORK_TYPEHINT): The legacy Selenium Network instance or its wrapper.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
Self: A new instance of a class implementing Network.
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
legacy_network_obj = get_legacy_instance(instance=legacy_object)
|
|
76
|
+
|
|
77
|
+
if not isinstance(legacy_network_obj, legacyNetwork):
|
|
78
|
+
raise CannotConvertTypeError(from_=legacyNetwork, to_=legacy_object)
|
|
79
|
+
|
|
80
|
+
return cls(selenium_network=legacy_network_obj)
|
|
81
|
+
|
|
82
|
+
@property
|
|
83
|
+
def legacy(self) -> legacyNetwork:
|
|
84
|
+
return self._legacy_impl
|
|
85
|
+
|
|
86
|
+
def remove_auth_handler(self, callback_id: int) -> None:
|
|
87
|
+
self._remove_auth_handler_impl(callback_id=callback_id)
|
|
88
|
+
|
|
89
|
+
def remove_request_handler(self, event: str, callback_id: int) -> None:
|
|
90
|
+
self._remove_request_handler_impl(event=event, callback_id=callback_id)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Any,
|
|
3
|
+
Dict,
|
|
4
|
+
Optional,
|
|
5
|
+
Self,
|
|
6
|
+
Union
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
9
|
+
from osn_selenium.instances._typehints import PERMISSIONS_TYPEHINT
|
|
10
|
+
from osn_selenium.exceptions.instance import (
|
|
11
|
+
CannotConvertTypeError
|
|
12
|
+
)
|
|
13
|
+
from osn_selenium.instances.unified.permissions import UnifiedPermissions
|
|
14
|
+
from osn_selenium.abstract.instances.permissions import AbstractPermissions
|
|
15
|
+
from selenium.webdriver.common.bidi.permissions import (
|
|
16
|
+
PermissionDescriptor,
|
|
17
|
+
Permissions as legacyPermissions
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
__all__ = ["Permissions"]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class Permissions(UnifiedPermissions, AbstractPermissions):
|
|
25
|
+
"""
|
|
26
|
+
Wrapper for the legacy Selenium Permissions instance.
|
|
27
|
+
|
|
28
|
+
Provides methods to set and modify browser permissions (e.g., camera, microphone, geolocation)
|
|
29
|
+
via the WebDriver BiDi protocol.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
def __init__(self, selenium_permissions: legacyPermissions) -> None:
|
|
33
|
+
"""
|
|
34
|
+
Initializes the Permissions wrapper.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
selenium_permissions (legacyPermissions): The legacy Selenium Permissions instance to wrap.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
UnifiedPermissions.__init__(self, selenium_permissions=selenium_permissions)
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def from_legacy(cls, legacy_object: PERMISSIONS_TYPEHINT) -> Self:
|
|
44
|
+
"""
|
|
45
|
+
Creates an instance from a legacy Selenium Permissions object.
|
|
46
|
+
|
|
47
|
+
This factory method is used to wrap an existing Selenium Permissions
|
|
48
|
+
instance into the new interface.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
legacy_object (PERMISSIONS_TYPEHINT): The legacy Selenium Permissions instance or its wrapper.
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
Self: A new instance of a class implementing Permissions.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
legacy_permissions_obj = get_legacy_instance(instance=legacy_object)
|
|
58
|
+
|
|
59
|
+
if not isinstance(legacy_permissions_obj, legacyPermissions):
|
|
60
|
+
raise CannotConvertTypeError(from_=legacyPermissions, to_=legacy_object)
|
|
61
|
+
|
|
62
|
+
return cls(selenium_permissions=legacy_permissions_obj)
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def legacy(self) -> legacyPermissions:
|
|
66
|
+
return self._legacy_impl
|
|
67
|
+
|
|
68
|
+
def set_permission(
|
|
69
|
+
self,
|
|
70
|
+
descriptor: Union[Dict[str, Any], PermissionDescriptor],
|
|
71
|
+
state: str,
|
|
72
|
+
origin: str,
|
|
73
|
+
user_context: Optional[str] = None,
|
|
74
|
+
) -> None:
|
|
75
|
+
self._set_permission_impl(
|
|
76
|
+
descriptor=descriptor,
|
|
77
|
+
state=state,
|
|
78
|
+
origin=origin,
|
|
79
|
+
user_context=user_context
|
|
80
|
+
)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
from typing import Any, Callable, Self
|
|
2
|
+
from osn_selenium.instances._typehints import SCRIPT_TYPEHINT
|
|
3
|
+
from osn_selenium.instances.convert import get_legacy_instance
|
|
4
|
+
from osn_selenium.instances.unified.script import UnifiedScript
|
|
5
|
+
from osn_selenium.abstract.instances.script import AbstractScript
|
|
6
|
+
from osn_selenium.exceptions.instance import (
|
|
7
|
+
CannotConvertTypeError
|
|
8
|
+
)
|
|
9
|
+
from selenium.webdriver.common.bidi.script import (
|
|
10
|
+
Script as legacyScript
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["Script"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Script(UnifiedScript, AbstractScript):
|
|
18
|
+
"""
|
|
19
|
+
Wrapper for the legacy Selenium BiDi Script instance.
|
|
20
|
+
|
|
21
|
+
Facilitates execution of JavaScript within specific contexts, adding preload scripts,
|
|
22
|
+
and handling console messages or JS errors.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(self, selenium_script: legacyScript) -> None:
|
|
26
|
+
"""
|
|
27
|
+
Initializes the Script wrapper.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
selenium_script (legacyScript): The legacy Selenium Script instance to wrap.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
UnifiedScript.__init__(self, selenium_script=selenium_script)
|
|
34
|
+
|
|
35
|
+
def add_console_message_handler(self, handler: Callable[[Any], None]) -> int:
|
|
36
|
+
return self._add_console_message_handler_impl(handler=handler)
|
|
37
|
+
|
|
38
|
+
def add_javascript_error_handler(self, handler: Callable[[Any], None]) -> int:
|
|
39
|
+
return self._add_javascript_error_handler_impl(handler=handler)
|
|
40
|
+
|
|
41
|
+
def execute(self, script: str, *args: Any) -> Any:
|
|
42
|
+
return self._execute_impl(script, *args)
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def from_legacy(cls, legacy_object: SCRIPT_TYPEHINT) -> Self:
|
|
46
|
+
"""
|
|
47
|
+
Creates an instance from a legacy Selenium Script object.
|
|
48
|
+
|
|
49
|
+
This factory method is used to wrap an existing Selenium Script
|
|
50
|
+
instance into the new interface.
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
legacy_object (SCRIPT_TYPEHINT): The legacy Selenium Script instance or its wrapper.
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
Self: A new instance of a class implementing Script.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
legacy_script_obj = get_legacy_instance(instance=legacy_object)
|
|
60
|
+
|
|
61
|
+
if not isinstance(legacy_script_obj, legacyScript):
|
|
62
|
+
raise CannotConvertTypeError(from_=legacyScript, to_=legacy_object)
|
|
63
|
+
|
|
64
|
+
return cls(selenium_script=legacy_script_obj)
|
|
65
|
+
|
|
66
|
+
@property
|
|
67
|
+
def legacy(self) -> legacyScript:
|
|
68
|
+
return self._legacy_impl
|
|
69
|
+
|
|
70
|
+
def pin(self, script: str) -> str:
|
|
71
|
+
return self._pin_impl(script=script)
|
|
72
|
+
|
|
73
|
+
def remove_console_message_handler(self, id: int) -> None:
|
|
74
|
+
self._remove_console_message_handler_impl(id=id)
|
|
75
|
+
|
|
76
|
+
def unpin(self, script_id: str) -> None:
|
|
77
|
+
self._unpin_impl(script_id=script_id)
|