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,76 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import (
|
|
3
|
+
Any,
|
|
4
|
+
Dict,
|
|
5
|
+
List,
|
|
6
|
+
Optional
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
__all__ = ["AbstractWebAuthnCDPExecutor"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AbstractWebAuthnCDPExecutor(ABC):
|
|
14
|
+
@abstractmethod
|
|
15
|
+
def add_credential(self, authenticator_id: str, credential: Dict[str, Any]) -> None:
|
|
16
|
+
...
|
|
17
|
+
|
|
18
|
+
@abstractmethod
|
|
19
|
+
def add_virtual_authenticator(self, options: Dict[str, Any]) -> str:
|
|
20
|
+
...
|
|
21
|
+
|
|
22
|
+
@abstractmethod
|
|
23
|
+
def clear_credentials(self, authenticator_id: str) -> None:
|
|
24
|
+
...
|
|
25
|
+
|
|
26
|
+
@abstractmethod
|
|
27
|
+
def disable(self) -> None:
|
|
28
|
+
...
|
|
29
|
+
|
|
30
|
+
@abstractmethod
|
|
31
|
+
def enable(self, enable_ui: Optional[bool] = None) -> None:
|
|
32
|
+
...
|
|
33
|
+
|
|
34
|
+
@abstractmethod
|
|
35
|
+
def get_credential(self, authenticator_id: str, credential_id: str) -> Dict[str, Any]:
|
|
36
|
+
...
|
|
37
|
+
|
|
38
|
+
@abstractmethod
|
|
39
|
+
def get_credentials(self, authenticator_id: str) -> List[Dict[str, Any]]:
|
|
40
|
+
...
|
|
41
|
+
|
|
42
|
+
@abstractmethod
|
|
43
|
+
def remove_credential(self, authenticator_id: str, credential_id: str) -> None:
|
|
44
|
+
...
|
|
45
|
+
|
|
46
|
+
@abstractmethod
|
|
47
|
+
def remove_virtual_authenticator(self, authenticator_id: str) -> None:
|
|
48
|
+
...
|
|
49
|
+
|
|
50
|
+
@abstractmethod
|
|
51
|
+
def set_automatic_presence_simulation(self, authenticator_id: str, enabled: bool) -> None:
|
|
52
|
+
...
|
|
53
|
+
|
|
54
|
+
@abstractmethod
|
|
55
|
+
def set_credential_properties(
|
|
56
|
+
self,
|
|
57
|
+
authenticator_id: str,
|
|
58
|
+
credential_id: str,
|
|
59
|
+
backup_eligibility: Optional[bool] = None,
|
|
60
|
+
backup_state: Optional[bool] = None
|
|
61
|
+
) -> None:
|
|
62
|
+
...
|
|
63
|
+
|
|
64
|
+
@abstractmethod
|
|
65
|
+
def set_response_override_bits(
|
|
66
|
+
self,
|
|
67
|
+
authenticator_id: str,
|
|
68
|
+
is_bogus_signature: Optional[bool] = None,
|
|
69
|
+
is_bad_uv: Optional[bool] = None,
|
|
70
|
+
is_bad_up: Optional[bool] = None
|
|
71
|
+
) -> None:
|
|
72
|
+
...
|
|
73
|
+
|
|
74
|
+
@abstractmethod
|
|
75
|
+
def set_user_verified(self, authenticator_id: str, is_user_verified: bool) -> None:
|
|
76
|
+
...
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import Any, Dict, Optional
|
|
3
|
+
from osn_selenium.javascript.models import JS_Scripts
|
|
4
|
+
from selenium.webdriver.remote.webelement import WebElement
|
|
5
|
+
from osn_selenium.javascript.fingerprint import FingerprintSettings
|
|
6
|
+
from osn_selenium.models import (
|
|
7
|
+
Point,
|
|
8
|
+
Position,
|
|
9
|
+
Rectangle,
|
|
10
|
+
Size
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["AbstractJSExecutor"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class AbstractJSExecutor(ABC):
|
|
18
|
+
"""
|
|
19
|
+
Abstract base class for executing JavaScript commands in a browser context.
|
|
20
|
+
|
|
21
|
+
This class defines the interface for interacting with JavaScript scripts,
|
|
22
|
+
including checking element visibility, getting computed styles, and managing
|
|
23
|
+
viewport properties.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
@abstractmethod
|
|
27
|
+
def check_element_in_viewport(self, element: WebElement) -> bool:
|
|
28
|
+
"""
|
|
29
|
+
Checks if the element is currently visible within the viewport.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
element (WebElement): The element to check.
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
bool: True if the element is fully within the viewport,
|
|
36
|
+
otherwise False.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
...
|
|
40
|
+
|
|
41
|
+
@abstractmethod
|
|
42
|
+
def execute(self, script: str, *args: Any) -> Any:
|
|
43
|
+
"""
|
|
44
|
+
Executes a JavaScript snippet.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
script (str): The JavaScript code to execute.
|
|
48
|
+
*args (Any): Arguments to pass to the script.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
Any: The result of the script execution.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
...
|
|
55
|
+
|
|
56
|
+
@abstractmethod
|
|
57
|
+
def get_document_scroll_size(self) -> Size:
|
|
58
|
+
"""
|
|
59
|
+
Gets the total scrollable width and height of the document.
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
Size: An object containing the scroll width and height.
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
...
|
|
66
|
+
|
|
67
|
+
@abstractmethod
|
|
68
|
+
def get_element_css_style(self, element: WebElement) -> Dict[str, str]:
|
|
69
|
+
"""
|
|
70
|
+
Retrieves all computed CSS properties for an element.
|
|
71
|
+
|
|
72
|
+
Args:
|
|
73
|
+
element (WebElement): The element to get the style from.
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
Dict[str, str]: A dictionary of CSS properties and their values.
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
...
|
|
80
|
+
|
|
81
|
+
@abstractmethod
|
|
82
|
+
def get_element_rect_in_viewport(self, element: WebElement) -> Rectangle:
|
|
83
|
+
"""
|
|
84
|
+
Gets the element's position and size relative to the viewport.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
element (WebElement): The element to measure.
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
Rectangle: An object with the x, y, width, and height of the
|
|
91
|
+
element.
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
...
|
|
95
|
+
|
|
96
|
+
@abstractmethod
|
|
97
|
+
def get_random_element_point(self, element: WebElement) -> Optional[Point]:
|
|
98
|
+
"""
|
|
99
|
+
Gets a random point within an element, relative to the viewport.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
element (WebElement): The element to find a point in.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
Optional[Point]: An object with the x and y coordinates of the random
|
|
106
|
+
point relative to the viewport, or None if no point is found.
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
...
|
|
110
|
+
|
|
111
|
+
@abstractmethod
|
|
112
|
+
def get_random_element_point_in_viewport(self, element: WebElement, step: int = 1) -> Optional[Position]:
|
|
113
|
+
"""
|
|
114
|
+
Calculates a random point within an element's visible area.
|
|
115
|
+
|
|
116
|
+
Args:
|
|
117
|
+
element (WebElement): The element to find a point within.
|
|
118
|
+
step (int): The grid step for sampling points. Defaults to 1.
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
Optional[Position]: An object with x and y coordinates relative to
|
|
122
|
+
the element's top-left corner, or None if no point is found.
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
...
|
|
126
|
+
|
|
127
|
+
@abstractmethod
|
|
128
|
+
def get_viewport_position(self) -> Position:
|
|
129
|
+
"""
|
|
130
|
+
Gets the viewport's current scroll position relative to the document.
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
Position: An object containing the x (horizontal) and y
|
|
134
|
+
(vertical) scroll offsets.
|
|
135
|
+
"""
|
|
136
|
+
|
|
137
|
+
...
|
|
138
|
+
|
|
139
|
+
@abstractmethod
|
|
140
|
+
def get_viewport_rect(self) -> Rectangle:
|
|
141
|
+
"""
|
|
142
|
+
Gets the viewport's position and size relative to the document.
|
|
143
|
+
|
|
144
|
+
Returns:
|
|
145
|
+
Rectangle: An object with the scroll offsets (x, y) and
|
|
146
|
+
dimensions (width, height) of the viewport.
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
...
|
|
150
|
+
|
|
151
|
+
@abstractmethod
|
|
152
|
+
def get_viewport_size(self) -> Size:
|
|
153
|
+
"""
|
|
154
|
+
Gets the current dimensions of the browser's viewport.
|
|
155
|
+
|
|
156
|
+
Returns:
|
|
157
|
+
Size: An object containing the width and height of the viewport.
|
|
158
|
+
"""
|
|
159
|
+
|
|
160
|
+
...
|
|
161
|
+
|
|
162
|
+
@abstractmethod
|
|
163
|
+
def open_new_tab(self, link: str = "") -> None:
|
|
164
|
+
"""
|
|
165
|
+
Opens a new browser tab.
|
|
166
|
+
|
|
167
|
+
Args:
|
|
168
|
+
link (str): The URL to open. If empty, a blank tab is opened.
|
|
169
|
+
Defaults to "".
|
|
170
|
+
"""
|
|
171
|
+
|
|
172
|
+
...
|
|
173
|
+
|
|
174
|
+
@property
|
|
175
|
+
@abstractmethod
|
|
176
|
+
def scripts(self) -> JS_Scripts:
|
|
177
|
+
"""
|
|
178
|
+
Provides access to the loaded JavaScript snippets.
|
|
179
|
+
|
|
180
|
+
Returns:
|
|
181
|
+
JS_Scripts: An object holding the predefined JS scripts.
|
|
182
|
+
"""
|
|
183
|
+
|
|
184
|
+
...
|
|
185
|
+
|
|
186
|
+
@abstractmethod
|
|
187
|
+
def start_fingerprint_detection(self, fingerprint_settings: FingerprintSettings) -> None:
|
|
188
|
+
"""
|
|
189
|
+
Initiate fingerprint detection based on the provided settings.
|
|
190
|
+
|
|
191
|
+
Args:
|
|
192
|
+
fingerprint_settings (FingerprintSettings): The settings used for fingerprint detection.
|
|
193
|
+
"""
|
|
194
|
+
|
|
195
|
+
...
|
|
196
|
+
|
|
197
|
+
@abstractmethod
|
|
198
|
+
def stop_window_loading(self) -> None:
|
|
199
|
+
"""
|
|
200
|
+
Stops the current page from loading.
|
|
201
|
+
"""
|
|
202
|
+
|
|
203
|
+
...
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from selenium.webdriver.common.action_chains import (
|
|
3
|
+
ActionChains as legacyActionChains
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
__all__ = ["AbstractBaseMixin"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AbstractBaseMixin(ABC):
|
|
11
|
+
"""
|
|
12
|
+
Base mixin class providing access to the legacy Selenium ActionChains.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
@abstractmethod
|
|
17
|
+
def legacy(self) -> legacyActionChains:
|
|
18
|
+
"""
|
|
19
|
+
Returns the legacy Selenium ActionChains object.
|
|
20
|
+
|
|
21
|
+
Returns:
|
|
22
|
+
legacyActionChains: The underlying Selenium action chain object.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
...
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import (
|
|
3
|
+
Optional,
|
|
4
|
+
TYPE_CHECKING
|
|
5
|
+
)
|
|
6
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
__all__ = ["AbstractClickMixin"]
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class AbstractClickMixin(ABC):
|
|
16
|
+
"""
|
|
17
|
+
Mixin class providing abstract methods for mouse click interactions.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
@abstractmethod
|
|
21
|
+
def click(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "AbstractActionChains":
|
|
22
|
+
"""
|
|
23
|
+
Performs a click action.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
on_element (Optional[WEB_ELEMENT_TYPEHINT]): The element to click.
|
|
27
|
+
If None, clicks at the current mouse position.
|
|
28
|
+
|
|
29
|
+
Returns:
|
|
30
|
+
AbstractActionChains: The instance of ActionChains for method chaining.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
...
|
|
34
|
+
|
|
35
|
+
@abstractmethod
|
|
36
|
+
def click_and_hold(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "AbstractActionChains":
|
|
37
|
+
"""
|
|
38
|
+
Clicks and holds the mouse button down.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
on_element (Optional[WEB_ELEMENT_TYPEHINT]): The element to click on.
|
|
42
|
+
If None, clicks at the current mouse position.
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
AbstractActionChains: The instance of ActionChains for method chaining.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
...
|
|
49
|
+
|
|
50
|
+
@abstractmethod
|
|
51
|
+
def context_click(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "AbstractActionChains":
|
|
52
|
+
"""
|
|
53
|
+
Performs a right-click action.
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
on_element (Optional[WEB_ELEMENT_TYPEHINT]): The element to right-click.
|
|
57
|
+
If None, right-clicks at the current mouse position.
|
|
58
|
+
|
|
59
|
+
Returns:
|
|
60
|
+
AbstractActionChains: The instance of ActionChains for method chaining.
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
...
|
|
64
|
+
|
|
65
|
+
@abstractmethod
|
|
66
|
+
def double_click(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "AbstractActionChains":
|
|
67
|
+
"""
|
|
68
|
+
Performs a double-click action.
|
|
69
|
+
|
|
70
|
+
Args:
|
|
71
|
+
on_element (Optional[WEB_ELEMENT_TYPEHINT]): The element to double-click.
|
|
72
|
+
If None, double-clicks at the current mouse position.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
AbstractActionChains: The instance of ActionChains for method chaining.
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
...
|
|
79
|
+
|
|
80
|
+
@abstractmethod
|
|
81
|
+
def release(self, on_element: Optional[WEB_ELEMENT_TYPEHINT]) -> "AbstractActionChains":
|
|
82
|
+
"""
|
|
83
|
+
Releases a held mouse button.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
on_element (Optional[WEB_ELEMENT_TYPEHINT]): The element on which to release the button.
|
|
87
|
+
If None, releases at the current mouse position.
|
|
88
|
+
|
|
89
|
+
Returns:
|
|
90
|
+
AbstractActionChains: The instance of ActionChains for method chaining.
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
...
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
__all__ = ["AbstractDragAndDropMixin"]
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AbstractDragAndDropMixin(ABC):
|
|
13
|
+
"""
|
|
14
|
+
Mixin class providing abstract methods for drag and drop interactions.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
@abstractmethod
|
|
18
|
+
def drag_and_drop(self, source: WEB_ELEMENT_TYPEHINT, target: WEB_ELEMENT_TYPEHINT) -> "AbstractActionChains":
|
|
19
|
+
"""
|
|
20
|
+
Drags an element and drops it onto another element.
|
|
21
|
+
|
|
22
|
+
Args:
|
|
23
|
+
source (WEB_ELEMENT_TYPEHINT): The element to drag.
|
|
24
|
+
target (WEB_ELEMENT_TYPEHINT): The element to drop on.
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
AbstractActionChains: The instance of ActionChains for method chaining.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
...
|
|
31
|
+
|
|
32
|
+
@abstractmethod
|
|
33
|
+
def drag_and_drop_by_offset(self, source: WEB_ELEMENT_TYPEHINT, xoffset: int, yoffset: int) -> "AbstractActionChains":
|
|
34
|
+
"""
|
|
35
|
+
Drags an element by a given offset.
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
source (WEB_ELEMENT_TYPEHINT): The element to drag.
|
|
39
|
+
xoffset (int): The horizontal offset to drag by.
|
|
40
|
+
yoffset (int): The vertical offset to drag by.
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
AbstractActionChains: The instance of ActionChains for method chaining.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
...
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
__all__ = ["AbstractHMKeyboardMixin"]
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AbstractHMKeyboardMixin(ABC):
|
|
13
|
+
"""
|
|
14
|
+
Mixin class providing abstract methods for human-like keyboard interactions.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
@abstractmethod
|
|
18
|
+
def hm_send_keys(self, text: str) -> "AbstractActionChains":
|
|
19
|
+
"""
|
|
20
|
+
Simulates human-like text input with variable delays.
|
|
21
|
+
|
|
22
|
+
Args:
|
|
23
|
+
text (str): The text to be typed.
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
"AbstractActionChains": The instance for method chaining.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
...
|
|
30
|
+
|
|
31
|
+
@abstractmethod
|
|
32
|
+
def hm_send_keys_to_element(self, element: WEB_ELEMENT_TYPEHINT, text: str) -> "AbstractActionChains":
|
|
33
|
+
"""
|
|
34
|
+
Simulates human-like text input into a specific element with variable delays.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
element (WEB_ELEMENT_TYPEHINT): The target element to type into.
|
|
38
|
+
text (str): The text to be typed.
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
"AbstractActionChains": The instance for method chaining.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
...
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from osn_selenium.models import Point
|
|
3
|
+
from typing import TYPE_CHECKING, Tuple
|
|
4
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
__all__ = ["AbstractHMMoveMixin"]
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AbstractHMMoveMixin(ABC):
|
|
14
|
+
"""
|
|
15
|
+
Mixin class providing abstract methods for human-like mouse movement interactions.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
@abstractmethod
|
|
19
|
+
def hm_move(self, start_position: Point, end_position: Point) -> "AbstractActionChains":
|
|
20
|
+
"""
|
|
21
|
+
Moves the mouse cursor from a start to an end position in a human-like curve.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
start_position (Point): The starting coordinates.
|
|
25
|
+
end_position (Point): The ending coordinates.
|
|
26
|
+
|
|
27
|
+
Returns:
|
|
28
|
+
AbstractActionChains: The instance for method chaining.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
...
|
|
32
|
+
|
|
33
|
+
@abstractmethod
|
|
34
|
+
def hm_move_by_offset(self, start_position: Point, xoffset: int, yoffset: int) -> Tuple["AbstractActionChains", Point]:
|
|
35
|
+
"""
|
|
36
|
+
Moves the mouse cursor by a given offset from a starting Point in a human-like way.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
start_position (Point): The starting coordinates of the mouse.
|
|
40
|
+
xoffset (int): The horizontal offset to move by.
|
|
41
|
+
yoffset (int): The vertical offset to move by.
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
Tuple[AbstractActionChains, Point]: A tuple containing the instance for
|
|
45
|
+
method chaining and the final Point coordinates of the cursor.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
...
|
|
49
|
+
|
|
50
|
+
@abstractmethod
|
|
51
|
+
def hm_move_to_element(self, start_position: Point, element: WEB_ELEMENT_TYPEHINT) -> Tuple["AbstractActionChains", Point]:
|
|
52
|
+
"""
|
|
53
|
+
Moves the mouse cursor to the center of an element in a human-like way.
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
start_position (Point): The starting coordinates of the mouse.
|
|
57
|
+
element (WEB_ELEMENT_TYPEHINT): The target element to move to.
|
|
58
|
+
|
|
59
|
+
Returns:
|
|
60
|
+
Tuple[AbstractActionChains, Point]: A tuple containing the instance for
|
|
61
|
+
method chaining and the final Point coordinates of the cursor.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
...
|
|
65
|
+
|
|
66
|
+
@abstractmethod
|
|
67
|
+
def hm_move_to_element_with_offset(
|
|
68
|
+
self,
|
|
69
|
+
start_position: Point,
|
|
70
|
+
element: WEB_ELEMENT_TYPEHINT,
|
|
71
|
+
xoffset: int,
|
|
72
|
+
yoffset: int
|
|
73
|
+
) -> Tuple["AbstractActionChains", Point]:
|
|
74
|
+
"""
|
|
75
|
+
Moves the mouse cursor to a specific offset within an element in a human-like way.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
start_position (Point): The starting coordinates of the mouse.
|
|
79
|
+
element (WEB_ELEMENT_TYPEHINT): The target element.
|
|
80
|
+
xoffset (int): The horizontal offset from the element's top-left corner.
|
|
81
|
+
yoffset (int): The vertical offset from the element's top-left corner.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
Tuple[AbstractActionChains, Point]: A tuple containing the instance for
|
|
85
|
+
method chaining and the final Point coordinates of the cursor.
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
...
|
|
89
|
+
|
|
90
|
+
@abstractmethod
|
|
91
|
+
def hm_move_to_element_with_random_offset(self, start_position: Point, element: WEB_ELEMENT_TYPEHINT) -> Tuple["AbstractActionChains", Point]:
|
|
92
|
+
"""
|
|
93
|
+
Moves the mouse cursor to a random Point within an element in a human-like way.
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
start_position (Point): The starting coordinates of the mouse.
|
|
97
|
+
element (WEB_ELEMENT_TYPEHINT): The target element to move to.
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
Tuple[AbstractActionChains, Point]: A tuple containing the instance for
|
|
101
|
+
method chaining and the final Point coordinates of the cursor.
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
...
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import (
|
|
3
|
+
Optional,
|
|
4
|
+
TYPE_CHECKING
|
|
5
|
+
)
|
|
6
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
7
|
+
from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
__all__ = ["AbstractHMScrollMixin"]
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class AbstractHMScrollMixin(ABC):
|
|
17
|
+
"""
|
|
18
|
+
Mixin class providing abstract methods for human-like scrolling interactions.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
@abstractmethod
|
|
22
|
+
def hm_scroll_by_amount(self, delta_x: int, delta_y: int) -> "AbstractActionChains":
|
|
23
|
+
"""
|
|
24
|
+
Simulates smooth, human-like scrolling by a specific amount.
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
delta_x (int): The horizontal distance to scroll.
|
|
28
|
+
delta_y (int): The vertical distance to scroll.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
AbstractActionChains: The instance for method chaining.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
...
|
|
35
|
+
|
|
36
|
+
@abstractmethod
|
|
37
|
+
def hm_scroll_from_origin(self, delta_x: int, delta_y: int, origin: Optional[ScrollOrigin] = None) -> "AbstractActionChains":
|
|
38
|
+
"""
|
|
39
|
+
Simulates smooth, human-like scrolling from a specific origin.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
delta_x (int): The horizontal distance to scroll.
|
|
43
|
+
delta_y (int): The vertical distance to scroll.
|
|
44
|
+
origin (Optional[ScrollOrigin]): The origin Point for scrolling. If None, it's determined automatically.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
AbstractActionChains: The instance for method chaining.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
...
|
|
51
|
+
|
|
52
|
+
@abstractmethod
|
|
53
|
+
def hm_scroll_to_element(
|
|
54
|
+
self,
|
|
55
|
+
element: WEB_ELEMENT_TYPEHINT,
|
|
56
|
+
additional_lower_y_offset: int = 0,
|
|
57
|
+
additional_upper_y_offset: int = 0,
|
|
58
|
+
additional_right_x_offset: int = 0,
|
|
59
|
+
additional_left_x_offset: int = 0
|
|
60
|
+
) -> "AbstractActionChains":
|
|
61
|
+
"""
|
|
62
|
+
Scrolls smoothly to bring an element into view, avoiding viewport edges.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
element (WEB_ELEMENT_TYPEHINT): The target element to scroll to.
|
|
66
|
+
additional_lower_y_offset (int): Additional offset from the bottom edge of the viewport.
|
|
67
|
+
additional_upper_y_offset (int): Additional offset from the top edge of the viewport.
|
|
68
|
+
additional_right_x_offset (int): Additional offset from the right edge of the viewport.
|
|
69
|
+
additional_left_x_offset (int): Additional offset from the left edge of the viewport.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
AbstractActionChains: The instance for method chaining.
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
...
|