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,395 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from selenium.webdriver.common.by import By
|
|
3
|
+
from osn_selenium.abstract.instances.shadow_root import AbstractShadowRoot
|
|
4
|
+
from typing import (
|
|
5
|
+
Any,
|
|
6
|
+
Iterable,
|
|
7
|
+
Mapping,
|
|
8
|
+
Optional,
|
|
9
|
+
Self,
|
|
10
|
+
Sequence
|
|
11
|
+
)
|
|
12
|
+
from selenium.webdriver.remote.webelement import (
|
|
13
|
+
WebElement as legacyWebElement
|
|
14
|
+
)
|
|
15
|
+
from osn_selenium.abstract.instances.web_driver_wait import (
|
|
16
|
+
AbstractWebDriverWait
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
__all__ = ["AbstractWebElement"]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class AbstractWebElement(ABC):
|
|
24
|
+
"""
|
|
25
|
+
Abstract base class for a web element.
|
|
26
|
+
|
|
27
|
+
Defines the interface for interacting with an element on a web page,
|
|
28
|
+
such as clicking, sending keys, and retrieving attributes.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
@abstractmethod
|
|
32
|
+
def __eq__(self, element: Self) -> bool:
|
|
33
|
+
"""
|
|
34
|
+
Checks if two elements are equal.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
element (Self): The element to compare with.
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
bool: True if the elements are the same, False otherwise.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
...
|
|
44
|
+
|
|
45
|
+
@abstractmethod
|
|
46
|
+
def __hash__(self) -> int:
|
|
47
|
+
"""
|
|
48
|
+
Returns the hash of the element's ID.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
int: The hash value.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
...
|
|
55
|
+
|
|
56
|
+
@abstractmethod
|
|
57
|
+
def __ne__(self, element: Self) -> bool:
|
|
58
|
+
"""
|
|
59
|
+
Checks if two elements are not equal.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
element (Self): The element to compare with.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
bool: True if the elements are not the same, False otherwise.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
...
|
|
69
|
+
|
|
70
|
+
@abstractmethod
|
|
71
|
+
def __repr__(self) -> str:
|
|
72
|
+
"""
|
|
73
|
+
Returns a string representation of the WebElement.
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
str: The string representation.
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
...
|
|
80
|
+
|
|
81
|
+
@abstractmethod
|
|
82
|
+
def accessible_name(self) -> str:
|
|
83
|
+
"""
|
|
84
|
+
The accessible name of the element.
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
...
|
|
88
|
+
|
|
89
|
+
@abstractmethod
|
|
90
|
+
def aria_role(self) -> str:
|
|
91
|
+
"""
|
|
92
|
+
The ARIA role of the element.
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
...
|
|
96
|
+
|
|
97
|
+
@abstractmethod
|
|
98
|
+
def clear(self) -> None:
|
|
99
|
+
"""
|
|
100
|
+
Clears the text if it's a text entry element.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
...
|
|
104
|
+
|
|
105
|
+
@abstractmethod
|
|
106
|
+
def click(self) -> None:
|
|
107
|
+
"""
|
|
108
|
+
Clicks the element.
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
...
|
|
112
|
+
|
|
113
|
+
@abstractmethod
|
|
114
|
+
def find_element(self, by: str = By.ID, value: Optional[str] = None) -> Self:
|
|
115
|
+
"""
|
|
116
|
+
Finds a child element within this element's context.
|
|
117
|
+
|
|
118
|
+
Args:
|
|
119
|
+
by (str): The strategy to use for finding the element.
|
|
120
|
+
value (Optional[str]): The value of the locator.
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
AbstractWebElement: The found WebElement.
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
...
|
|
127
|
+
|
|
128
|
+
@abstractmethod
|
|
129
|
+
def find_elements(self, by: str = By.ID, value: Optional[str] = None) -> Sequence[Self]:
|
|
130
|
+
"""
|
|
131
|
+
Finds all child elements within this element's context.
|
|
132
|
+
|
|
133
|
+
Args:
|
|
134
|
+
by (str): The strategy to use for finding elements.
|
|
135
|
+
value (Optional[str]): The value of the locator.
|
|
136
|
+
|
|
137
|
+
Returns:
|
|
138
|
+
Sequence[Self]: A sequence of found WebElements.
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
...
|
|
142
|
+
|
|
143
|
+
@abstractmethod
|
|
144
|
+
def get_attribute(self, name: str) -> Optional[str]:
|
|
145
|
+
"""
|
|
146
|
+
Gets the given attribute or property of the element.
|
|
147
|
+
|
|
148
|
+
Args:
|
|
149
|
+
name (str): The name of the attribute/property.
|
|
150
|
+
|
|
151
|
+
Returns:
|
|
152
|
+
Optional[str]: The value of the attribute/property, or None if it does not exist.
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
...
|
|
156
|
+
|
|
157
|
+
@abstractmethod
|
|
158
|
+
def get_dom_attribute(self, name: str) -> Optional[str]:
|
|
159
|
+
"""
|
|
160
|
+
Gets the given attribute of the element from the DOM.
|
|
161
|
+
|
|
162
|
+
Args:
|
|
163
|
+
name (str): The name of the attribute.
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
Optional[str]: The value of the attribute, or None if it does not exist.
|
|
167
|
+
"""
|
|
168
|
+
|
|
169
|
+
...
|
|
170
|
+
|
|
171
|
+
@abstractmethod
|
|
172
|
+
def get_property(self, name: str) -> Any:
|
|
173
|
+
"""
|
|
174
|
+
Gets the given property of the element.
|
|
175
|
+
|
|
176
|
+
Args:
|
|
177
|
+
name (str): The name of the property.
|
|
178
|
+
|
|
179
|
+
Returns:
|
|
180
|
+
Any: The value of the property.
|
|
181
|
+
"""
|
|
182
|
+
|
|
183
|
+
...
|
|
184
|
+
|
|
185
|
+
@abstractmethod
|
|
186
|
+
def id(self) -> str:
|
|
187
|
+
"""
|
|
188
|
+
The internal ID used by the WebDriver.
|
|
189
|
+
"""
|
|
190
|
+
|
|
191
|
+
...
|
|
192
|
+
|
|
193
|
+
@abstractmethod
|
|
194
|
+
def is_displayed(self) -> bool:
|
|
195
|
+
"""
|
|
196
|
+
Whether the element is visible to a user.
|
|
197
|
+
|
|
198
|
+
Returns:
|
|
199
|
+
bool: True if the element is displayed, False otherwise.
|
|
200
|
+
"""
|
|
201
|
+
|
|
202
|
+
...
|
|
203
|
+
|
|
204
|
+
@abstractmethod
|
|
205
|
+
def is_enabled(self) -> bool:
|
|
206
|
+
"""
|
|
207
|
+
Whether the element is enabled.
|
|
208
|
+
|
|
209
|
+
Returns:
|
|
210
|
+
bool: True if the element is enabled, False otherwise.
|
|
211
|
+
"""
|
|
212
|
+
|
|
213
|
+
...
|
|
214
|
+
|
|
215
|
+
@abstractmethod
|
|
216
|
+
def is_selected(self) -> bool:
|
|
217
|
+
"""
|
|
218
|
+
Whether the element is selected.
|
|
219
|
+
|
|
220
|
+
Returns:
|
|
221
|
+
bool: True if the element is selected, False otherwise.
|
|
222
|
+
"""
|
|
223
|
+
|
|
224
|
+
...
|
|
225
|
+
|
|
226
|
+
@property
|
|
227
|
+
@abstractmethod
|
|
228
|
+
def legacy(self) -> legacyWebElement:
|
|
229
|
+
"""
|
|
230
|
+
Returns the underlying legacy Selenium WebElement instance.
|
|
231
|
+
|
|
232
|
+
This provides a way to access the original Selenium object for operations
|
|
233
|
+
not covered by this abstract interface.
|
|
234
|
+
|
|
235
|
+
Returns:
|
|
236
|
+
legacyWebElement: The legacy Selenium WebElement object.
|
|
237
|
+
"""
|
|
238
|
+
|
|
239
|
+
...
|
|
240
|
+
|
|
241
|
+
@abstractmethod
|
|
242
|
+
def location(self) -> Mapping[str, int]:
|
|
243
|
+
"""
|
|
244
|
+
The location of the element in the renderable canvas.
|
|
245
|
+
"""
|
|
246
|
+
|
|
247
|
+
...
|
|
248
|
+
|
|
249
|
+
@abstractmethod
|
|
250
|
+
def location_once_scrolled_into_view(self) -> Mapping[str, int]:
|
|
251
|
+
"""
|
|
252
|
+
The location of the element after scrolling it into view.
|
|
253
|
+
"""
|
|
254
|
+
|
|
255
|
+
...
|
|
256
|
+
|
|
257
|
+
@abstractmethod
|
|
258
|
+
def parent(self) -> Self:
|
|
259
|
+
"""
|
|
260
|
+
The parent of this element (the WebDriver instance).
|
|
261
|
+
"""
|
|
262
|
+
|
|
263
|
+
...
|
|
264
|
+
|
|
265
|
+
@abstractmethod
|
|
266
|
+
def rect(self) -> Mapping[str, int]:
|
|
267
|
+
"""
|
|
268
|
+
A dictionary with the size and location of the element.
|
|
269
|
+
"""
|
|
270
|
+
|
|
271
|
+
...
|
|
272
|
+
|
|
273
|
+
@abstractmethod
|
|
274
|
+
def screenshot(self, filename: str) -> bool:
|
|
275
|
+
"""
|
|
276
|
+
Saves a screenshot of the element to a file.
|
|
277
|
+
|
|
278
|
+
Args:
|
|
279
|
+
filename (str): The full path of the file.
|
|
280
|
+
|
|
281
|
+
Returns:
|
|
282
|
+
bool: True if successful, False otherwise.
|
|
283
|
+
"""
|
|
284
|
+
|
|
285
|
+
...
|
|
286
|
+
|
|
287
|
+
@abstractmethod
|
|
288
|
+
def screenshot_as_base64(self) -> str:
|
|
289
|
+
"""
|
|
290
|
+
A base64-encoded PNG image of the element.
|
|
291
|
+
"""
|
|
292
|
+
|
|
293
|
+
...
|
|
294
|
+
|
|
295
|
+
@abstractmethod
|
|
296
|
+
def screenshot_as_png(self) -> bytes:
|
|
297
|
+
"""
|
|
298
|
+
A PNG image of the element, as binary data.
|
|
299
|
+
"""
|
|
300
|
+
|
|
301
|
+
...
|
|
302
|
+
|
|
303
|
+
@abstractmethod
|
|
304
|
+
def send_keys(self, *value: str) -> None:
|
|
305
|
+
"""
|
|
306
|
+
Simulates typing into the element.
|
|
307
|
+
|
|
308
|
+
Args:
|
|
309
|
+
*value (str): A sequence of strings to send.
|
|
310
|
+
"""
|
|
311
|
+
|
|
312
|
+
...
|
|
313
|
+
|
|
314
|
+
@abstractmethod
|
|
315
|
+
def session_id(self) -> str:
|
|
316
|
+
"""
|
|
317
|
+
The session ID of the WebDriver controlling this element.
|
|
318
|
+
"""
|
|
319
|
+
|
|
320
|
+
...
|
|
321
|
+
|
|
322
|
+
@abstractmethod
|
|
323
|
+
def shadow_root(self) -> AbstractShadowRoot:
|
|
324
|
+
"""
|
|
325
|
+
The shadow root of this element.
|
|
326
|
+
"""
|
|
327
|
+
|
|
328
|
+
...
|
|
329
|
+
|
|
330
|
+
@abstractmethod
|
|
331
|
+
def size(self) -> Mapping[str, int]:
|
|
332
|
+
"""
|
|
333
|
+
The size of the element.
|
|
334
|
+
"""
|
|
335
|
+
|
|
336
|
+
...
|
|
337
|
+
|
|
338
|
+
@abstractmethod
|
|
339
|
+
def submit(self) -> None:
|
|
340
|
+
"""
|
|
341
|
+
Submits a form.
|
|
342
|
+
"""
|
|
343
|
+
|
|
344
|
+
...
|
|
345
|
+
|
|
346
|
+
@abstractmethod
|
|
347
|
+
def tag_name(self) -> str:
|
|
348
|
+
"""
|
|
349
|
+
The tag name of this element.
|
|
350
|
+
"""
|
|
351
|
+
|
|
352
|
+
...
|
|
353
|
+
|
|
354
|
+
@abstractmethod
|
|
355
|
+
def text(self) -> str:
|
|
356
|
+
"""
|
|
357
|
+
The text of the element.
|
|
358
|
+
"""
|
|
359
|
+
|
|
360
|
+
...
|
|
361
|
+
|
|
362
|
+
@abstractmethod
|
|
363
|
+
def value_of_css_property(self, property_name: str) -> str:
|
|
364
|
+
"""
|
|
365
|
+
The value of a CSS property.
|
|
366
|
+
|
|
367
|
+
Args:
|
|
368
|
+
property_name (str): The name of the CSS property.
|
|
369
|
+
|
|
370
|
+
Returns:
|
|
371
|
+
str: The value of the property.
|
|
372
|
+
"""
|
|
373
|
+
|
|
374
|
+
...
|
|
375
|
+
|
|
376
|
+
@abstractmethod
|
|
377
|
+
def web_driver_wait(
|
|
378
|
+
self,
|
|
379
|
+
timeout: float,
|
|
380
|
+
poll_frequency: float = 0.5,
|
|
381
|
+
ignored_exceptions: Optional[Iterable[BaseException]] = None,
|
|
382
|
+
) -> AbstractWebDriverWait:
|
|
383
|
+
"""
|
|
384
|
+
Creates a wait instance for this element.
|
|
385
|
+
|
|
386
|
+
Args:
|
|
387
|
+
timeout (float): Total time to wait in seconds.
|
|
388
|
+
poll_frequency (float): Sleep interval between polls. Defaults to 0.5.
|
|
389
|
+
ignored_exceptions (Optional[Iterable[BaseException]]): Exceptions to ignore during polling.
|
|
390
|
+
|
|
391
|
+
Returns:
|
|
392
|
+
AbstractWebDriverWait: The wait instance.
|
|
393
|
+
"""
|
|
394
|
+
|
|
395
|
+
...
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import (
|
|
3
|
+
Any,
|
|
4
|
+
Mapping,
|
|
5
|
+
Optional,
|
|
6
|
+
Union
|
|
7
|
+
)
|
|
8
|
+
from selenium.webdriver.common.bidi.webextension import (
|
|
9
|
+
WebExtension as legacyWebExtension
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
__all__ = ["AbstractWebExtension"]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class AbstractWebExtension(ABC):
|
|
17
|
+
"""
|
|
18
|
+
Abstract base class for managing browser extensions.
|
|
19
|
+
|
|
20
|
+
Defines the interface for installing and uninstalling web extensions.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
@abstractmethod
|
|
24
|
+
def install(
|
|
25
|
+
self,
|
|
26
|
+
path: Optional[str] = None,
|
|
27
|
+
archive_path: Optional[str] = None,
|
|
28
|
+
base64_value: Optional[str] = None,
|
|
29
|
+
) -> Mapping[str, Any]:
|
|
30
|
+
"""
|
|
31
|
+
Installs a web extension.
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
path (Optional[str]): Path to the extension file (.crx or .xpi).
|
|
35
|
+
archive_path (Optional[str]): Path to a zipped extension directory.
|
|
36
|
+
base64_value (Optional[str]): Base64 encoded extension data.
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
Mapping[str, Any]: A dictionary containing the result of the installation,
|
|
40
|
+
typically including the extension ID.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
...
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
@abstractmethod
|
|
47
|
+
def legacy(self) -> legacyWebExtension:
|
|
48
|
+
"""
|
|
49
|
+
Returns the underlying legacy Selenium WebExtension instance.
|
|
50
|
+
|
|
51
|
+
This provides a way to access the original Selenium object for operations
|
|
52
|
+
not covered by this abstract interface.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
legacyWebExtension: The legacy Selenium WebExtension object.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
...
|
|
59
|
+
|
|
60
|
+
@abstractmethod
|
|
61
|
+
def uninstall(self, extension_id_or_result: Union[str, Mapping[str, Any]]) -> None:
|
|
62
|
+
"""
|
|
63
|
+
Uninstalls a web extension.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
extension_id_or_result (Union[str, Mapping[str, Any]]): The ID of the extension
|
|
67
|
+
or the result dictionary from an install operation.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
...
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from abc import ABC
|
|
2
|
+
from osn_selenium.abstract.webdriver.core import (
|
|
3
|
+
AbstractCoreWebDriver as AbstractBaseWebDriver
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
__all__ = ["AbstractBlinkWebDriver"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AbstractBlinkWebDriver(AbstractBaseWebDriver, ABC):
|
|
11
|
+
"""
|
|
12
|
+
Abstract base class for Blink-based WebDrivers.
|
|
13
|
+
|
|
14
|
+
Combines the standard WebDriver interface with Blink-specific functionality,
|
|
15
|
+
specifically access to the Chrome DevTools Protocol (CDP).
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
pass
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
from abc import abstractmethod
|
|
2
|
+
from selenium import webdriver
|
|
3
|
+
from typing import Optional, Union
|
|
4
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
5
|
+
from osn_selenium.abstract.webdriver.core.base import (
|
|
6
|
+
AbstractCoreBaseMixin
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
__all__ = ["AbstractBlinkBaseMixin"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AbstractBlinkBaseMixin(AbstractCoreBaseMixin):
|
|
14
|
+
"""
|
|
15
|
+
Abstract mixin defining the base interface for Blink-based WebDrivers (Chrome, Edge).
|
|
16
|
+
|
|
17
|
+
This mixin establishes the contract for managing the browser executable path,
|
|
18
|
+
debugging connection details, and the underlying Selenium driver instance.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
@abstractmethod
|
|
23
|
+
def browser_exe(self) -> Optional[PATH_TYPEHINT]:
|
|
24
|
+
"""
|
|
25
|
+
Returns the file path to the browser executable.
|
|
26
|
+
|
|
27
|
+
Returns:
|
|
28
|
+
Optional[PATH_TYPEHINT]: The path to the executable,
|
|
29
|
+
or None if not managed by this instance.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
...
|
|
33
|
+
|
|
34
|
+
@property
|
|
35
|
+
@abstractmethod
|
|
36
|
+
def debugging_ip(self) -> Optional[str]:
|
|
37
|
+
"""
|
|
38
|
+
Returns the IP address used for the remote debugging protocol.
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
Optional[str]: The debugging IP address (e.g., "127.0.0.1"), or None if not set.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
...
|
|
45
|
+
|
|
46
|
+
@property
|
|
47
|
+
@abstractmethod
|
|
48
|
+
def debugging_port(self) -> Optional[int]:
|
|
49
|
+
"""
|
|
50
|
+
Returns the port number used for the remote debugging protocol.
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
Optional[int]: The debugging port, or None if not set.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
...
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
@abstractmethod
|
|
60
|
+
def driver(self) -> Optional[Union[webdriver.Chrome, webdriver.Edge]]:
|
|
61
|
+
"""
|
|
62
|
+
Returns the underlying Selenium WebDriver instance.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
Optional[Union[webdriver.Chrome, webdriver.Edge]]: The driver instance,
|
|
66
|
+
or None if not started.
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
...
|
|
70
|
+
|
|
71
|
+
@abstractmethod
|
|
72
|
+
def set_start_page_url(self, start_page_url: str) -> None:
|
|
73
|
+
"""
|
|
74
|
+
Sets the URL that the browser should navigate to upon startup.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
start_page_url (str): The URL to set as the start page.
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
...
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from typing import Any, Dict, List
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
__all__ = ["AbstractBlinkCastingMixin"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class AbstractBlinkCastingMixin(ABC):
|
|
9
|
+
"""
|
|
10
|
+
Abstract mixin defining the interface for casting/mirroring functionality
|
|
11
|
+
in Blink-based browsers.
|
|
12
|
+
|
|
13
|
+
Provides methods to discover sinks (receivers) and control tab or desktop mirroring sessions.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
@abstractmethod
|
|
17
|
+
def get_sinks(self) -> List[Dict[str, Any]]:
|
|
18
|
+
"""
|
|
19
|
+
Retrieves a list of available casting sinks (receivers).
|
|
20
|
+
|
|
21
|
+
Returns:
|
|
22
|
+
List[Dict[str, Any]]: A list of dictionaries, where each dictionary represents
|
|
23
|
+
a discovered sink and its properties.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
...
|
|
27
|
+
|
|
28
|
+
@abstractmethod
|
|
29
|
+
def set_sink_to_use(self, sink_name: str) -> Dict[str, Any]:
|
|
30
|
+
"""
|
|
31
|
+
Selects a specific sink to be used for future casting operations.
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
sink_name (str): The name of the sink to select.
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
Dict[str, Any]: A dictionary containing the command response or status.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
...
|
|
41
|
+
|
|
42
|
+
@abstractmethod
|
|
43
|
+
def start_desktop_mirroring(self, sink_name: str) -> Dict[str, Any]:
|
|
44
|
+
"""
|
|
45
|
+
Starts mirroring the entire desktop to the specified sink.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
sink_name (str): The name of the sink to cast the desktop to.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
Dict[str, Any]: A dictionary containing the command response or status.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
...
|
|
55
|
+
|
|
56
|
+
@abstractmethod
|
|
57
|
+
def start_tab_mirroring(self, sink_name: str) -> Dict[str, Any]:
|
|
58
|
+
"""
|
|
59
|
+
Starts mirroring the current browser tab to the specified sink.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
sink_name (str): The name of the sink to cast the tab to.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
Dict[str, Any]: A dictionary containing the command response or status.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
...
|
|
69
|
+
|
|
70
|
+
@abstractmethod
|
|
71
|
+
def stop_casting(self, sink_name: str) -> Dict[str, Any]:
|
|
72
|
+
"""
|
|
73
|
+
Stops the active casting session on the specified sink.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
sink_name (str): The name of the sink (receiver) to stop casting to.
|
|
77
|
+
|
|
78
|
+
Returns:
|
|
79
|
+
Dict[str, Any]: A dictionary containing the command response or status.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
...
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
from typing import Any, Dict
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
__all__ = ["AbstractBlinkFeaturesMixin"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class AbstractBlinkFeaturesMixin(ABC):
|
|
9
|
+
"""
|
|
10
|
+
Abstract mixin defining the interface for specific Blink browser features.
|
|
11
|
+
|
|
12
|
+
Includes functionality for handling permissions, launching apps, and retrieving
|
|
13
|
+
browser issue messages.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
@abstractmethod
|
|
17
|
+
def get_issue_message(self) -> Any:
|
|
18
|
+
"""
|
|
19
|
+
Retrieves the current issue message or status from the browser, if any.
|
|
20
|
+
|
|
21
|
+
Returns:
|
|
22
|
+
Any: The issue message object or string.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
...
|
|
26
|
+
|
|
27
|
+
@abstractmethod
|
|
28
|
+
def launch_app(self, id: str) -> Dict[str, Any]:
|
|
29
|
+
"""
|
|
30
|
+
Launches an installed application within the browser by its ID.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
id (str): The identifier of the application to launch.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
Dict[str, Any]: A dictionary containing the result of the launch operation.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
...
|
|
40
|
+
|
|
41
|
+
@abstractmethod
|
|
42
|
+
def set_permissions(self, name: str, value: str) -> None:
|
|
43
|
+
"""
|
|
44
|
+
Sets a specific permission for the browser context.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
name (str): The name of the permission (e.g., "camera", "microphone").
|
|
48
|
+
value (str): The value to set (e.g., "granted", "denied").
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
...
|