osn-selenium 0.0.0__py3-none-any.whl → 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- osn_selenium/_functions.py +84 -0
- osn_selenium/_typehints.py +19 -0
- osn_selenium/abstract/executors/cdp/__init__.py +435 -0
- osn_selenium/abstract/executors/cdp/accessibility.py +62 -0
- osn_selenium/abstract/executors/cdp/animation.py +47 -0
- osn_selenium/abstract/executors/cdp/audits.py +39 -0
- osn_selenium/abstract/executors/cdp/autofill.py +34 -0
- osn_selenium/abstract/executors/cdp/background_service.py +22 -0
- osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +95 -0
- osn_selenium/abstract/executors/cdp/browser.py +122 -0
- osn_selenium/abstract/executors/cdp/cache_storage.py +49 -0
- osn_selenium/abstract/executors/cdp/cast.py +31 -0
- osn_selenium/abstract/executors/cdp/console.py +18 -0
- osn_selenium/abstract/executors/cdp/css.py +197 -0
- osn_selenium/abstract/executors/cdp/debugger.py +198 -0
- osn_selenium/abstract/executors/cdp/device_access.py +22 -0
- osn_selenium/abstract/executors/cdp/device_orientation.py +14 -0
- osn_selenium/abstract/executors/cdp/dom.py +305 -0
- osn_selenium/abstract/executors/cdp/dom_debugger.py +57 -0
- osn_selenium/abstract/executors/cdp/dom_snapshot.py +42 -0
- osn_selenium/abstract/executors/cdp/dom_storage.py +31 -0
- osn_selenium/abstract/executors/cdp/emulation.py +259 -0
- osn_selenium/abstract/executors/cdp/event_breakpoints.py +18 -0
- osn_selenium/abstract/executors/cdp/extensions.py +31 -0
- osn_selenium/abstract/executors/cdp/fed_cm.py +35 -0
- osn_selenium/abstract/executors/cdp/fetch.py +76 -0
- osn_selenium/abstract/executors/cdp/file_system.py +11 -0
- osn_selenium/abstract/executors/cdp/headless_experimental.py +30 -0
- osn_selenium/abstract/executors/cdp/heap_profiler.py +73 -0
- osn_selenium/abstract/executors/cdp/indexed_db.py +99 -0
- osn_selenium/abstract/executors/cdp/input.py +158 -0
- osn_selenium/abstract/executors/cdp/inspector.py +14 -0
- osn_selenium/abstract/executors/cdp/io.py +24 -0
- osn_selenium/abstract/executors/cdp/layer_tree.py +61 -0
- osn_selenium/abstract/executors/cdp/log.py +27 -0
- osn_selenium/abstract/executors/cdp/media.py +14 -0
- osn_selenium/abstract/executors/cdp/memory.py +61 -0
- osn_selenium/abstract/executors/cdp/network.py +252 -0
- osn_selenium/abstract/executors/cdp/overlay.py +166 -0
- osn_selenium/abstract/executors/cdp/page.py +347 -0
- osn_selenium/abstract/executors/cdp/performance.py +28 -0
- osn_selenium/abstract/executors/cdp/performance_timeline.py +11 -0
- osn_selenium/abstract/executors/cdp/preload.py +14 -0
- osn_selenium/abstract/executors/cdp/profiler.py +54 -0
- osn_selenium/abstract/executors/cdp/pwa.py +46 -0
- osn_selenium/abstract/executors/cdp/runtime.py +176 -0
- osn_selenium/abstract/executors/cdp/schema.py +11 -0
- osn_selenium/abstract/executors/cdp/security.py +26 -0
- osn_selenium/abstract/executors/cdp/service_worker.py +54 -0
- osn_selenium/abstract/executors/cdp/storage.py +175 -0
- osn_selenium/abstract/executors/cdp/system_info.py +24 -0
- osn_selenium/abstract/executors/cdp/target.py +125 -0
- osn_selenium/abstract/executors/cdp/tethering.py +14 -0
- osn_selenium/abstract/executors/cdp/tracing.py +48 -0
- osn_selenium/abstract/executors/cdp/web_audio.py +19 -0
- osn_selenium/abstract/executors/cdp/web_authn.py +76 -0
- osn_selenium/abstract/executors/javascript.py +203 -0
- osn_selenium/abstract/instances/action_chains/__init__.py +12 -0
- osn_selenium/abstract/instances/action_chains/base.py +25 -0
- osn_selenium/abstract/instances/action_chains/click.py +93 -0
- osn_selenium/abstract/instances/action_chains/drag_and_drop.py +46 -0
- osn_selenium/abstract/instances/action_chains/hm_keyboard.py +44 -0
- osn_selenium/abstract/instances/action_chains/hm_move.py +104 -0
- osn_selenium/abstract/instances/action_chains/hm_scroll.py +75 -0
- osn_selenium/abstract/instances/action_chains/keyboard.py +79 -0
- osn_selenium/abstract/instances/action_chains/move.py +60 -0
- osn_selenium/abstract/instances/action_chains/scroll.py +61 -0
- osn_selenium/abstract/instances/action_chains/utils.py +44 -0
- osn_selenium/abstract/instances/alert.py +67 -0
- osn_selenium/abstract/instances/browser.py +76 -0
- osn_selenium/abstract/instances/browsing_context.py +310 -0
- osn_selenium/abstract/instances/dialog.py +107 -0
- osn_selenium/abstract/instances/fedcm.py +133 -0
- osn_selenium/abstract/instances/mobile.py +79 -0
- osn_selenium/abstract/instances/network.py +100 -0
- osn_selenium/abstract/instances/permissions.py +52 -0
- osn_selenium/abstract/instances/script.py +109 -0
- osn_selenium/abstract/instances/shadow_root.py +81 -0
- osn_selenium/abstract/instances/storage.py +98 -0
- osn_selenium/abstract/instances/switch_to.py +104 -0
- osn_selenium/abstract/instances/web_driver_wait.py +57 -0
- osn_selenium/abstract/instances/web_element.py +395 -0
- osn_selenium/abstract/instances/web_extension.py +70 -0
- osn_selenium/abstract/webdriver/blink/__init__.py +18 -0
- osn_selenium/abstract/webdriver/blink/base.py +80 -0
- osn_selenium/abstract/webdriver/blink/casting.py +82 -0
- osn_selenium/abstract/webdriver/blink/features.py +51 -0
- osn_selenium/abstract/webdriver/blink/lifecycle.py +76 -0
- osn_selenium/abstract/webdriver/blink/logging.py +40 -0
- osn_selenium/abstract/webdriver/blink/network.py +45 -0
- osn_selenium/abstract/webdriver/blink/settings.py +68 -0
- osn_selenium/abstract/webdriver/chrome/__init__.py +18 -0
- osn_selenium/abstract/webdriver/chrome/base.py +36 -0
- osn_selenium/abstract/webdriver/chrome/lifecycle.py +92 -0
- osn_selenium/abstract/webdriver/chrome/settings.py +110 -0
- osn_selenium/abstract/webdriver/core/__init__.py +16 -0
- osn_selenium/abstract/webdriver/core/actions.py +58 -0
- osn_selenium/abstract/webdriver/core/auth.py +145 -0
- osn_selenium/abstract/webdriver/core/base.py +298 -0
- osn_selenium/abstract/webdriver/core/capture.py +84 -0
- osn_selenium/abstract/webdriver/core/components.py +82 -0
- osn_selenium/abstract/webdriver/core/devtools.py +69 -0
- osn_selenium/abstract/webdriver/core/element.py +55 -0
- osn_selenium/abstract/webdriver/core/file.py +82 -0
- osn_selenium/abstract/webdriver/core/lifecycle.py +103 -0
- osn_selenium/abstract/webdriver/core/navigation.py +65 -0
- osn_selenium/abstract/webdriver/core/script.py +88 -0
- osn_selenium/abstract/webdriver/core/settings.py +43 -0
- osn_selenium/abstract/webdriver/core/storage.py +81 -0
- osn_selenium/abstract/webdriver/core/timeouts.py +101 -0
- osn_selenium/abstract/webdriver/core/window.py +237 -0
- osn_selenium/abstract/webdriver/edge/__init__.py +18 -0
- osn_selenium/abstract/webdriver/edge/base.py +36 -0
- osn_selenium/abstract/webdriver/edge/lifecycle.py +92 -0
- osn_selenium/abstract/webdriver/edge/settings.py +110 -0
- osn_selenium/abstract/webdriver/yandex/__init__.py +18 -0
- osn_selenium/abstract/webdriver/yandex/base.py +18 -0
- osn_selenium/abstract/webdriver/yandex/lifecycle.py +92 -0
- osn_selenium/abstract/webdriver/yandex/settings.py +110 -0
- osn_selenium/base_mixin.py +122 -0
- osn_selenium/browsers_handler/__init__.py +47 -17
- osn_selenium/browsers_handler/_linux.py +226 -0
- osn_selenium/browsers_handler/_windows.py +21 -14
- osn_selenium/browsers_handler/{types.py → models.py} +5 -2
- osn_selenium/dev_tools/_decorators.py +140 -0
- osn_selenium/dev_tools/_exception_helpers.py +116 -0
- osn_selenium/dev_tools/_functions.py +174 -0
- osn_selenium/dev_tools/_system_utils.py +35 -0
- osn_selenium/dev_tools/_typehints.py +32 -0
- osn_selenium/dev_tools/_validators.py +227 -0
- osn_selenium/dev_tools/_wrappers.py +95 -0
- osn_selenium/dev_tools/domains/__init__.py +7 -40
- osn_selenium/dev_tools/domains/abstract.py +98 -254
- osn_selenium/dev_tools/domains/fetch.py +229 -906
- osn_selenium/dev_tools/domains_default/fetch.py +40 -28
- osn_selenium/dev_tools/filters.py +40 -0
- osn_selenium/dev_tools/logger/main.py +226 -0
- osn_selenium/dev_tools/logger/models.py +232 -0
- osn_selenium/dev_tools/logger/target.py +258 -0
- osn_selenium/dev_tools/manager/__init__.py +16 -0
- osn_selenium/dev_tools/manager/base.py +147 -0
- osn_selenium/dev_tools/manager/lifecycle.py +236 -0
- osn_selenium/dev_tools/manager/logging.py +153 -0
- osn_selenium/dev_tools/manager/settings.py +89 -0
- osn_selenium/dev_tools/manager/targets.py +175 -0
- osn_selenium/dev_tools/models.py +49 -0
- osn_selenium/dev_tools/settings.py +135 -0
- osn_selenium/dev_tools/target/__init__.py +16 -0
- osn_selenium/dev_tools/target/base.py +438 -0
- osn_selenium/dev_tools/target/detach.py +54 -0
- osn_selenium/dev_tools/target/discovery.py +112 -0
- osn_selenium/dev_tools/target/events.py +120 -0
- osn_selenium/dev_tools/target/fingerprint.py +126 -0
- osn_selenium/dev_tools/target/lifecycle.py +179 -0
- osn_selenium/dev_tools/target/logging.py +155 -0
- osn_selenium/exceptions/__init__.py +1 -0
- osn_selenium/exceptions/base.py +9 -0
- osn_selenium/exceptions/configuration.py +84 -0
- osn_selenium/exceptions/devtools.py +114 -0
- osn_selenium/exceptions/flags.py +45 -0
- osn_selenium/exceptions/instance.py +92 -0
- osn_selenium/exceptions/javascript.py +31 -0
- osn_selenium/exceptions/logic.py +31 -0
- osn_selenium/exceptions/path.py +77 -0
- osn_selenium/exceptions/platform.py +33 -0
- osn_selenium/exceptions/protocol.py +86 -0
- osn_selenium/exceptions/webdriver.py +44 -0
- osn_selenium/exceptions/window.py +63 -0
- osn_selenium/executors/__init__.py +1 -0
- osn_selenium/executors/sync/__init__.py +1 -0
- osn_selenium/executors/sync/cdp/__init__.py +550 -0
- osn_selenium/executors/sync/cdp/accessibility.py +74 -0
- osn_selenium/executors/sync/cdp/animation.py +50 -0
- osn_selenium/executors/sync/cdp/audits.py +48 -0
- osn_selenium/executors/sync/cdp/autofill.py +39 -0
- osn_selenium/executors/sync/cdp/background_service.py +30 -0
- osn_selenium/executors/sync/cdp/bluetooth_emulation.py +101 -0
- osn_selenium/executors/sync/cdp/browser.py +131 -0
- osn_selenium/executors/sync/cdp/cache_storage.py +66 -0
- osn_selenium/executors/sync/cdp/cast.py +38 -0
- osn_selenium/executors/sync/cdp/console.py +24 -0
- osn_selenium/executors/sync/cdp/css.py +187 -0
- osn_selenium/executors/sync/cdp/debugger.py +206 -0
- osn_selenium/executors/sync/cdp/device_access.py +27 -0
- osn_selenium/executors/sync/cdp/device_orientation.py +24 -0
- osn_selenium/executors/sync/cdp/dom.py +310 -0
- osn_selenium/executors/sync/cdp/dom_debugger.py +56 -0
- osn_selenium/executors/sync/cdp/dom_snapshot.py +58 -0
- osn_selenium/executors/sync/cdp/dom_storage.py +38 -0
- osn_selenium/executors/sync/cdp/emulation.py +270 -0
- osn_selenium/executors/sync/cdp/event_breakpoints.py +27 -0
- osn_selenium/executors/sync/cdp/extensions.py +39 -0
- osn_selenium/executors/sync/cdp/fed_cm.py +45 -0
- osn_selenium/executors/sync/cdp/fetch.py +96 -0
- osn_selenium/executors/sync/cdp/file_system.py +18 -0
- osn_selenium/executors/sync/cdp/headless_experimental.py +44 -0
- osn_selenium/executors/sync/cdp/heap_profiler.py +89 -0
- osn_selenium/executors/sync/cdp/indexed_db.py +142 -0
- osn_selenium/executors/sync/cdp/input.py +233 -0
- osn_selenium/executors/sync/cdp/inspector.py +21 -0
- osn_selenium/executors/sync/cdp/io.py +33 -0
- osn_selenium/executors/sync/cdp/layer_tree.py +71 -0
- osn_selenium/executors/sync/cdp/log.py +35 -0
- osn_selenium/executors/sync/cdp/media.py +21 -0
- osn_selenium/executors/sync/cdp/memory.py +62 -0
- osn_selenium/executors/sync/cdp/network.py +287 -0
- osn_selenium/executors/sync/cdp/overlay.py +174 -0
- osn_selenium/executors/sync/cdp/page.py +365 -0
- osn_selenium/executors/sync/cdp/performance.py +33 -0
- osn_selenium/executors/sync/cdp/performance_timeline.py +26 -0
- osn_selenium/executors/sync/cdp/preload.py +21 -0
- osn_selenium/executors/sync/cdp/profiler.py +58 -0
- osn_selenium/executors/sync/cdp/pwa.py +55 -0
- osn_selenium/executors/sync/cdp/runtime.py +221 -0
- osn_selenium/executors/sync/cdp/schema.py +23 -0
- osn_selenium/executors/sync/cdp/security.py +30 -0
- osn_selenium/executors/sync/cdp/service_worker.py +56 -0
- osn_selenium/executors/sync/cdp/storage.py +151 -0
- osn_selenium/executors/sync/cdp/system_info.py +30 -0
- osn_selenium/executors/sync/cdp/target.py +147 -0
- osn_selenium/executors/sync/cdp/tethering.py +21 -0
- osn_selenium/executors/sync/cdp/tracing.py +62 -0
- osn_selenium/executors/sync/cdp/web_audio.py +24 -0
- osn_selenium/executors/sync/cdp/web_authn.py +82 -0
- osn_selenium/executors/sync/javascript.py +79 -0
- osn_selenium/executors/trio_threads/__init__.py +1 -0
- osn_selenium/executors/trio_threads/cdp/__init__.py +771 -0
- osn_selenium/executors/trio_threads/cdp/accessibility.py +87 -0
- osn_selenium/executors/trio_threads/cdp/animation.py +63 -0
- osn_selenium/executors/trio_threads/cdp/audits.py +57 -0
- osn_selenium/executors/trio_threads/cdp/autofill.py +52 -0
- osn_selenium/executors/trio_threads/cdp/background_service.py +40 -0
- osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +111 -0
- osn_selenium/executors/trio_threads/cdp/browser.py +140 -0
- osn_selenium/executors/trio_threads/cdp/cache_storage.py +79 -0
- osn_selenium/executors/trio_threads/cdp/cast.py +47 -0
- osn_selenium/executors/trio_threads/cdp/console.py +33 -0
- osn_selenium/executors/trio_threads/cdp/css.py +196 -0
- osn_selenium/executors/trio_threads/cdp/debugger.py +219 -0
- osn_selenium/executors/trio_threads/cdp/device_access.py +40 -0
- osn_selenium/executors/trio_threads/cdp/device_orientation.py +34 -0
- osn_selenium/executors/trio_threads/cdp/dom.py +319 -0
- osn_selenium/executors/trio_threads/cdp/dom_debugger.py +69 -0
- osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +71 -0
- osn_selenium/executors/trio_threads/cdp/dom_storage.py +51 -0
- osn_selenium/executors/trio_threads/cdp/emulation.py +283 -0
- osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +37 -0
- osn_selenium/executors/trio_threads/cdp/extensions.py +52 -0
- osn_selenium/executors/trio_threads/cdp/fed_cm.py +54 -0
- osn_selenium/executors/trio_threads/cdp/fetch.py +105 -0
- osn_selenium/executors/trio_threads/cdp/file_system.py +31 -0
- osn_selenium/executors/trio_threads/cdp/headless_experimental.py +54 -0
- osn_selenium/executors/trio_threads/cdp/heap_profiler.py +102 -0
- osn_selenium/executors/trio_threads/cdp/indexed_db.py +155 -0
- osn_selenium/executors/trio_threads/cdp/input.py +242 -0
- osn_selenium/executors/trio_threads/cdp/inspector.py +34 -0
- osn_selenium/executors/trio_threads/cdp/io.py +42 -0
- osn_selenium/executors/trio_threads/cdp/layer_tree.py +84 -0
- osn_selenium/executors/trio_threads/cdp/log.py +44 -0
- osn_selenium/executors/trio_threads/cdp/media.py +30 -0
- osn_selenium/executors/trio_threads/cdp/memory.py +71 -0
- osn_selenium/executors/trio_threads/cdp/network.py +296 -0
- osn_selenium/executors/trio_threads/cdp/overlay.py +183 -0
- osn_selenium/executors/trio_threads/cdp/page.py +374 -0
- osn_selenium/executors/trio_threads/cdp/performance.py +46 -0
- osn_selenium/executors/trio_threads/cdp/performance_timeline.py +36 -0
- osn_selenium/executors/trio_threads/cdp/preload.py +30 -0
- osn_selenium/executors/trio_threads/cdp/profiler.py +71 -0
- osn_selenium/executors/trio_threads/cdp/pwa.py +64 -0
- osn_selenium/executors/trio_threads/cdp/runtime.py +230 -0
- osn_selenium/executors/trio_threads/cdp/schema.py +32 -0
- osn_selenium/executors/trio_threads/cdp/security.py +43 -0
- osn_selenium/executors/trio_threads/cdp/service_worker.py +69 -0
- osn_selenium/executors/trio_threads/cdp/storage.py +162 -0
- osn_selenium/executors/trio_threads/cdp/system_info.py +43 -0
- osn_selenium/executors/trio_threads/cdp/target.py +156 -0
- osn_selenium/executors/trio_threads/cdp/tethering.py +34 -0
- osn_selenium/executors/trio_threads/cdp/tracing.py +71 -0
- osn_selenium/executors/trio_threads/cdp/web_audio.py +37 -0
- osn_selenium/executors/trio_threads/cdp/web_authn.py +95 -0
- osn_selenium/executors/trio_threads/javascript.py +90 -0
- osn_selenium/executors/unified/__init__.py +1 -0
- osn_selenium/executors/unified/cdp/__init__.py +1 -0
- osn_selenium/executors/unified/cdp/accessibility.py +81 -0
- osn_selenium/executors/unified/cdp/animation.py +50 -0
- osn_selenium/executors/unified/cdp/audits.py +45 -0
- osn_selenium/executors/unified/cdp/autofill.py +41 -0
- osn_selenium/executors/unified/cdp/background_service.py +24 -0
- osn_selenium/executors/unified/cdp/bluetooth_emulation.py +132 -0
- osn_selenium/executors/unified/cdp/browser.py +143 -0
- osn_selenium/executors/unified/cdp/cache_storage.py +69 -0
- osn_selenium/executors/unified/cdp/cast.py +32 -0
- osn_selenium/executors/unified/cdp/console.py +18 -0
- osn_selenium/executors/unified/cdp/css.py +237 -0
- osn_selenium/executors/unified/cdp/debugger.py +243 -0
- osn_selenium/executors/unified/cdp/device_access.py +21 -0
- osn_selenium/executors/unified/cdp/device_orientation.py +18 -0
- osn_selenium/executors/unified/cdp/dom.py +380 -0
- osn_selenium/executors/unified/cdp/dom_debugger.py +65 -0
- osn_selenium/executors/unified/cdp/dom_snapshot.py +58 -0
- osn_selenium/executors/unified/cdp/dom_storage.py +38 -0
- osn_selenium/executors/unified/cdp/emulation.py +312 -0
- osn_selenium/executors/unified/cdp/event_breakpoints.py +24 -0
- osn_selenium/executors/unified/cdp/extensions.py +45 -0
- osn_selenium/executors/unified/cdp/fed_cm.py +51 -0
- osn_selenium/executors/unified/cdp/fetch.py +111 -0
- osn_selenium/executors/unified/cdp/file_system.py +15 -0
- osn_selenium/executors/unified/cdp/headless_experimental.py +38 -0
- osn_selenium/executors/unified/cdp/heap_profiler.py +101 -0
- osn_selenium/executors/unified/cdp/indexed_db.py +157 -0
- osn_selenium/executors/unified/cdp/input.py +254 -0
- osn_selenium/executors/unified/cdp/inspector.py +15 -0
- osn_selenium/executors/unified/cdp/io.py +29 -0
- osn_selenium/executors/unified/cdp/layer_tree.py +71 -0
- osn_selenium/executors/unified/cdp/log.py +29 -0
- osn_selenium/executors/unified/cdp/media.py +15 -0
- osn_selenium/executors/unified/cdp/memory.py +59 -0
- osn_selenium/executors/unified/cdp/network.py +323 -0
- osn_selenium/executors/unified/cdp/overlay.py +209 -0
- osn_selenium/executors/unified/cdp/page.py +410 -0
- osn_selenium/executors/unified/cdp/performance.py +27 -0
- osn_selenium/executors/unified/cdp/performance_timeline.py +17 -0
- osn_selenium/executors/unified/cdp/preload.py +15 -0
- osn_selenium/executors/unified/cdp/profiler.py +55 -0
- osn_selenium/executors/unified/cdp/pwa.py +55 -0
- osn_selenium/executors/unified/cdp/runtime.py +245 -0
- osn_selenium/executors/unified/cdp/schema.py +17 -0
- osn_selenium/executors/unified/cdp/security.py +27 -0
- osn_selenium/executors/unified/cdp/service_worker.py +62 -0
- osn_selenium/executors/unified/cdp/storage.py +178 -0
- osn_selenium/executors/unified/cdp/system_info.py +24 -0
- osn_selenium/executors/unified/cdp/target.py +165 -0
- osn_selenium/executors/unified/cdp/tethering.py +15 -0
- osn_selenium/executors/unified/cdp/tracing.py +62 -0
- osn_selenium/executors/unified/cdp/web_audio.py +18 -0
- osn_selenium/executors/unified/cdp/web_authn.py +103 -0
- osn_selenium/executors/unified/javascript.py +108 -0
- osn_selenium/flags/__init__.py +1 -0
- osn_selenium/flags/_functions.py +45 -0
- osn_selenium/flags/_typehints.py +34 -0
- osn_selenium/flags/_validators.py +101 -0
- osn_selenium/{webdrivers/BaseDriver/flags.py → flags/base.py} +165 -243
- osn_selenium/{webdrivers/Blink/flags.py → flags/blink.py} +133 -371
- osn_selenium/flags/chrome.py +259 -0
- osn_selenium/flags/edge.py +259 -0
- osn_selenium/flags/models/__init__.py +1 -0
- osn_selenium/flags/models/base.py +130 -0
- osn_selenium/flags/models/blink.py +263 -0
- osn_selenium/{webdrivers/Chrome/flags.py → flags/models/chrome.py} +25 -75
- osn_selenium/{webdrivers/Edge/flags.py → flags/models/edge.py} +25 -75
- osn_selenium/flags/models/values.py +44 -0
- osn_selenium/{webdrivers/Yandex/flags.py → flags/models/yandex.py} +26 -76
- osn_selenium/flags/yandex.py +259 -0
- osn_selenium/instances/__init__.py +1 -0
- osn_selenium/instances/_functions.py +242 -0
- osn_selenium/instances/_typehints.py +148 -0
- osn_selenium/instances/_utils.py +143 -0
- osn_selenium/instances/convert.py +287 -0
- osn_selenium/instances/protocols.py +105 -0
- osn_selenium/instances/sync/__init__.py +1 -0
- osn_selenium/instances/sync/action_chains/__init__.py +26 -0
- osn_selenium/instances/sync/action_chains/base.py +74 -0
- osn_selenium/instances/sync/action_chains/click.py +61 -0
- osn_selenium/instances/sync/action_chains/drag_and_drop.py +45 -0
- osn_selenium/instances/sync/action_chains/hm_keyboard.py +37 -0
- osn_selenium/instances/sync/action_chains/hm_move.py +81 -0
- osn_selenium/instances/sync/action_chains/hm_scroll.py +60 -0
- osn_selenium/instances/sync/action_chains/keyboard.py +55 -0
- osn_selenium/instances/sync/action_chains/move.py +46 -0
- osn_selenium/instances/sync/action_chains/scroll.py +43 -0
- osn_selenium/instances/sync/action_chains/utils.py +30 -0
- osn_selenium/instances/sync/alert.py +69 -0
- osn_selenium/instances/sync/browser.py +72 -0
- osn_selenium/instances/sync/browsing_context.py +193 -0
- osn_selenium/instances/sync/dialog.py +81 -0
- osn_selenium/instances/sync/fedcm.py +92 -0
- osn_selenium/instances/sync/mobile.py +75 -0
- osn_selenium/instances/sync/network.py +90 -0
- osn_selenium/instances/sync/permissions.py +80 -0
- osn_selenium/instances/sync/script.py +77 -0
- osn_selenium/instances/sync/shadow_root.py +91 -0
- osn_selenium/instances/sync/storage.py +91 -0
- osn_selenium/instances/sync/switch_to.py +92 -0
- osn_selenium/instances/sync/web_driver_wait.py +83 -0
- osn_selenium/instances/sync/web_element.py +179 -0
- osn_selenium/instances/sync/web_extension.py +77 -0
- osn_selenium/instances/trio_threads/__init__.py +1 -0
- osn_selenium/instances/trio_threads/action_chains/__init__.py +26 -0
- osn_selenium/instances/trio_threads/action_chains/base.py +88 -0
- osn_selenium/instances/trio_threads/action_chains/click.py +71 -0
- osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +49 -0
- osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +41 -0
- osn_selenium/instances/trio_threads/action_chains/hm_move.py +91 -0
- osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +66 -0
- osn_selenium/instances/trio_threads/action_chains/keyboard.py +63 -0
- osn_selenium/instances/trio_threads/action_chains/move.py +52 -0
- osn_selenium/instances/trio_threads/action_chains/scroll.py +49 -0
- osn_selenium/instances/trio_threads/action_chains/utils.py +32 -0
- osn_selenium/instances/trio_threads/alert.py +87 -0
- osn_selenium/instances/trio_threads/browser.py +90 -0
- osn_selenium/instances/trio_threads/browsing_context.py +216 -0
- osn_selenium/instances/trio_threads/dialog.py +99 -0
- osn_selenium/instances/trio_threads/fedcm.py +110 -0
- osn_selenium/instances/trio_threads/mobile.py +93 -0
- osn_selenium/instances/trio_threads/network.py +108 -0
- osn_selenium/instances/trio_threads/permissions.py +102 -0
- osn_selenium/instances/trio_threads/script.py +95 -0
- osn_selenium/instances/trio_threads/shadow_root.py +123 -0
- osn_selenium/instances/trio_threads/storage.py +109 -0
- osn_selenium/instances/trio_threads/switch_to.py +124 -0
- osn_selenium/instances/trio_threads/web_driver_wait.py +101 -0
- osn_selenium/instances/trio_threads/web_element.py +217 -0
- osn_selenium/instances/trio_threads/web_extension.py +99 -0
- osn_selenium/instances/unified/__init__.py +1 -0
- osn_selenium/instances/unified/action_chains/__init__.py +22 -0
- osn_selenium/instances/unified/action_chains/base.py +31 -0
- osn_selenium/instances/unified/action_chains/click.py +27 -0
- osn_selenium/instances/unified/action_chains/drag_and_drop.py +24 -0
- osn_selenium/instances/unified/action_chains/hm_keyboard.py +30 -0
- osn_selenium/instances/unified/action_chains/hm_move.py +66 -0
- osn_selenium/instances/unified/action_chains/hm_scroll.py +79 -0
- osn_selenium/instances/unified/action_chains/keyboard.py +24 -0
- osn_selenium/instances/unified/action_chains/move.py +24 -0
- osn_selenium/instances/unified/action_chains/scroll.py +21 -0
- osn_selenium/instances/unified/action_chains/utils.py +19 -0
- osn_selenium/instances/unified/alert.py +29 -0
- osn_selenium/instances/unified/browser.py +33 -0
- osn_selenium/instances/unified/browsing_context.py +151 -0
- osn_selenium/instances/unified/dialog.py +42 -0
- osn_selenium/instances/unified/fedcm.py +48 -0
- osn_selenium/instances/unified/mobile.py +36 -0
- osn_selenium/instances/unified/network.py +50 -0
- osn_selenium/instances/unified/permissions.py +43 -0
- osn_selenium/instances/unified/script.py +38 -0
- osn_selenium/instances/unified/shadow_root.py +46 -0
- osn_selenium/instances/unified/storage.py +48 -0
- osn_selenium/instances/unified/switch_to.py +49 -0
- osn_selenium/instances/unified/web_driver_wait.py +45 -0
- osn_selenium/instances/unified/web_element.py +145 -0
- osn_selenium/instances/unified/web_extension.py +38 -0
- osn_selenium/javascript/__init__.py +1 -0
- osn_selenium/javascript/_functions.py +63 -0
- osn_selenium/javascript/fingerprint/__init__.py +120 -0
- osn_selenium/javascript/fingerprint/_decorators.py +41 -0
- osn_selenium/javascript/fingerprint/_detect/__init__.py +1 -0
- osn_selenium/javascript/fingerprint/_detect/functions.py +253 -0
- osn_selenium/javascript/fingerprint/_detect/templates.py +128 -0
- osn_selenium/javascript/fingerprint/_functions.py +35 -0
- osn_selenium/javascript/fingerprint/_typehints.py +27 -0
- osn_selenium/javascript/fingerprint/registry/__init__.py +7 -0
- osn_selenium/javascript/fingerprint/registry/_core_functions.py +236 -0
- osn_selenium/javascript/fingerprint/registry/_functions.py +923 -0
- osn_selenium/javascript/fingerprint/registry/_typehints.py +6 -0
- osn_selenium/javascript/fingerprint/registry/_utils.py +6 -0
- osn_selenium/javascript/fingerprint/registry/models.py +41 -0
- osn_selenium/javascript/fingerprint/spoof/__init__.py +1 -0
- osn_selenium/javascript/fingerprint/spoof/_functions.py +172 -0
- osn_selenium/javascript/fingerprint/spoof/_templates.py +134 -0
- osn_selenium/javascript/fingerprint/spoof/_typehints.py +22 -0
- osn_selenium/javascript/fingerprint/spoof/core_rules.py +141 -0
- osn_selenium/javascript/fingerprint/spoof/noise.py +51 -0
- osn_selenium/javascript/fingerprint/spoof/rules.py +313 -0
- osn_selenium/javascript/functions.py +44 -0
- osn_selenium/javascript/models.py +35 -0
- osn_selenium/javascript/scripts/start_fingerprint_detection.js +56 -0
- osn_selenium/models.py +139 -0
- osn_selenium/webdrivers/_args_helpers.py +181 -0
- osn_selenium/webdrivers/_bridges.py +57 -0
- osn_selenium/webdrivers/_decorators.py +83 -0
- osn_selenium/webdrivers/_executable_tables/__init__.py +1 -0
- osn_selenium/webdrivers/_executable_tables/functions.py +113 -0
- osn_selenium/webdrivers/_executable_tables/models.py +19 -0
- osn_selenium/webdrivers/_typehints.py +10 -0
- osn_selenium/webdrivers/protocols.py +50 -0
- osn_selenium/webdrivers/sync/__init__.py +1 -0
- osn_selenium/webdrivers/sync/blink/__init__.py +114 -0
- osn_selenium/webdrivers/sync/blink/base.py +128 -0
- osn_selenium/webdrivers/sync/blink/casting.py +34 -0
- osn_selenium/webdrivers/sync/blink/features.py +28 -0
- osn_selenium/webdrivers/sync/blink/lifecycle.py +66 -0
- osn_selenium/webdrivers/sync/blink/logging.py +25 -0
- osn_selenium/webdrivers/sync/blink/network.py +28 -0
- osn_selenium/webdrivers/sync/blink/settings.py +63 -0
- osn_selenium/webdrivers/sync/chrome/__init__.py +67 -0
- osn_selenium/webdrivers/sync/chrome/base.py +106 -0
- osn_selenium/webdrivers/sync/chrome/lifecycle.py +63 -0
- osn_selenium/webdrivers/sync/chrome/settings.py +58 -0
- osn_selenium/webdrivers/sync/core/__init__.py +91 -0
- osn_selenium/webdrivers/sync/core/actions.py +59 -0
- osn_selenium/webdrivers/sync/core/auth.py +77 -0
- osn_selenium/webdrivers/sync/core/base.py +167 -0
- osn_selenium/webdrivers/sync/core/capture.py +37 -0
- osn_selenium/webdrivers/sync/core/comonents.py +57 -0
- osn_selenium/webdrivers/sync/core/devtools.py +47 -0
- osn_selenium/webdrivers/sync/core/element.py +42 -0
- osn_selenium/webdrivers/sync/core/file.py +40 -0
- osn_selenium/webdrivers/sync/core/lifecycle.py +59 -0
- osn_selenium/webdrivers/sync/core/navigation.py +36 -0
- osn_selenium/webdrivers/sync/core/script.py +53 -0
- osn_selenium/webdrivers/sync/core/settings.py +35 -0
- osn_selenium/webdrivers/sync/core/storage.py +48 -0
- osn_selenium/webdrivers/sync/core/timeouts.py +59 -0
- osn_selenium/webdrivers/sync/core/window.py +99 -0
- osn_selenium/webdrivers/sync/edge/__init__.py +67 -0
- osn_selenium/webdrivers/sync/edge/base.py +102 -0
- osn_selenium/webdrivers/sync/edge/lifecycle.py +63 -0
- osn_selenium/webdrivers/sync/edge/settings.py +58 -0
- osn_selenium/webdrivers/sync/yandex/__init__.py +67 -0
- osn_selenium/webdrivers/sync/yandex/base.py +99 -0
- osn_selenium/webdrivers/sync/yandex/lifecycle.py +63 -0
- osn_selenium/webdrivers/sync/yandex/settings.py +58 -0
- osn_selenium/webdrivers/trio_threads/__init__.py +1 -0
- osn_selenium/webdrivers/trio_threads/blink/__init__.py +124 -0
- osn_selenium/webdrivers/trio_threads/blink/base.py +133 -0
- osn_selenium/webdrivers/trio_threads/blink/casting.py +35 -0
- osn_selenium/webdrivers/trio_threads/blink/features.py +29 -0
- osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +66 -0
- osn_selenium/webdrivers/trio_threads/blink/logging.py +26 -0
- osn_selenium/webdrivers/trio_threads/blink/network.py +29 -0
- osn_selenium/webdrivers/trio_threads/blink/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/chrome/__init__.py +81 -0
- osn_selenium/webdrivers/trio_threads/chrome/base.py +107 -0
- osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +63 -0
- osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/core/__init__.py +109 -0
- osn_selenium/webdrivers/trio_threads/core/actions.py +72 -0
- osn_selenium/webdrivers/trio_threads/core/auth.py +88 -0
- osn_selenium/webdrivers/trio_threads/core/base.py +191 -0
- osn_selenium/webdrivers/trio_threads/core/capture.py +38 -0
- osn_selenium/webdrivers/trio_threads/core/comonents.py +92 -0
- osn_selenium/webdrivers/trio_threads/core/devtools.py +53 -0
- osn_selenium/webdrivers/trio_threads/core/element.py +58 -0
- osn_selenium/webdrivers/trio_threads/core/file.py +45 -0
- osn_selenium/webdrivers/trio_threads/core/lifecycle.py +60 -0
- osn_selenium/webdrivers/trio_threads/core/navigation.py +41 -0
- osn_selenium/webdrivers/trio_threads/core/script.py +59 -0
- osn_selenium/webdrivers/trio_threads/core/settings.py +36 -0
- osn_selenium/webdrivers/trio_threads/core/storage.py +54 -0
- osn_selenium/webdrivers/trio_threads/core/timeouts.py +60 -0
- osn_selenium/webdrivers/trio_threads/core/window.py +105 -0
- osn_selenium/webdrivers/trio_threads/edge/__init__.py +81 -0
- osn_selenium/webdrivers/trio_threads/edge/base.py +103 -0
- osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +63 -0
- osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/yandex/__init__.py +81 -0
- osn_selenium/webdrivers/trio_threads/yandex/base.py +100 -0
- osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +63 -0
- osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
- osn_selenium/webdrivers/unified/__init__.py +1 -0
- osn_selenium/webdrivers/unified/blink/__init__.py +1 -0
- osn_selenium/webdrivers/unified/blink/base.py +131 -0
- osn_selenium/webdrivers/unified/blink/casting.py +30 -0
- osn_selenium/webdrivers/unified/blink/features.py +22 -0
- osn_selenium/webdrivers/unified/blink/lifecycle.py +114 -0
- osn_selenium/webdrivers/unified/blink/logging.py +18 -0
- osn_selenium/webdrivers/unified/blink/network.py +22 -0
- osn_selenium/webdrivers/unified/blink/settings.py +86 -0
- osn_selenium/webdrivers/unified/chrome/__init__.py +1 -0
- osn_selenium/webdrivers/unified/chrome/base.py +54 -0
- osn_selenium/webdrivers/unified/chrome/lifecycle.py +88 -0
- osn_selenium/webdrivers/unified/chrome/settings.py +48 -0
- osn_selenium/webdrivers/unified/core/__init__.py +1 -0
- osn_selenium/webdrivers/unified/core/actions.py +43 -0
- osn_selenium/webdrivers/unified/core/auth.py +70 -0
- osn_selenium/webdrivers/unified/core/base.py +132 -0
- osn_selenium/webdrivers/unified/core/capture.py +32 -0
- osn_selenium/webdrivers/unified/core/components.py +32 -0
- osn_selenium/webdrivers/unified/core/devtools.py +35 -0
- osn_selenium/webdrivers/unified/core/element.py +24 -0
- osn_selenium/webdrivers/unified/core/file.py +35 -0
- osn_selenium/webdrivers/unified/core/lifecycle.py +84 -0
- osn_selenium/webdrivers/unified/core/navigation.py +31 -0
- osn_selenium/webdrivers/unified/core/script.py +32 -0
- osn_selenium/webdrivers/unified/core/settings.py +44 -0
- osn_selenium/webdrivers/unified/core/storage.py +37 -0
- osn_selenium/webdrivers/unified/core/timeouts.py +56 -0
- osn_selenium/webdrivers/unified/core/window.py +135 -0
- osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
- osn_selenium/webdrivers/unified/edge/base.py +52 -0
- osn_selenium/webdrivers/unified/edge/lifecycle.py +88 -0
- osn_selenium/webdrivers/unified/edge/settings.py +48 -0
- osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
- osn_selenium/webdrivers/unified/yandex/base.py +54 -0
- osn_selenium/webdrivers/unified/yandex/lifecycle.py +58 -0
- osn_selenium/webdrivers/unified/yandex/settings.py +48 -0
- osn_selenium-1.0.0.dist-info/METADATA +239 -0
- osn_selenium-1.0.0.dist-info/RECORD +608 -0
- {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/WHEEL +1 -1
- osn_selenium/captcha_workers/__init__.py +0 -26
- osn_selenium/dev_tools/_types.py +0 -22
- osn_selenium/dev_tools/errors.py +0 -89
- osn_selenium/dev_tools/logger.py +0 -558
- osn_selenium/dev_tools/manager.py +0 -1551
- osn_selenium/dev_tools/utils.py +0 -509
- osn_selenium/errors.py +0 -16
- osn_selenium/types.py +0 -118
- osn_selenium/webdrivers/BaseDriver/_utils.py +0 -37
- osn_selenium/webdrivers/BaseDriver/protocols.py +0 -2135
- osn_selenium/webdrivers/BaseDriver/trio_wrapper.py +0 -71
- osn_selenium/webdrivers/BaseDriver/webdriver.py +0 -2626
- osn_selenium/webdrivers/Blink/protocols.py +0 -330
- osn_selenium/webdrivers/Blink/webdriver.py +0 -637
- osn_selenium/webdrivers/Chrome/protocols.py +0 -228
- osn_selenium/webdrivers/Chrome/webdriver.py +0 -394
- osn_selenium/webdrivers/Edge/protocols.py +0 -228
- osn_selenium/webdrivers/Edge/webdriver.py +0 -394
- osn_selenium/webdrivers/Yandex/protocols.py +0 -211
- osn_selenium/webdrivers/Yandex/webdriver.py +0 -350
- osn_selenium/webdrivers/_functions.py +0 -504
- osn_selenium/webdrivers/types.py +0 -390
- osn_selenium-0.0.0.dist-info/METADATA +0 -710
- osn_selenium-0.0.0.dist-info/RECORD +0 -57
- /osn_selenium/{webdrivers/BaseDriver → abstract}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Blink → abstract/executors}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Chrome → abstract/instances}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Edge → abstract/webdriver}/__init__.py +0 -0
- /osn_selenium/{webdrivers/Yandex → dev_tools/logger}/__init__.py +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/check_element_in_viewport.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_document_scroll_size.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_css.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_element_rect_in_viewport.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_random_element_point_in_viewport.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_position.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_rect.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/get_viewport_size.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/open_new_tab.js +0 -0
- /osn_selenium/{webdrivers/js_scripts → javascript/scripts}/stop_window_loading.js +0 -0
- {osn_selenium-0.0.0.dist-info → osn_selenium-1.0.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from abc import abstractmethod
|
|
3
|
+
from osn_selenium.models import WindowRect
|
|
4
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
5
|
+
from osn_selenium.flags.models.chrome import ChromeFlags
|
|
6
|
+
from osn_selenium.abstract.webdriver.blink.settings import (
|
|
7
|
+
AbstractBlinkSettingsMixin
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
__all__ = ["AbstractChromeSettingsMixin"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AbstractChromeSettingsMixin(AbstractBlinkSettingsMixin):
|
|
15
|
+
"""
|
|
16
|
+
Abstract mixin for managing Chrome browser settings.
|
|
17
|
+
|
|
18
|
+
Provides methods to update or reset configuration parameters such as flags,
|
|
19
|
+
executable paths, and window dimensions for the Chrome WebDriver.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
@abstractmethod
|
|
23
|
+
def reset_settings(
|
|
24
|
+
self,
|
|
25
|
+
flags: Optional[ChromeFlags] = None,
|
|
26
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
27
|
+
browser_name_in_system: Optional[str] = None,
|
|
28
|
+
use_browser_exe: Optional[bool] = None,
|
|
29
|
+
start_page_url: str = "",
|
|
30
|
+
window_rect: Optional[WindowRect] = None,
|
|
31
|
+
):
|
|
32
|
+
"""
|
|
33
|
+
Resets various configurable browser settings to their specified or default values.
|
|
34
|
+
|
|
35
|
+
This method allows for reconfiguring the WebDriver's operational parameters,
|
|
36
|
+
such as browser flags, executable path, start URL, window dimensions, and
|
|
37
|
+
concurrency limits. It is crucial that the browser session is *not* active
|
|
38
|
+
when this method is called; otherwise, a warning will be issued, and no changes
|
|
39
|
+
will be applied.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
flags (Optional[ChromeFlags]): New browser flags to apply.
|
|
43
|
+
If provided, existing flags are cleared and replaced with these.
|
|
44
|
+
If `None`, all custom flags are cleared, and the browser will start with default flags.
|
|
45
|
+
browser_exe (Optional[PATH_TYPEHINT]): The explicit path to the browser executable.
|
|
46
|
+
If provided, this path will be used. If `None`, the executable path managed by the
|
|
47
|
+
flags manager will be cleared, and then potentially re-detected based on
|
|
48
|
+
`use_browser_exe` and `browser_name_in_system`.
|
|
49
|
+
browser_name_in_system (Optional[str]): The common name of the browser (e.g., "Chrome").
|
|
50
|
+
Used in conjunction with `use_browser_exe` to automatically detect the browser executable path.
|
|
51
|
+
This parameter only takes effect if `use_browser_exe` is explicitly `True` or `False`.
|
|
52
|
+
If `None`, no automatic detection based on name will occur through this method call.
|
|
53
|
+
use_browser_exe (Optional[bool]): Controls the automatic detection of the browser executable.
|
|
54
|
+
If `True` (and `browser_name_in_system` is provided), the browser executable path
|
|
55
|
+
will be automatically detected if `browser_exe` is `None`.
|
|
56
|
+
If `False` (and `browser_name_in_system` is provided), any existing `browser_exe`
|
|
57
|
+
path in the flags manager will be cleared.
|
|
58
|
+
If `None`, the current `use_browser_exe` state is maintained for the `_detect_browser_exe` logic.
|
|
59
|
+
start_page_url (str): The URL that the browser will attempt to navigate to
|
|
60
|
+
immediately after starting. Defaults to an empty string.
|
|
61
|
+
window_rect (Optional[WindowRect]): The initial window size and position settings.
|
|
62
|
+
If `None`, it defaults to a new `WindowRect()` instance, effectively resetting
|
|
63
|
+
to the browser's default window behavior.
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
...
|
|
67
|
+
|
|
68
|
+
@abstractmethod
|
|
69
|
+
def update_settings(
|
|
70
|
+
self,
|
|
71
|
+
flags: Optional[ChromeFlags] = None,
|
|
72
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
73
|
+
browser_name_in_system: Optional[str] = None,
|
|
74
|
+
use_browser_exe: Optional[bool] = None,
|
|
75
|
+
start_page_url: Optional[str] = None,
|
|
76
|
+
window_rect: Optional[WindowRect] = None,
|
|
77
|
+
):
|
|
78
|
+
"""
|
|
79
|
+
Updates various browser settings selectively without resetting others.
|
|
80
|
+
|
|
81
|
+
This method allows for dynamic updating of browser settings. Only the settings
|
|
82
|
+
for which a non-None value is provided will be updated. Settings passed as `None`
|
|
83
|
+
will retain their current values. This method can be called whether the browser
|
|
84
|
+
is active or not, but some changes might only take effect after the browser is
|
|
85
|
+
restarted.
|
|
86
|
+
|
|
87
|
+
Args:
|
|
88
|
+
flags (Optional[ChromeFlags]): New browser flags to update.
|
|
89
|
+
If provided, these flags will be merged with or overwrite existing flags
|
|
90
|
+
within the flags manager. If `None`, existing flags remain unchanged.
|
|
91
|
+
browser_exe (Optional[PATH_TYPEHINT]): The new path to the browser executable.
|
|
92
|
+
If provided, this path will be set in the flags manager. If `None`, the
|
|
93
|
+
current browser executable path remains unchanged.
|
|
94
|
+
browser_name_in_system (Optional[str]): The common name of the browser (e.g., "Chrome").
|
|
95
|
+
Used in conjunction with `use_browser_exe` to automatically detect the browser executable path.
|
|
96
|
+
This parameter only takes effect if `use_browser_exe` is explicitly provided.
|
|
97
|
+
If `None`, no automatic detection based on name will occur through this method call.
|
|
98
|
+
use_browser_exe (Optional[bool]): Controls the automatic detection of the browser executable.
|
|
99
|
+
If `True` (and `browser_name_in_system` is provided), the browser executable path
|
|
100
|
+
will be automatically detected if `browser_exe` is `None`.
|
|
101
|
+
If `False` (and `browser_name_in_system` is provided), any existing `browser_exe`
|
|
102
|
+
path in the flags manager will be cleared.
|
|
103
|
+
If `None`, the current `use_browser_exe` state is maintained for the `_detect_browser_exe` logic.
|
|
104
|
+
start_page_url (Optional[str]): The new URL that the browser will attempt to navigate to
|
|
105
|
+
immediately after starting. If `None`, the current start page URL remains unchanged.
|
|
106
|
+
window_rect (Optional[WindowRect]): The new window size and position settings.
|
|
107
|
+
If `None`, the current window rectangle settings remain unchanged.
|
|
108
|
+
"""
|
|
109
|
+
|
|
110
|
+
...
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from abc import ABC
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
__all__ = ["AbstractCoreWebDriver"]
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AbstractCoreWebDriver(ABC):
|
|
8
|
+
"""
|
|
9
|
+
Abstract base class for a WebDriver.
|
|
10
|
+
|
|
11
|
+
This class defines the interface that all WebDriver implementations must adhere to.
|
|
12
|
+
It includes methods for browser navigation, element interaction, script execution,
|
|
13
|
+
and managing various browser features.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
pass
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import (
|
|
3
|
+
Iterable,
|
|
4
|
+
List,
|
|
5
|
+
Optional
|
|
6
|
+
)
|
|
7
|
+
from osn_selenium._typehints import DEVICES_TYPEHINT
|
|
8
|
+
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
9
|
+
from osn_selenium.abstract.instances.web_driver_wait import (
|
|
10
|
+
AbstractWebDriverWait
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["AbstractCoreActionsMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class AbstractCoreActionsMixin(ABC):
|
|
18
|
+
"""Mixin responsible for user actions chains."""
|
|
19
|
+
|
|
20
|
+
@abstractmethod
|
|
21
|
+
def action_chains(
|
|
22
|
+
self,
|
|
23
|
+
duration: int = 250,
|
|
24
|
+
devices: Optional[List[DEVICES_TYPEHINT]] = None
|
|
25
|
+
) -> AbstractActionChains:
|
|
26
|
+
"""
|
|
27
|
+
Creates a new ActionChains instance for building complex user interactions.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
duration (int): The default duration for pointer actions in milliseconds.
|
|
31
|
+
devices (Optional[List[DEVICES_TYPEHINT]]): A list of input devices to use.
|
|
32
|
+
|
|
33
|
+
Returns:
|
|
34
|
+
AbstractActionChains: A new ActionChains instance.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
...
|
|
38
|
+
|
|
39
|
+
@abstractmethod
|
|
40
|
+
def web_driver_wait(
|
|
41
|
+
self,
|
|
42
|
+
timeout: float,
|
|
43
|
+
poll_frequency: float = 0.5,
|
|
44
|
+
ignored_exceptions: Optional[Iterable[BaseException]] = None,
|
|
45
|
+
) -> AbstractWebDriverWait:
|
|
46
|
+
"""
|
|
47
|
+
Creates a new WebDriverWait instance.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
timeout (float): How long to wait for the condition to be true.
|
|
51
|
+
poll_frequency (float): How often to check the condition. Defaults to 0.5.
|
|
52
|
+
ignored_exceptions (Optional[Iterable[BaseException]]): Exceptions to ignore while waiting.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
AbstractWebDriverWait: A new WebDriverWait instance.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
...
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import (
|
|
3
|
+
Any,
|
|
4
|
+
List,
|
|
5
|
+
Optional,
|
|
6
|
+
Union
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium.abstract.instances.fedcm import AbstractFedCM
|
|
9
|
+
from osn_selenium.abstract.instances.dialog import AbstractDialog
|
|
10
|
+
from selenium.webdriver.common.virtual_authenticator import (
|
|
11
|
+
Credential,
|
|
12
|
+
VirtualAuthenticatorOptions
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
__all__ = ["AbstractCoreAuthMixin"]
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AbstractCoreAuthMixin(ABC):
|
|
20
|
+
"""Mixin responsible for credentials, virtual authenticators, and FedCM."""
|
|
21
|
+
|
|
22
|
+
@abstractmethod
|
|
23
|
+
def add_credential(self, credential: Credential) -> None:
|
|
24
|
+
"""
|
|
25
|
+
Adds a credential to the virtual authenticator.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
credential (Credential): The credential to add.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
...
|
|
32
|
+
|
|
33
|
+
@abstractmethod
|
|
34
|
+
def add_virtual_authenticator(self, options: VirtualAuthenticatorOptions) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Adds a virtual authenticator for testing web authentication.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
options (VirtualAuthenticatorOptions): Configuration for the virtual authenticator.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
...
|
|
43
|
+
|
|
44
|
+
@abstractmethod
|
|
45
|
+
def fedcm(self) -> AbstractFedCM:
|
|
46
|
+
"""
|
|
47
|
+
Provides access to the FedCM (Federated Credential Management) interface.
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
AbstractFedCM: An object for interacting with FedCM.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
...
|
|
54
|
+
|
|
55
|
+
@abstractmethod
|
|
56
|
+
def fedcm_dialog(
|
|
57
|
+
self,
|
|
58
|
+
timeout: int = 5,
|
|
59
|
+
poll_frequency: float = 0.5,
|
|
60
|
+
ignored_exceptions: Optional[Any] = None,
|
|
61
|
+
) -> AbstractDialog:
|
|
62
|
+
"""
|
|
63
|
+
Waits for and returns a FedCM (Federated Credential Management) dialog.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
timeout (int): The maximum time to wait for the dialog.
|
|
67
|
+
poll_frequency (float): The frequency to check for the dialog's presence.
|
|
68
|
+
ignored_exceptions (Optional[Any]): Exceptions to ignore during polling.
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
AbstractDialog: The FedCM dialog object.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
...
|
|
75
|
+
|
|
76
|
+
@abstractmethod
|
|
77
|
+
def get_credentials(self) -> List[Credential]:
|
|
78
|
+
"""
|
|
79
|
+
Gets all credentials from the virtual authenticator.
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
List[Credential]: A list of Credential objects.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
...
|
|
86
|
+
|
|
87
|
+
@abstractmethod
|
|
88
|
+
def remove_all_credentials(self) -> None:
|
|
89
|
+
"""
|
|
90
|
+
Removes all credentials from the virtual authenticator.
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
...
|
|
94
|
+
|
|
95
|
+
@abstractmethod
|
|
96
|
+
def remove_credential(self, credential_id: Union[str, bytearray]) -> None:
|
|
97
|
+
"""
|
|
98
|
+
Removes a credential from the virtual authenticator.
|
|
99
|
+
|
|
100
|
+
Args:
|
|
101
|
+
credential_id (Union[str, bytearray]): The ID of the credential to remove.
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
...
|
|
105
|
+
|
|
106
|
+
@abstractmethod
|
|
107
|
+
def remove_virtual_authenticator(self) -> None:
|
|
108
|
+
"""
|
|
109
|
+
Removes the currently active virtual authenticator.
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
...
|
|
113
|
+
|
|
114
|
+
@abstractmethod
|
|
115
|
+
def set_user_verified(self, verified: bool) -> None:
|
|
116
|
+
"""
|
|
117
|
+
Sets the user-verified status for a virtual authenticator.
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
verified (bool): The new verification status.
|
|
121
|
+
"""
|
|
122
|
+
|
|
123
|
+
...
|
|
124
|
+
|
|
125
|
+
@abstractmethod
|
|
126
|
+
def supports_fedcm(self) -> bool:
|
|
127
|
+
"""
|
|
128
|
+
Checks if the browser supports Federated Credential Management (FedCM).
|
|
129
|
+
|
|
130
|
+
Returns:
|
|
131
|
+
bool: True if FedCM is supported, False otherwise.
|
|
132
|
+
"""
|
|
133
|
+
|
|
134
|
+
...
|
|
135
|
+
|
|
136
|
+
@abstractmethod
|
|
137
|
+
def virtual_authenticator_id(self) -> Optional[str]:
|
|
138
|
+
"""
|
|
139
|
+
Returns the ID of the currently active virtual authenticator.
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
Optional[str]: The ID of the virtual authenticator, or None if not set.
|
|
143
|
+
"""
|
|
144
|
+
|
|
145
|
+
...
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
from selenium import webdriver
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
from typing import (
|
|
4
|
+
Any,
|
|
5
|
+
Dict,
|
|
6
|
+
Optional,
|
|
7
|
+
Union
|
|
8
|
+
)
|
|
9
|
+
from selenium.webdriver.common.bidi.session import Session
|
|
10
|
+
from osn_selenium._typehints import (
|
|
11
|
+
ARCHITECTURES_TYPEHINT
|
|
12
|
+
)
|
|
13
|
+
from selenium.webdriver.remote.errorhandler import ErrorHandler
|
|
14
|
+
from osn_selenium.abstract.executors.cdp import AbstractCDPExecutor
|
|
15
|
+
from selenium.webdriver.remote.locator_converter import LocatorConverter
|
|
16
|
+
from selenium.webdriver.remote.remote_connection import RemoteConnection
|
|
17
|
+
from osn_selenium.abstract.executors.javascript import AbstractJSExecutor
|
|
18
|
+
from selenium.webdriver.remote.webdriver import (
|
|
19
|
+
WebDriver as legacyWebDriver
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
__all__ = ["AbstractCoreBaseMixin"]
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class AbstractCoreBaseMixin(ABC):
|
|
27
|
+
"""
|
|
28
|
+
Abstract base mixin providing core WebDriver functionality and session management.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
@abstractmethod
|
|
32
|
+
def _ensure_driver(self) -> Optional[legacyWebDriver]:
|
|
33
|
+
"""
|
|
34
|
+
Internal method to ensure the WebDriver instance is running before an operation.
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
Optional[legacyWebDriver]: The driver instance if verified, otherwise None.
|
|
38
|
+
|
|
39
|
+
Raises:
|
|
40
|
+
RuntimeError: If the driver is not started.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
...
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
@abstractmethod
|
|
47
|
+
def architecture(self) -> ARCHITECTURES_TYPEHINT:
|
|
48
|
+
"""
|
|
49
|
+
Returns the architecture of the driver.
|
|
50
|
+
|
|
51
|
+
Returns:
|
|
52
|
+
ARCHITECTURE_TYPEHINT: The architecture name.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
...
|
|
56
|
+
|
|
57
|
+
@property
|
|
58
|
+
@abstractmethod
|
|
59
|
+
def capabilities(self) -> Dict[str, Any]:
|
|
60
|
+
"""
|
|
61
|
+
Returns the capabilities of the current session as reported by the driver.
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
Dict[str, Any]: A dictionary of session capabilities.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
...
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
@abstractmethod
|
|
71
|
+
def caps(self) -> Dict[str, Any]:
|
|
72
|
+
"""
|
|
73
|
+
The direct representation of session capabilities.
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
Dict[str, Any]: Current session capabilities.
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
...
|
|
80
|
+
|
|
81
|
+
@caps.setter
|
|
82
|
+
@abstractmethod
|
|
83
|
+
def caps(self, value: Dict[str, Any]) -> None:
|
|
84
|
+
"""
|
|
85
|
+
Sets the session capabilities.
|
|
86
|
+
|
|
87
|
+
Args:
|
|
88
|
+
value (Dict[str, Any]): Dictionary of capabilities.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
...
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
@abstractmethod
|
|
95
|
+
def cdp(self) -> AbstractCDPExecutor:
|
|
96
|
+
"""
|
|
97
|
+
Returns the CDP (Chrome DevTools Protocol) executor.
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
AbstractCDPExecutor: The CDP executor instance used for sending
|
|
101
|
+
commands directly to the browser via the DevTools protocol.
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
...
|
|
105
|
+
|
|
106
|
+
@property
|
|
107
|
+
@abstractmethod
|
|
108
|
+
def command_executor(self) -> RemoteConnection:
|
|
109
|
+
"""
|
|
110
|
+
Gets the remote connection manager used for executing commands.
|
|
111
|
+
|
|
112
|
+
Returns:
|
|
113
|
+
RemoteConnection: The remote connection instance.
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
...
|
|
117
|
+
|
|
118
|
+
@command_executor.setter
|
|
119
|
+
@abstractmethod
|
|
120
|
+
def command_executor(self, value: RemoteConnection) -> None:
|
|
121
|
+
"""
|
|
122
|
+
Sets the remote connection manager used for executing commands.
|
|
123
|
+
|
|
124
|
+
Args:
|
|
125
|
+
value (RemoteConnection): The remote connection instance.
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
...
|
|
129
|
+
|
|
130
|
+
@property
|
|
131
|
+
@abstractmethod
|
|
132
|
+
def driver(self) -> Optional[Union[webdriver.Chrome, webdriver.Edge, webdriver.Firefox]]:
|
|
133
|
+
"""
|
|
134
|
+
Returns the underlying Selenium WebDriver instance.
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
Optional[Union[webdriver.Chrome, webdriver.Edge, webdriver.Firefox]]: The driver instance, or None if not started.
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
...
|
|
141
|
+
|
|
142
|
+
@property
|
|
143
|
+
@abstractmethod
|
|
144
|
+
def error_handler(self) -> ErrorHandler:
|
|
145
|
+
"""
|
|
146
|
+
The error handler associated with the current session.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
ErrorHandler: The error handler instance.
|
|
150
|
+
"""
|
|
151
|
+
|
|
152
|
+
...
|
|
153
|
+
|
|
154
|
+
@error_handler.setter
|
|
155
|
+
@abstractmethod
|
|
156
|
+
def error_handler(self, value: ErrorHandler) -> None:
|
|
157
|
+
"""
|
|
158
|
+
Sets the error handler for the session.
|
|
159
|
+
|
|
160
|
+
Args:
|
|
161
|
+
value (ErrorHandler): The new error handler instance.
|
|
162
|
+
"""
|
|
163
|
+
|
|
164
|
+
...
|
|
165
|
+
|
|
166
|
+
@abstractmethod
|
|
167
|
+
def execute(self, driver_command: str, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
|
|
168
|
+
"""
|
|
169
|
+
Sends a command to be executed by the remote driver.
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
driver_command (str): The name of the command to execute.
|
|
173
|
+
params (Optional[Dict[str, Any]]): A dictionary of parameters for the command.
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
Dict[str, Any]: The response from the driver.
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
...
|
|
180
|
+
|
|
181
|
+
@property
|
|
182
|
+
@abstractmethod
|
|
183
|
+
def is_active(self) -> bool:
|
|
184
|
+
"""
|
|
185
|
+
Checks if the WebDriver instance is currently running.
|
|
186
|
+
|
|
187
|
+
Returns:
|
|
188
|
+
bool: True if the driver is active, False otherwise.
|
|
189
|
+
"""
|
|
190
|
+
|
|
191
|
+
...
|
|
192
|
+
|
|
193
|
+
@property
|
|
194
|
+
@abstractmethod
|
|
195
|
+
def javascript(self) -> AbstractJSExecutor:
|
|
196
|
+
"""
|
|
197
|
+
Returns the JavaScript executor for this WebDriver instance.
|
|
198
|
+
|
|
199
|
+
Returns:
|
|
200
|
+
AbstractJSExecutor: The JavaScript executor instance.
|
|
201
|
+
"""
|
|
202
|
+
|
|
203
|
+
...
|
|
204
|
+
|
|
205
|
+
@property
|
|
206
|
+
@abstractmethod
|
|
207
|
+
def locator_converter(self) -> LocatorConverter:
|
|
208
|
+
"""
|
|
209
|
+
The converter used for translating locators into WebDriver protocols.
|
|
210
|
+
|
|
211
|
+
Returns:
|
|
212
|
+
LocatorConverter: The locator converter instance.
|
|
213
|
+
"""
|
|
214
|
+
|
|
215
|
+
...
|
|
216
|
+
|
|
217
|
+
@locator_converter.setter
|
|
218
|
+
@abstractmethod
|
|
219
|
+
def locator_converter(self, value: LocatorConverter) -> None:
|
|
220
|
+
"""
|
|
221
|
+
Sets the locator converter instance.
|
|
222
|
+
|
|
223
|
+
Args:
|
|
224
|
+
value (LocatorConverter): The new locator converter.
|
|
225
|
+
"""
|
|
226
|
+
|
|
227
|
+
...
|
|
228
|
+
|
|
229
|
+
@property
|
|
230
|
+
@abstractmethod
|
|
231
|
+
def name(self) -> str:
|
|
232
|
+
"""
|
|
233
|
+
Returns the name of the underlying browser (e.g., 'chrome', 'firefox').
|
|
234
|
+
|
|
235
|
+
Returns:
|
|
236
|
+
str: The name of the browser.
|
|
237
|
+
"""
|
|
238
|
+
|
|
239
|
+
...
|
|
240
|
+
|
|
241
|
+
@property
|
|
242
|
+
@abstractmethod
|
|
243
|
+
def pinned_scripts(self) -> Dict[str, Any]:
|
|
244
|
+
"""
|
|
245
|
+
A dictionary of scripts pinned to the current session.
|
|
246
|
+
|
|
247
|
+
Returns:
|
|
248
|
+
Dict[str, Any]: Pinned scripts and their handles.
|
|
249
|
+
"""
|
|
250
|
+
|
|
251
|
+
...
|
|
252
|
+
|
|
253
|
+
@pinned_scripts.setter
|
|
254
|
+
@abstractmethod
|
|
255
|
+
def pinned_scripts(self, value: Dict[str, Any]) -> None:
|
|
256
|
+
"""
|
|
257
|
+
Sets the pinned scripts for the session.
|
|
258
|
+
|
|
259
|
+
Args:
|
|
260
|
+
value (Dict[str, Any]): Dictionary of scripts to pin.
|
|
261
|
+
"""
|
|
262
|
+
|
|
263
|
+
...
|
|
264
|
+
|
|
265
|
+
@abstractmethod
|
|
266
|
+
def session(self) -> Session:
|
|
267
|
+
"""
|
|
268
|
+
Internal method to access the current BiDi session object.
|
|
269
|
+
|
|
270
|
+
Returns:
|
|
271
|
+
Session: The session object.
|
|
272
|
+
"""
|
|
273
|
+
|
|
274
|
+
...
|
|
275
|
+
|
|
276
|
+
@property
|
|
277
|
+
@abstractmethod
|
|
278
|
+
def session_id(self) -> Optional[str]:
|
|
279
|
+
"""
|
|
280
|
+
The unique session ID assigned by the browser driver.
|
|
281
|
+
|
|
282
|
+
Returns:
|
|
283
|
+
Optional[str]: The session identifier.
|
|
284
|
+
"""
|
|
285
|
+
|
|
286
|
+
...
|
|
287
|
+
|
|
288
|
+
@session_id.setter
|
|
289
|
+
@abstractmethod
|
|
290
|
+
def session_id(self, value: Optional[str]) -> None:
|
|
291
|
+
"""
|
|
292
|
+
Sets the unique session ID.
|
|
293
|
+
|
|
294
|
+
Args:
|
|
295
|
+
value (Optional[str]): The new session identifier.
|
|
296
|
+
"""
|
|
297
|
+
|
|
298
|
+
...
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
from typing import Any, Optional
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
__all__ = ["AbstractCoreCaptureMixin"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class AbstractCoreCaptureMixin(ABC):
|
|
9
|
+
"""Mixin responsible for screenshots, page source, and printing."""
|
|
10
|
+
|
|
11
|
+
@abstractmethod
|
|
12
|
+
def get_screenshot_as_base64(self) -> str:
|
|
13
|
+
"""
|
|
14
|
+
Gets a screenshot of the current window as a base64-encoded string.
|
|
15
|
+
|
|
16
|
+
Returns:
|
|
17
|
+
str: The base64-encoded screenshot image.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
...
|
|
21
|
+
|
|
22
|
+
@abstractmethod
|
|
23
|
+
def get_screenshot_as_file(self, filename: str) -> bool:
|
|
24
|
+
"""
|
|
25
|
+
Saves a screenshot to a file. This is an alias for save_screenshot.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
filename (str): The full path of the file to save to.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
bool: True if successful, False otherwise.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
...
|
|
35
|
+
|
|
36
|
+
@abstractmethod
|
|
37
|
+
def get_screenshot_as_png(self) -> bytes:
|
|
38
|
+
"""
|
|
39
|
+
Gets a screenshot of the current window as binary data.
|
|
40
|
+
|
|
41
|
+
Returns:
|
|
42
|
+
bytes: The screenshot image in PNG format.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
...
|
|
46
|
+
|
|
47
|
+
@abstractmethod
|
|
48
|
+
def page_source(self) -> str:
|
|
49
|
+
"""
|
|
50
|
+
Gets the source of the current page.
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
str: The source code of the current page.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
...
|
|
57
|
+
|
|
58
|
+
@abstractmethod
|
|
59
|
+
def print_page(self, print_options: Optional[Any] = None) -> str:
|
|
60
|
+
"""
|
|
61
|
+
Prints the current page to a PDF.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
print_options (Optional[Any]): Options for printing the page.
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
str: A base64-encoded string of the PDF.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
...
|
|
71
|
+
|
|
72
|
+
@abstractmethod
|
|
73
|
+
def save_screenshot(self, filename: str) -> bool:
|
|
74
|
+
"""
|
|
75
|
+
Saves a screenshot of the current window to a file.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
filename (str): The full path of the file to save the screenshot to.
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
bool: True if successful, False otherwise.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
...
|