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,63 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.models import WindowRect
|
|
3
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
|
+
from osn_selenium.flags.models.blink import BlinkFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_threads.core.settings import CoreSettingsMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.blink.settings import (
|
|
7
|
+
UnifiedBlinkSettingsMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.blink.settings import (
|
|
10
|
+
AbstractBlinkSettingsMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["BlinkSettingsMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class BlinkSettingsMixin(
|
|
18
|
+
UnifiedBlinkSettingsMixin,
|
|
19
|
+
CoreSettingsMixin,
|
|
20
|
+
AbstractBlinkSettingsMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for configuring and updating settings of the Blink WebDriver.
|
|
24
|
+
|
|
25
|
+
Provides methods to modify browser flags, window rectangles, and other
|
|
26
|
+
configuration parameters either before startup or during a reset.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
async def reset_settings(
|
|
30
|
+
self,
|
|
31
|
+
flags: Optional[BlinkFlags] = None,
|
|
32
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
33
|
+
browser_name_in_system: Optional[str] = None,
|
|
34
|
+
use_browser_exe: Optional[bool] = None,
|
|
35
|
+
start_page_url: str = "",
|
|
36
|
+
window_rect: Optional[WindowRect] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._reset_settings_impl)(
|
|
39
|
+
flags=flags,
|
|
40
|
+
browser_exe=browser_exe,
|
|
41
|
+
browser_name_in_system=browser_name_in_system,
|
|
42
|
+
use_browser_exe=use_browser_exe,
|
|
43
|
+
start_page_url=start_page_url,
|
|
44
|
+
window_rect=window_rect
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
async def update_settings(
|
|
48
|
+
self,
|
|
49
|
+
flags: Optional[BlinkFlags] = None,
|
|
50
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
51
|
+
browser_name_in_system: Optional[str] = None,
|
|
52
|
+
use_browser_exe: Optional[bool] = None,
|
|
53
|
+
start_page_url: Optional[str] = None,
|
|
54
|
+
window_rect: Optional[WindowRect] = None,
|
|
55
|
+
) -> None:
|
|
56
|
+
await self.sync_to_trio(sync_function=self._update_settings_impl)(
|
|
57
|
+
flags=flags,
|
|
58
|
+
browser_exe=browser_exe,
|
|
59
|
+
browser_name_in_system=browser_name_in_system,
|
|
60
|
+
use_browser_exe=use_browser_exe,
|
|
61
|
+
start_page_url=start_page_url,
|
|
62
|
+
window_rect=window_rect
|
|
63
|
+
)
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import trio
|
|
2
|
+
from typing import Optional, Type
|
|
3
|
+
from osn_selenium.models import WindowRect
|
|
4
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
5
|
+
from osn_selenium.flags.chrome import ChromeFlagsManager
|
|
6
|
+
from osn_selenium.flags.models.chrome import ChromeFlags
|
|
7
|
+
from osn_selenium.dev_tools.settings import DevToolsSettings
|
|
8
|
+
from osn_selenium.webdrivers.trio_threads.blink import BlinkWebDriver
|
|
9
|
+
from osn_selenium.webdrivers.trio_threads.chrome.base import ChromeBaseMixin
|
|
10
|
+
from osn_selenium.abstract.webdriver.chrome import (
|
|
11
|
+
AbstractChromeWebDriver
|
|
12
|
+
)
|
|
13
|
+
from osn_selenium.webdrivers.trio_threads.chrome.settings import ChromeSettingsMixin
|
|
14
|
+
from osn_selenium.webdrivers.trio_threads.chrome.lifecycle import ChromeLifecycleMixin
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
__all__ = ["ChromeWebDriver"]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ChromeWebDriver(
|
|
21
|
+
ChromeBaseMixin,
|
|
22
|
+
ChromeLifecycleMixin,
|
|
23
|
+
ChromeSettingsMixin,
|
|
24
|
+
BlinkWebDriver,
|
|
25
|
+
AbstractChromeWebDriver,
|
|
26
|
+
):
|
|
27
|
+
"""
|
|
28
|
+
Concrete Chrome WebDriver implementation combining all functional mixins.
|
|
29
|
+
|
|
30
|
+
This class aggregates lifecycle management, element interaction, navigation,
|
|
31
|
+
and browser-specific features into a single usable driver instance.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def __init__(
|
|
35
|
+
self,
|
|
36
|
+
webdriver_path: str,
|
|
37
|
+
flags_manager_type: Type[ChromeFlagsManager] = ChromeFlagsManager,
|
|
38
|
+
use_browser_exe: bool = True,
|
|
39
|
+
browser_name_in_system: str = "Google Chrome",
|
|
40
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
41
|
+
flags: Optional[ChromeFlags] = None,
|
|
42
|
+
start_page_url: str = "about:blank",
|
|
43
|
+
implicitly_wait: int = 5,
|
|
44
|
+
page_load_timeout: int = 5,
|
|
45
|
+
script_timeout: int = 5,
|
|
46
|
+
window_rect: Optional[WindowRect] = None,
|
|
47
|
+
devtools_settings: Optional[DevToolsSettings] = None,
|
|
48
|
+
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
49
|
+
):
|
|
50
|
+
BlinkWebDriver.__init__(
|
|
51
|
+
self,
|
|
52
|
+
browser_exe=browser_exe,
|
|
53
|
+
browser_name_in_system=browser_name_in_system,
|
|
54
|
+
webdriver_path=webdriver_path,
|
|
55
|
+
use_browser_exe=use_browser_exe,
|
|
56
|
+
flags_manager_type=flags_manager_type,
|
|
57
|
+
flags=flags,
|
|
58
|
+
implicitly_wait=implicitly_wait,
|
|
59
|
+
page_load_timeout=page_load_timeout,
|
|
60
|
+
script_timeout=script_timeout,
|
|
61
|
+
window_rect=window_rect,
|
|
62
|
+
devtools_settings=devtools_settings,
|
|
63
|
+
capacity_limiter=capacity_limiter,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
ChromeBaseMixin.__init__(
|
|
67
|
+
self,
|
|
68
|
+
browser_exe=browser_exe,
|
|
69
|
+
browser_name_in_system=browser_name_in_system,
|
|
70
|
+
use_browser_exe=use_browser_exe,
|
|
71
|
+
webdriver_path=webdriver_path,
|
|
72
|
+
architecture="trio_threads",
|
|
73
|
+
flags_manager_type=flags_manager_type,
|
|
74
|
+
flags=flags,
|
|
75
|
+
start_page_url=start_page_url,
|
|
76
|
+
implicitly_wait=implicitly_wait,
|
|
77
|
+
page_load_timeout=page_load_timeout,
|
|
78
|
+
script_timeout=script_timeout,
|
|
79
|
+
window_rect=window_rect,
|
|
80
|
+
capacity_limiter=capacity_limiter,
|
|
81
|
+
)
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import trio
|
|
2
|
+
from typing import Optional, Type
|
|
3
|
+
from osn_selenium.models import WindowRect
|
|
4
|
+
from osn_selenium.flags.chrome import ChromeFlagsManager
|
|
5
|
+
from osn_selenium.flags.models.chrome import ChromeFlags
|
|
6
|
+
from selenium.webdriver import (
|
|
7
|
+
Chrome as legacyChrome
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.webdrivers.trio_threads.blink.base import BlinkBaseMixin
|
|
10
|
+
from osn_selenium._typehints import (
|
|
11
|
+
ARCHITECTURES_TYPEHINT,
|
|
12
|
+
PATH_TYPEHINT
|
|
13
|
+
)
|
|
14
|
+
from osn_selenium.webdrivers.unified.chrome.base import (
|
|
15
|
+
UnifiedChromeBaseMixin
|
|
16
|
+
)
|
|
17
|
+
from osn_selenium.abstract.webdriver.chrome.base import (
|
|
18
|
+
AbstractChromeBaseMixin
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
__all__ = ["ChromeBaseMixin"]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBaseMixin):
|
|
26
|
+
"""
|
|
27
|
+
Base mixin for Chrome WebDrivers handling core initialization and state management.
|
|
28
|
+
|
|
29
|
+
This class serves as the foundation for browser-specific implementations, managing
|
|
30
|
+
the WebDriver executable path, configuration flags, timeouts, and the active
|
|
31
|
+
driver instance.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def __init__(
|
|
35
|
+
self,
|
|
36
|
+
webdriver_path: str,
|
|
37
|
+
architecture: ARCHITECTURES_TYPEHINT,
|
|
38
|
+
flags_manager_type: Type[ChromeFlagsManager] = ChromeFlagsManager,
|
|
39
|
+
use_browser_exe: bool = True,
|
|
40
|
+
browser_name_in_system: str = "Google Chrome",
|
|
41
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
42
|
+
flags: Optional[ChromeFlags] = None,
|
|
43
|
+
start_page_url: str = "about:blank",
|
|
44
|
+
implicitly_wait: int = 5,
|
|
45
|
+
page_load_timeout: int = 5,
|
|
46
|
+
script_timeout: int = 5,
|
|
47
|
+
window_rect: Optional[WindowRect] = None,
|
|
48
|
+
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
49
|
+
):
|
|
50
|
+
"""
|
|
51
|
+
Initializes the Trio-based Chrome WebDriver mixin.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
webdriver_path (str): Path to the ChromeDriver executable.
|
|
55
|
+
architecture (ARCHITECTURE_TYPEHINT): System architecture.
|
|
56
|
+
flags_manager_type (Type[ChromeFlagsManager]): The class type used for managing Chrome flags.
|
|
57
|
+
Defaults to ChromeFlagsManager.
|
|
58
|
+
use_browser_exe (bool): Whether to use a specific browser executable path or auto-detect.
|
|
59
|
+
Defaults to True.
|
|
60
|
+
browser_name_in_system (str): The name of the browser in the system registry or path.
|
|
61
|
+
Defaults to "Google Chrome".
|
|
62
|
+
browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Chrome browser executable.
|
|
63
|
+
flags (Optional[ChromeFlags]): Initial set of flags.
|
|
64
|
+
start_page_url (str): The initial URL. Defaults to "about:blank".
|
|
65
|
+
implicitly_wait (int): Default implicit wait time.
|
|
66
|
+
page_load_timeout (int): Default page load timeout.
|
|
67
|
+
script_timeout (int): Default script timeout.
|
|
68
|
+
window_rect (Optional[WindowRect]): Initial window dimensions.
|
|
69
|
+
capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
BlinkBaseMixin.__init__(
|
|
73
|
+
self,
|
|
74
|
+
browser_exe=browser_exe,
|
|
75
|
+
browser_name_in_system=browser_name_in_system,
|
|
76
|
+
use_browser_exe=use_browser_exe,
|
|
77
|
+
webdriver_path=webdriver_path,
|
|
78
|
+
architecture=architecture,
|
|
79
|
+
flags_manager_type=flags_manager_type,
|
|
80
|
+
flags=flags,
|
|
81
|
+
start_page_url=start_page_url,
|
|
82
|
+
implicitly_wait=implicitly_wait,
|
|
83
|
+
page_load_timeout=page_load_timeout,
|
|
84
|
+
script_timeout=script_timeout,
|
|
85
|
+
window_rect=window_rect,
|
|
86
|
+
capacity_limiter=capacity_limiter,
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
UnifiedChromeBaseMixin.__init__(
|
|
90
|
+
self,
|
|
91
|
+
webdriver_path=webdriver_path,
|
|
92
|
+
architecture=architecture,
|
|
93
|
+
flags_manager_type=flags_manager_type,
|
|
94
|
+
use_browser_exe=use_browser_exe,
|
|
95
|
+
browser_name_in_system=browser_name_in_system,
|
|
96
|
+
browser_exe=browser_exe,
|
|
97
|
+
flags=flags,
|
|
98
|
+
start_page_url=start_page_url,
|
|
99
|
+
implicitly_wait=implicitly_wait,
|
|
100
|
+
page_load_timeout=page_load_timeout,
|
|
101
|
+
script_timeout=script_timeout,
|
|
102
|
+
window_rect=window_rect,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
@property
|
|
106
|
+
def driver(self) -> Optional[legacyChrome]:
|
|
107
|
+
return self._driver_impl
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.models import WindowRect
|
|
3
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
|
+
from osn_selenium.flags.models.chrome import ChromeFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_threads.blink import BlinkLifecycleMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.chrome.lifecycle import (
|
|
7
|
+
UnifiedChromeLifecycleMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.chrome.lifecycle import (
|
|
10
|
+
AbstractChromeLifecycleMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["ChromeLifecycleMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class ChromeLifecycleMixin(
|
|
18
|
+
UnifiedChromeLifecycleMixin,
|
|
19
|
+
BlinkLifecycleMixin,
|
|
20
|
+
AbstractChromeLifecycleMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for managing the lifecycle of the Chrome WebDriver.
|
|
24
|
+
|
|
25
|
+
Handles the creation, startup, shutdown, and restarting processes of the
|
|
26
|
+
underlying browser instance, ensuring clean session management.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
async def restart_webdriver(
|
|
30
|
+
self,
|
|
31
|
+
flags: Optional[ChromeFlags] = None,
|
|
32
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
33
|
+
browser_name_in_system: Optional[str] = None,
|
|
34
|
+
use_browser_exe: Optional[bool] = None,
|
|
35
|
+
start_page_url: Optional[str] = None,
|
|
36
|
+
window_rect: Optional[WindowRect] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
|
|
39
|
+
flags=flags,
|
|
40
|
+
browser_exe=browser_exe,
|
|
41
|
+
browser_name_in_system=browser_name_in_system,
|
|
42
|
+
use_browser_exe=use_browser_exe,
|
|
43
|
+
start_page_url=start_page_url,
|
|
44
|
+
window_rect=window_rect,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
async def start_webdriver(
|
|
48
|
+
self,
|
|
49
|
+
flags: Optional[ChromeFlags] = None,
|
|
50
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
51
|
+
browser_name_in_system: Optional[str] = None,
|
|
52
|
+
use_browser_exe: Optional[bool] = None,
|
|
53
|
+
start_page_url: Optional[str] = None,
|
|
54
|
+
window_rect: Optional[WindowRect] = None,
|
|
55
|
+
) -> None:
|
|
56
|
+
await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
|
|
57
|
+
flags=flags,
|
|
58
|
+
browser_exe=browser_exe,
|
|
59
|
+
browser_name_in_system=browser_name_in_system,
|
|
60
|
+
use_browser_exe=use_browser_exe,
|
|
61
|
+
start_page_url=start_page_url,
|
|
62
|
+
window_rect=window_rect,
|
|
63
|
+
)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.models import WindowRect
|
|
3
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
|
+
from osn_selenium.flags.models.chrome import ChromeFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_threads.blink import BlinkSettingsMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.chrome.settings import (
|
|
7
|
+
UnifiedChromeSettingsMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.chrome.settings import (
|
|
10
|
+
AbstractChromeSettingsMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["ChromeSettingsMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class ChromeSettingsMixin(
|
|
18
|
+
UnifiedChromeSettingsMixin,
|
|
19
|
+
BlinkSettingsMixin,
|
|
20
|
+
AbstractChromeSettingsMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for configuring and updating settings of the Chrome WebDriver.
|
|
24
|
+
|
|
25
|
+
Provides methods to modify browser flags, window rectangles, and other
|
|
26
|
+
configuration parameters either before startup or during a reset.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
async def reset_settings(
|
|
30
|
+
self,
|
|
31
|
+
flags: Optional[ChromeFlags] = None,
|
|
32
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
33
|
+
browser_name_in_system: Optional[str] = None,
|
|
34
|
+
use_browser_exe: Optional[bool] = None,
|
|
35
|
+
start_page_url: str = "",
|
|
36
|
+
window_rect: Optional[WindowRect] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._reset_settings_impl)(
|
|
39
|
+
flags=flags,
|
|
40
|
+
browser_exe=browser_exe,
|
|
41
|
+
browser_name_in_system=browser_name_in_system,
|
|
42
|
+
use_browser_exe=use_browser_exe,
|
|
43
|
+
start_page_url=start_page_url,
|
|
44
|
+
window_rect=window_rect,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
async def update_settings(
|
|
48
|
+
self,
|
|
49
|
+
flags: Optional[ChromeFlags] = None,
|
|
50
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
51
|
+
browser_name_in_system: Optional[str] = None,
|
|
52
|
+
use_browser_exe: Optional[bool] = None,
|
|
53
|
+
start_page_url: Optional[str] = None,
|
|
54
|
+
window_rect: Optional[WindowRect] = None,
|
|
55
|
+
) -> None:
|
|
56
|
+
await self.sync_to_trio(sync_function=self._update_settings_impl)(
|
|
57
|
+
flags=flags,
|
|
58
|
+
browser_exe=browser_exe,
|
|
59
|
+
browser_name_in_system=browser_name_in_system,
|
|
60
|
+
use_browser_exe=use_browser_exe,
|
|
61
|
+
start_page_url=start_page_url,
|
|
62
|
+
window_rect=window_rect,
|
|
63
|
+
)
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import trio
|
|
2
|
+
from typing import Optional, Type
|
|
3
|
+
from osn_selenium.models import WindowRect
|
|
4
|
+
from osn_selenium.dev_tools.manager import DevTools
|
|
5
|
+
from osn_selenium.flags.base import BrowserFlagsManager
|
|
6
|
+
from osn_selenium.flags.models.base import BrowserFlags
|
|
7
|
+
from osn_selenium.dev_tools.settings import DevToolsSettings
|
|
8
|
+
from osn_selenium.webdrivers.trio_threads.core.auth import CoreAuthMixin
|
|
9
|
+
from osn_selenium.webdrivers.trio_threads.core.base import CoreBaseMixin
|
|
10
|
+
from osn_selenium.webdrivers.trio_threads.core.file import CoreFileMixin
|
|
11
|
+
from osn_selenium.abstract.webdriver.core import (
|
|
12
|
+
AbstractCoreWebDriver
|
|
13
|
+
)
|
|
14
|
+
from osn_selenium.webdrivers.trio_threads.core.script import CoreScriptMixin
|
|
15
|
+
from osn_selenium.webdrivers.trio_threads.core.window import CoreWindowMixin
|
|
16
|
+
from osn_selenium.webdrivers.trio_threads.core.actions import CoreActionsMixin
|
|
17
|
+
from osn_selenium.webdrivers.trio_threads.core.capture import CoreCaptureMixin
|
|
18
|
+
from osn_selenium.webdrivers.trio_threads.core.element import CoreElementMixin
|
|
19
|
+
from osn_selenium.webdrivers.trio_threads.core.storage import CoreStorageMixin
|
|
20
|
+
from osn_selenium.webdrivers.trio_threads.core.devtools import CoreDevToolsMixin
|
|
21
|
+
from osn_selenium.webdrivers.trio_threads.core.settings import CoreSettingsMixin
|
|
22
|
+
from osn_selenium.webdrivers.trio_threads.core.timeouts import CoreTimeoutsMixin
|
|
23
|
+
from osn_selenium.webdrivers.trio_threads.core.lifecycle import CoreLifecycleMixin
|
|
24
|
+
from osn_selenium.webdrivers.trio_threads.core.comonents import CoreComponentsMixin
|
|
25
|
+
from osn_selenium.webdrivers.trio_threads.core.navigation import CoreNavigationMixin
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
__all__ = ["CoreWebDriver"]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class CoreWebDriver(
|
|
32
|
+
CoreActionsMixin,
|
|
33
|
+
CoreAuthMixin,
|
|
34
|
+
CoreBaseMixin,
|
|
35
|
+
CoreCaptureMixin,
|
|
36
|
+
CoreComponentsMixin,
|
|
37
|
+
CoreDevToolsMixin,
|
|
38
|
+
CoreElementMixin,
|
|
39
|
+
CoreFileMixin,
|
|
40
|
+
CoreLifecycleMixin,
|
|
41
|
+
CoreNavigationMixin,
|
|
42
|
+
CoreScriptMixin,
|
|
43
|
+
CoreSettingsMixin,
|
|
44
|
+
CoreStorageMixin,
|
|
45
|
+
CoreTimeoutsMixin,
|
|
46
|
+
CoreWindowMixin,
|
|
47
|
+
AbstractCoreWebDriver,
|
|
48
|
+
):
|
|
49
|
+
"""
|
|
50
|
+
Concrete Core WebDriver implementation combining all functional mixins.
|
|
51
|
+
|
|
52
|
+
This class aggregates lifecycle management, element interaction, navigation,
|
|
53
|
+
and browser-specific features into a single usable driver instance.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
def __init__(
|
|
57
|
+
self,
|
|
58
|
+
webdriver_path: str,
|
|
59
|
+
flags_manager_type: Type[BrowserFlagsManager] = BrowserFlagsManager,
|
|
60
|
+
flags: Optional[BrowserFlags] = None,
|
|
61
|
+
implicitly_wait: int = 5,
|
|
62
|
+
page_load_timeout: int = 5,
|
|
63
|
+
script_timeout: int = 5,
|
|
64
|
+
window_rect: Optional[WindowRect] = None,
|
|
65
|
+
devtools_settings: Optional[DevToolsSettings] = None,
|
|
66
|
+
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
67
|
+
) -> None:
|
|
68
|
+
"""
|
|
69
|
+
Initializes the main WebDriver instance with Trio thread support.
|
|
70
|
+
|
|
71
|
+
Combines multiple functional mixins and initializes the JavaScript executor
|
|
72
|
+
along with base configuration components.
|
|
73
|
+
|
|
74
|
+
Args:
|
|
75
|
+
webdriver_path (str): The file path to the WebDriver executable.
|
|
76
|
+
flags_manager_type (Type[BrowserFlagsManager]): The class type used to manage
|
|
77
|
+
browser-specific configuration flags. Defaults to BrowserFlagsManager.
|
|
78
|
+
flags (Optional[BrowserFlags]): Initial set of browser flags or options
|
|
79
|
+
to apply upon startup. Defaults to None.
|
|
80
|
+
implicitly_wait (int): The amount of time (in seconds) that the driver should
|
|
81
|
+
wait when searching for elements. Defaults to 5.
|
|
82
|
+
page_load_timeout (int): The amount of time (in seconds) to wait for a page
|
|
83
|
+
load to complete. Defaults to 5.
|
|
84
|
+
script_timeout (int): The amount of time (in seconds) to wait for an
|
|
85
|
+
asynchronous script to finish execution. Defaults to 5.
|
|
86
|
+
window_rect (Optional[WindowRect]): The initial size and position of the
|
|
87
|
+
browser window. Defaults to None.
|
|
88
|
+
devtools_settings (Optional[DevToolsSettings]): Configuration for Chrome DevTools Protocol.
|
|
89
|
+
capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
|
|
90
|
+
throttle concurrent thread-based operations. Defaults to None.
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
CoreBaseMixin.__init__(
|
|
94
|
+
self,
|
|
95
|
+
webdriver_path=webdriver_path,
|
|
96
|
+
flags_manager_type=flags_manager_type,
|
|
97
|
+
flags=flags,
|
|
98
|
+
implicitly_wait=implicitly_wait,
|
|
99
|
+
page_load_timeout=page_load_timeout,
|
|
100
|
+
script_timeout=script_timeout,
|
|
101
|
+
window_rect=window_rect,
|
|
102
|
+
capacity_limiter=capacity_limiter,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
self._devtools = DevTools(parent_webdriver=self, devtools_settings=devtools_settings)
|
|
106
|
+
|
|
107
|
+
@property
|
|
108
|
+
def devtools(self) -> DevTools:
|
|
109
|
+
return self._devtools
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Iterable,
|
|
3
|
+
List,
|
|
4
|
+
Optional
|
|
5
|
+
)
|
|
6
|
+
from osn_selenium.base_mixin import TrioThreadMixin
|
|
7
|
+
from osn_selenium._typehints import DEVICES_TYPEHINT
|
|
8
|
+
from osn_selenium.webdrivers._bridges import (
|
|
9
|
+
get_js_executor_bridge
|
|
10
|
+
)
|
|
11
|
+
from osn_selenium.instances.trio_threads.action_chains import ActionChains
|
|
12
|
+
from osn_selenium.webdrivers.trio_threads.core.script import CoreScriptMixin
|
|
13
|
+
from osn_selenium.instances.trio_threads.web_driver_wait import WebDriverWait
|
|
14
|
+
from osn_selenium.instances.convert import (
|
|
15
|
+
get_trio_thread_instance_wrapper
|
|
16
|
+
)
|
|
17
|
+
from osn_selenium.webdrivers.unified.core.actions import (
|
|
18
|
+
UnifiedCoreActionsMixin
|
|
19
|
+
)
|
|
20
|
+
from osn_selenium.abstract.webdriver.core.actions import (
|
|
21
|
+
AbstractCoreActionsMixin
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
__all__ = ["CoreActionsMixin"]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class CoreActionsMixin(
|
|
29
|
+
UnifiedCoreActionsMixin,
|
|
30
|
+
CoreScriptMixin,
|
|
31
|
+
TrioThreadMixin,
|
|
32
|
+
AbstractCoreActionsMixin
|
|
33
|
+
):
|
|
34
|
+
"""
|
|
35
|
+
Mixin providing high-level interaction capabilities for Core WebDrivers.
|
|
36
|
+
|
|
37
|
+
Includes factories for standard and human-like ActionChains, as well as
|
|
38
|
+
custom WebDriverWait implementations.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
def action_chains(
|
|
42
|
+
self,
|
|
43
|
+
duration: int = 250,
|
|
44
|
+
devices: Optional[List[DEVICES_TYPEHINT]] = None,
|
|
45
|
+
) -> ActionChains:
|
|
46
|
+
legacy = self._action_chains_impl(duration=duration, devices=devices)
|
|
47
|
+
|
|
48
|
+
return ActionChains(
|
|
49
|
+
selenium_action_chains=legacy,
|
|
50
|
+
execute_js_script_function=get_js_executor_bridge(self),
|
|
51
|
+
lock=self._lock,
|
|
52
|
+
limiter=self._capacity_limiter,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
def web_driver_wait(
|
|
56
|
+
self,
|
|
57
|
+
timeout: float,
|
|
58
|
+
poll_frequency: float = 0.5,
|
|
59
|
+
ignored_exceptions: Optional[Iterable[BaseException]] = None,
|
|
60
|
+
) -> WebDriverWait:
|
|
61
|
+
legacy = self._web_driver_wait_impl(
|
|
62
|
+
timeout=timeout,
|
|
63
|
+
poll_frequency=poll_frequency,
|
|
64
|
+
ignored_exceptions=ignored_exceptions
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
return get_trio_thread_instance_wrapper(
|
|
68
|
+
wrapper_class=WebDriverWait,
|
|
69
|
+
legacy_object=legacy,
|
|
70
|
+
lock=self._lock,
|
|
71
|
+
limiter=self._capacity_limiter,
|
|
72
|
+
)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
from osn_selenium.base_mixin import TrioThreadMixin
|
|
2
|
+
from typing import (
|
|
3
|
+
Any,
|
|
4
|
+
List,
|
|
5
|
+
Optional,
|
|
6
|
+
Union
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium.instances.trio_threads.fedcm import FedCM
|
|
9
|
+
from osn_selenium.instances.trio_threads.dialog import Dialog
|
|
10
|
+
from osn_selenium.webdrivers.unified.core.auth import UnifiedCoreAuthMixin
|
|
11
|
+
from osn_selenium.abstract.webdriver.core.auth import (
|
|
12
|
+
AbstractCoreAuthMixin
|
|
13
|
+
)
|
|
14
|
+
from osn_selenium.instances.convert import (
|
|
15
|
+
get_trio_thread_instance_wrapper
|
|
16
|
+
)
|
|
17
|
+
from selenium.webdriver.common.virtual_authenticator import (
|
|
18
|
+
Credential,
|
|
19
|
+
VirtualAuthenticatorOptions
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
__all__ = ["CoreAuthMixin"]
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class CoreAuthMixin(UnifiedCoreAuthMixin, TrioThreadMixin, AbstractCoreAuthMixin):
|
|
27
|
+
"""
|
|
28
|
+
Mixin handling authentication and credential management for Core WebDrivers.
|
|
29
|
+
|
|
30
|
+
Provides interfaces for adding/removing credentials, managing virtual
|
|
31
|
+
authenticators, and handling Federated Credential Management (FedCM) dialogs.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
async def add_credential(self, credential: Credential) -> None:
|
|
35
|
+
await self.sync_to_trio(sync_function=self._add_credential_impl)(credential=credential)
|
|
36
|
+
|
|
37
|
+
async def add_virtual_authenticator(self, options: VirtualAuthenticatorOptions) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._add_virtual_authenticator_impl)(options=options)
|
|
39
|
+
|
|
40
|
+
async def fedcm(self) -> FedCM:
|
|
41
|
+
legacy = await self.sync_to_trio(sync_function=self._fedcm_impl)()
|
|
42
|
+
|
|
43
|
+
return get_trio_thread_instance_wrapper(
|
|
44
|
+
wrapper_class=FedCM,
|
|
45
|
+
legacy_object=legacy,
|
|
46
|
+
lock=self._lock,
|
|
47
|
+
limiter=self._capacity_limiter,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
async def fedcm_dialog(
|
|
51
|
+
self,
|
|
52
|
+
timeout: int = 5,
|
|
53
|
+
poll_frequency: float = 0.5,
|
|
54
|
+
ignored_exceptions: Any = None,
|
|
55
|
+
) -> Dialog:
|
|
56
|
+
legacy = await self.sync_to_trio(sync_function=self._fedcm_dialog_impl)(
|
|
57
|
+
timeout=timeout,
|
|
58
|
+
poll_frequency=poll_frequency,
|
|
59
|
+
ignored_exceptions=ignored_exceptions,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
return get_trio_thread_instance_wrapper(
|
|
63
|
+
wrapper_class=Dialog,
|
|
64
|
+
legacy_object=legacy,
|
|
65
|
+
lock=self._lock,
|
|
66
|
+
limiter=self._capacity_limiter,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
async def get_credentials(self) -> List[Credential]:
|
|
70
|
+
return await self.sync_to_trio(sync_function=self._get_credentials_impl)()
|
|
71
|
+
|
|
72
|
+
async def remove_all_credentials(self) -> None:
|
|
73
|
+
await self.sync_to_trio(sync_function=self._remove_all_credentials_impl)()
|
|
74
|
+
|
|
75
|
+
async def remove_credential(self, credential_id: Union[str, bytearray]) -> None:
|
|
76
|
+
await self.sync_to_trio(sync_function=self._remove_credential_impl)(credential_id=credential_id)
|
|
77
|
+
|
|
78
|
+
async def remove_virtual_authenticator(self) -> None:
|
|
79
|
+
await self.sync_to_trio(sync_function=self._remove_virtual_authenticator_impl)()
|
|
80
|
+
|
|
81
|
+
async def set_user_verified(self, verified: bool) -> None:
|
|
82
|
+
await self.sync_to_trio(sync_function=self._set_user_verified_impl)(verified=verified)
|
|
83
|
+
|
|
84
|
+
async def supports_fedcm(self) -> bool:
|
|
85
|
+
return await self.sync_to_trio(sync_function=self._supports_fedcm_impl)()
|
|
86
|
+
|
|
87
|
+
async def virtual_authenticator_id(self) -> Optional[str]:
|
|
88
|
+
return await self.sync_to_trio(sync_function=self._virtual_authenticator_id_impl)()
|