osn-selenium 1.0.0__py3-none-any.whl → 1.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- osn_selenium/_base_models.py +41 -0
- osn_selenium/_cdp_import.py +253 -0
- osn_selenium/_decorators.py +57 -0
- osn_selenium/_trio_threads_helpers.py +157 -0
- osn_selenium/_typehints.py +1 -1
- osn_selenium/abstract/executors/cdp.py +63 -0
- osn_selenium/abstract/webdriver/blink/base.py +14 -0
- osn_selenium/abstract/webdriver/blink/lifecycle.py +8 -8
- osn_selenium/abstract/webdriver/core/base.py +0 -14
- osn_selenium/abstract/webdriver/core/capture.py +4 -3
- osn_selenium/abstract/webdriver/core/lifecycle.py +8 -8
- osn_selenium/abstract/webdriver/core/script.py +5 -4
- osn_selenium/abstract/webdriver/core/window.py +11 -11
- osn_selenium/browsers_handler/models.py +1 -1
- osn_selenium/dev_tools/_decorators.py +19 -51
- osn_selenium/dev_tools/_functions.py +2 -4
- osn_selenium/dev_tools/_typehints.py +5 -2
- osn_selenium/dev_tools/_wrappers.py +0 -3
- osn_selenium/dev_tools/domains/__init__.py +2 -2
- osn_selenium/dev_tools/domains/abstract.py +1 -1
- osn_selenium/dev_tools/domains/fetch.py +6 -8
- osn_selenium/dev_tools/domains_default/fetch.py +2 -2
- osn_selenium/dev_tools/filters.py +1 -1
- osn_selenium/dev_tools/logger/main.py +9 -21
- osn_selenium/dev_tools/logger/models.py +1 -1
- osn_selenium/dev_tools/logger/target.py +49 -29
- osn_selenium/dev_tools/manager/base.py +10 -42
- osn_selenium/dev_tools/manager/lifecycle.py +84 -75
- osn_selenium/dev_tools/manager/logging.py +1 -1
- osn_selenium/dev_tools/manager/targets.py +13 -5
- osn_selenium/dev_tools/models.py +1 -1
- osn_selenium/dev_tools/settings.py +9 -5
- osn_selenium/dev_tools/target/base.py +30 -34
- osn_selenium/dev_tools/target/discovery.py +1 -1
- osn_selenium/dev_tools/target/events.py +2 -2
- osn_selenium/dev_tools/target/fingerprint.py +1 -1
- osn_selenium/dev_tools/target/lifecycle.py +103 -38
- osn_selenium/dev_tools/target/logging.py +11 -3
- osn_selenium/exceptions/__init__.py +0 -1
- osn_selenium/exceptions/base.py +28 -1
- osn_selenium/exceptions/bidi_bridge.py +59 -0
- osn_selenium/exceptions/configuration.py +1 -8
- osn_selenium/exceptions/dependencies.py +60 -0
- osn_selenium/exceptions/devtools.py +9 -39
- osn_selenium/exceptions/experimental.py +26 -0
- osn_selenium/exceptions/flags.py +0 -2
- osn_selenium/exceptions/instance.py +1 -9
- osn_selenium/exceptions/javascript.py +0 -2
- osn_selenium/exceptions/logic.py +0 -2
- osn_selenium/exceptions/path.py +1 -9
- osn_selenium/exceptions/platform.py +0 -2
- osn_selenium/exceptions/protocol.py +0 -3
- osn_selenium/exceptions/webdriver.py +1 -7
- osn_selenium/exceptions/window.py +1 -8
- osn_selenium/executors/sync/cdp.py +95 -0
- osn_selenium/executors/trio_bidi/cdp.py +101 -0
- osn_selenium/executors/trio_bidi/javascript.py +101 -0
- osn_selenium/executors/trio_threads/cdp.py +99 -0
- osn_selenium/executors/trio_threads/javascript.py +1 -1
- osn_selenium/executors/unified/javascript.py +0 -4
- osn_selenium/flags/base.py +7 -13
- osn_selenium/flags/blink.py +2 -8
- osn_selenium/flags/chrome.py +6 -6
- osn_selenium/flags/edge.py +6 -6
- osn_selenium/flags/models/base.py +4 -4
- osn_selenium/flags/models/blink.py +1 -1
- osn_selenium/flags/models/values.py +1 -1
- osn_selenium/instances/convert.py +44 -3
- osn_selenium/instances/protocols.py +47 -1
- osn_selenium/instances/sync/action_chains/__init__.py +6 -0
- osn_selenium/instances/sync/browsing_context.py +2 -2
- osn_selenium/instances/sync/script.py +7 -2
- osn_selenium/instances/sync/shadow_root.py +30 -8
- osn_selenium/instances/sync/web_element.py +1 -1
- osn_selenium/instances/trio_bidi/__init__.py +1 -0
- osn_selenium/instances/trio_bidi/shadow_root.py +180 -0
- osn_selenium/instances/trio_bidi/switch_to.py +143 -0
- osn_selenium/instances/trio_bidi/web_driver_wait.py +124 -0
- osn_selenium/instances/trio_bidi/web_element.py +239 -0
- osn_selenium/instances/trio_threads/action_chains/__init__.py +6 -0
- osn_selenium/instances/trio_threads/action_chains/base.py +1 -1
- osn_selenium/instances/trio_threads/alert.py +1 -1
- osn_selenium/instances/trio_threads/browser.py +1 -1
- osn_selenium/instances/trio_threads/browsing_context.py +3 -3
- osn_selenium/instances/trio_threads/dialog.py +1 -1
- osn_selenium/instances/trio_threads/fedcm.py +1 -1
- osn_selenium/instances/trio_threads/mobile.py +1 -1
- osn_selenium/instances/trio_threads/network.py +1 -1
- osn_selenium/instances/trio_threads/permissions.py +1 -1
- osn_selenium/instances/trio_threads/script.py +8 -3
- osn_selenium/instances/trio_threads/shadow_root.py +46 -15
- osn_selenium/instances/trio_threads/storage.py +1 -1
- osn_selenium/instances/trio_threads/switch_to.py +1 -1
- osn_selenium/instances/trio_threads/web_driver_wait.py +1 -1
- osn_selenium/instances/trio_threads/web_element.py +1 -1
- osn_selenium/instances/trio_threads/web_extension.py +1 -1
- osn_selenium/instances/unified/browsing_context.py +2 -2
- osn_selenium/instances/unified/script.py +2 -2
- osn_selenium/instances/unified/web_element.py +3 -5
- osn_selenium/javascript/fingerprint/__init__.py +3 -2
- osn_selenium/javascript/fingerprint/registry/models.py +1 -1
- osn_selenium/javascript/fingerprint/spoof/core_rules.py +1 -1
- osn_selenium/javascript/fingerprint/spoof/noise.py +1 -1
- osn_selenium/javascript/models.py +1 -1
- osn_selenium/models.py +2 -47
- osn_selenium/trio_bidi/__init__.py +1 -0
- osn_selenium/trio_bidi/_context_vars.py +12 -0
- osn_selenium/trio_bidi/_error_mappings.py +123 -0
- osn_selenium/trio_bidi/_error_redirects.py +194 -0
- osn_selenium/trio_bidi/_file_functions.py +28 -0
- osn_selenium/trio_bidi/_internal_mappings.py +10 -0
- osn_selenium/trio_bidi/_models.py +199 -0
- osn_selenium/trio_bidi/_typehints.py +20 -0
- osn_selenium/trio_bidi/connection_pool.py +587 -0
- osn_selenium/trio_bidi/mapping/__init__.py +1 -0
- osn_selenium/trio_bidi/mapping/_constants.py +14 -0
- osn_selenium/trio_bidi/mapping/_js_snippets.py +285 -0
- osn_selenium/trio_bidi/mapping/_utils.py +4 -0
- osn_selenium/trio_bidi/mapping/request_functions/__init__.py +87 -0
- osn_selenium/trio_bidi/mapping/request_functions/_alert.py +102 -0
- osn_selenium/trio_bidi/mapping/request_functions/_args_helpers.py +225 -0
- osn_selenium/trio_bidi/mapping/request_functions/_capture.py +71 -0
- osn_selenium/trio_bidi/mapping/request_functions/_cdp.py +40 -0
- osn_selenium/trio_bidi/mapping/request_functions/_element.py +55 -0
- osn_selenium/trio_bidi/mapping/request_functions/_file.py +32 -0
- osn_selenium/trio_bidi/mapping/request_functions/_navigation.py +147 -0
- osn_selenium/trio_bidi/mapping/request_functions/_script.py +85 -0
- osn_selenium/trio_bidi/mapping/request_functions/_shadow_root.py +65 -0
- osn_selenium/trio_bidi/mapping/request_functions/_switch_to.py +59 -0
- osn_selenium/trio_bidi/mapping/request_functions/_web_element.py +448 -0
- osn_selenium/trio_bidi/mapping/request_functions/_window.py +125 -0
- osn_selenium/trio_bidi/mapping/response_functions/__init__.py +86 -0
- osn_selenium/trio_bidi/mapping/response_functions/_alert.py +81 -0
- osn_selenium/trio_bidi/mapping/response_functions/_args_helpers.py +183 -0
- osn_selenium/trio_bidi/mapping/response_functions/_args_validators.py +153 -0
- osn_selenium/trio_bidi/mapping/response_functions/_capture.py +71 -0
- osn_selenium/trio_bidi/mapping/response_functions/_cdp.py +26 -0
- osn_selenium/trio_bidi/mapping/response_functions/_element.py +58 -0
- osn_selenium/trio_bidi/mapping/response_functions/_file.py +30 -0
- osn_selenium/trio_bidi/mapping/response_functions/_navigation.py +120 -0
- osn_selenium/trio_bidi/mapping/response_functions/_script.py +57 -0
- osn_selenium/trio_bidi/mapping/response_functions/_shadow_root.py +58 -0
- osn_selenium/trio_bidi/mapping/response_functions/_switch_to.py +57 -0
- osn_selenium/trio_bidi/mapping/response_functions/_web_element.py +368 -0
- osn_selenium/trio_bidi/mapping/response_functions/_window.py +119 -0
- osn_selenium/trio_bidi/mixin.py +186 -0
- osn_selenium/trio_bidi/remote_connection.py +164 -0
- osn_selenium/{base_mixin.py → trio_threads_mixin.py} +31 -40
- osn_selenium/webdrivers/_args_helpers.py +120 -7
- osn_selenium/webdrivers/_bridges.py +2 -2
- osn_selenium/webdrivers/_executable_tables/models.py +1 -1
- osn_selenium/webdrivers/_typehints.py +9 -3
- osn_selenium/webdrivers/protocols.py +81 -1
- osn_selenium/webdrivers/sync/blink/__init__.py +11 -1
- osn_selenium/webdrivers/sync/blink/base.py +23 -1
- osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
- osn_selenium/webdrivers/sync/chrome/__init__.py +36 -1
- osn_selenium/webdrivers/sync/chrome/base.py +13 -1
- osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
- osn_selenium/webdrivers/sync/core/__init__.py +10 -1
- osn_selenium/webdrivers/sync/core/base.py +18 -18
- osn_selenium/webdrivers/sync/core/capture.py +3 -2
- osn_selenium/webdrivers/sync/core/file.py +3 -2
- osn_selenium/webdrivers/sync/core/lifecycle.py +44 -10
- osn_selenium/webdrivers/sync/core/script.py +3 -2
- osn_selenium/webdrivers/sync/core/window.py +3 -3
- osn_selenium/webdrivers/sync/edge/__init__.py +36 -1
- osn_selenium/webdrivers/sync/edge/base.py +13 -1
- osn_selenium/webdrivers/sync/edge/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/edge/settings.py +6 -1
- osn_selenium/webdrivers/sync/yandex/__init__.py +36 -1
- osn_selenium/webdrivers/sync/yandex/base.py +13 -1
- osn_selenium/webdrivers/sync/yandex/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/yandex/settings.py +6 -1
- osn_selenium/webdrivers/trio_bidi/__init__.py +1 -0
- osn_selenium/webdrivers/trio_bidi/blink/__init__.py +132 -0
- osn_selenium/webdrivers/trio_bidi/blink/base.py +167 -0
- osn_selenium/webdrivers/trio_bidi/blink/lifecycle.py +89 -0
- osn_selenium/webdrivers/trio_bidi/blink/settings.py +63 -0
- osn_selenium/webdrivers/trio_bidi/chrome/__init__.py +114 -0
- osn_selenium/webdrivers/trio_bidi/chrome/base.py +127 -0
- osn_selenium/webdrivers/trio_bidi/chrome/lifecycle.py +85 -0
- osn_selenium/webdrivers/trio_bidi/chrome/settings.py +63 -0
- osn_selenium/webdrivers/trio_bidi/core/__init__.py +95 -0
- osn_selenium/webdrivers/trio_bidi/core/actions.py +70 -0
- osn_selenium/webdrivers/trio_bidi/core/base.py +200 -0
- osn_selenium/webdrivers/trio_bidi/core/capture.py +39 -0
- osn_selenium/webdrivers/trio_bidi/core/devtools.py +49 -0
- osn_selenium/webdrivers/trio_bidi/core/element.py +64 -0
- osn_selenium/webdrivers/trio_bidi/core/lifecycle.py +135 -0
- osn_selenium/webdrivers/trio_bidi/core/navigation.py +37 -0
- osn_selenium/webdrivers/trio_bidi/core/script.py +56 -0
- osn_selenium/webdrivers/trio_bidi/core/settings.py +36 -0
- osn_selenium/webdrivers/trio_bidi/core/window.py +134 -0
- osn_selenium/webdrivers/trio_bidi/edge/__init__.py +114 -0
- osn_selenium/webdrivers/trio_bidi/edge/base.py +123 -0
- osn_selenium/webdrivers/trio_bidi/edge/lifecycle.py +85 -0
- osn_selenium/webdrivers/trio_bidi/edge/settings.py +63 -0
- osn_selenium/webdrivers/trio_bidi/yandex/__init__.py +114 -0
- osn_selenium/webdrivers/trio_bidi/yandex/base.py +120 -0
- osn_selenium/webdrivers/trio_bidi/yandex/lifecycle.py +85 -0
- osn_selenium/webdrivers/trio_bidi/yandex/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/blink/__init__.py +18 -2
- osn_selenium/webdrivers/trio_threads/blink/base.py +25 -1
- osn_selenium/webdrivers/trio_threads/blink/casting.py +1 -1
- osn_selenium/webdrivers/trio_threads/blink/features.py +1 -1
- osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
- osn_selenium/webdrivers/trio_threads/blink/logging.py +1 -1
- osn_selenium/webdrivers/trio_threads/blink/network.py +1 -1
- osn_selenium/webdrivers/trio_threads/chrome/__init__.py +34 -1
- osn_selenium/webdrivers/trio_threads/chrome/base.py +14 -2
- osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/chrome/settings.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/__init__.py +10 -14
- osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/base.py +18 -22
- osn_selenium/webdrivers/trio_threads/core/capture.py +4 -3
- osn_selenium/webdrivers/trio_threads/core/comonents.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/devtools.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/element.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/file.py +5 -4
- osn_selenium/webdrivers/trio_threads/core/lifecycle.py +45 -11
- osn_selenium/webdrivers/trio_threads/core/navigation.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/script.py +4 -3
- osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/window.py +6 -6
- osn_selenium/webdrivers/trio_threads/edge/__init__.py +34 -1
- osn_selenium/webdrivers/trio_threads/edge/base.py +14 -2
- osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/edge/settings.py +1 -1
- osn_selenium/webdrivers/trio_threads/yandex/__init__.py +34 -1
- osn_selenium/webdrivers/trio_threads/yandex/base.py +14 -2
- osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/yandex/settings.py +1 -1
- osn_selenium/webdrivers/unified/blink/base.py +9 -1
- osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
- osn_selenium/webdrivers/unified/chrome/base.py +9 -1
- osn_selenium/webdrivers/unified/core/auth.py +4 -2
- osn_selenium/webdrivers/unified/core/base.py +19 -6
- osn_selenium/webdrivers/unified/core/capture.py +3 -2
- osn_selenium/webdrivers/unified/core/components.py +12 -7
- osn_selenium/webdrivers/unified/core/devtools.py +2 -1
- osn_selenium/webdrivers/unified/core/file.py +3 -2
- osn_selenium/webdrivers/unified/core/lifecycle.py +5 -3
- osn_selenium/webdrivers/unified/core/script.py +5 -3
- osn_selenium/webdrivers/unified/core/storage.py +2 -1
- osn_selenium/webdrivers/unified/core/window.py +9 -8
- osn_selenium/webdrivers/unified/edge/base.py +9 -1
- osn_selenium/webdrivers/unified/yandex/base.py +9 -1
- {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/METADATA +24 -10
- osn_selenium-1.2.0.dist-info/RECORD +480 -0
- {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/WHEEL +1 -1
- osn_selenium/abstract/executors/cdp/__init__.py +0 -435
- osn_selenium/abstract/executors/cdp/accessibility.py +0 -62
- osn_selenium/abstract/executors/cdp/animation.py +0 -47
- osn_selenium/abstract/executors/cdp/audits.py +0 -39
- osn_selenium/abstract/executors/cdp/autofill.py +0 -34
- osn_selenium/abstract/executors/cdp/background_service.py +0 -22
- osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -95
- osn_selenium/abstract/executors/cdp/browser.py +0 -122
- osn_selenium/abstract/executors/cdp/cache_storage.py +0 -49
- osn_selenium/abstract/executors/cdp/cast.py +0 -31
- osn_selenium/abstract/executors/cdp/console.py +0 -18
- osn_selenium/abstract/executors/cdp/css.py +0 -197
- osn_selenium/abstract/executors/cdp/debugger.py +0 -198
- osn_selenium/abstract/executors/cdp/device_access.py +0 -22
- osn_selenium/abstract/executors/cdp/device_orientation.py +0 -14
- osn_selenium/abstract/executors/cdp/dom.py +0 -305
- osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -57
- osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -42
- osn_selenium/abstract/executors/cdp/dom_storage.py +0 -31
- osn_selenium/abstract/executors/cdp/emulation.py +0 -259
- osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -18
- osn_selenium/abstract/executors/cdp/extensions.py +0 -31
- osn_selenium/abstract/executors/cdp/fed_cm.py +0 -35
- osn_selenium/abstract/executors/cdp/fetch.py +0 -76
- osn_selenium/abstract/executors/cdp/file_system.py +0 -11
- osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -30
- osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -73
- osn_selenium/abstract/executors/cdp/indexed_db.py +0 -99
- osn_selenium/abstract/executors/cdp/input.py +0 -158
- osn_selenium/abstract/executors/cdp/inspector.py +0 -14
- osn_selenium/abstract/executors/cdp/io.py +0 -24
- osn_selenium/abstract/executors/cdp/layer_tree.py +0 -61
- osn_selenium/abstract/executors/cdp/log.py +0 -27
- osn_selenium/abstract/executors/cdp/media.py +0 -14
- osn_selenium/abstract/executors/cdp/memory.py +0 -61
- osn_selenium/abstract/executors/cdp/network.py +0 -252
- osn_selenium/abstract/executors/cdp/overlay.py +0 -166
- osn_selenium/abstract/executors/cdp/page.py +0 -347
- osn_selenium/abstract/executors/cdp/performance.py +0 -28
- osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -11
- osn_selenium/abstract/executors/cdp/preload.py +0 -14
- osn_selenium/abstract/executors/cdp/profiler.py +0 -54
- osn_selenium/abstract/executors/cdp/pwa.py +0 -46
- osn_selenium/abstract/executors/cdp/runtime.py +0 -176
- osn_selenium/abstract/executors/cdp/schema.py +0 -11
- osn_selenium/abstract/executors/cdp/security.py +0 -26
- osn_selenium/abstract/executors/cdp/service_worker.py +0 -54
- osn_selenium/abstract/executors/cdp/storage.py +0 -175
- osn_selenium/abstract/executors/cdp/system_info.py +0 -24
- osn_selenium/abstract/executors/cdp/target.py +0 -125
- osn_selenium/abstract/executors/cdp/tethering.py +0 -14
- osn_selenium/abstract/executors/cdp/tracing.py +0 -48
- osn_selenium/abstract/executors/cdp/web_audio.py +0 -19
- osn_selenium/abstract/executors/cdp/web_authn.py +0 -76
- osn_selenium/executors/sync/cdp/__init__.py +0 -550
- osn_selenium/executors/sync/cdp/accessibility.py +0 -74
- osn_selenium/executors/sync/cdp/animation.py +0 -50
- osn_selenium/executors/sync/cdp/audits.py +0 -48
- osn_selenium/executors/sync/cdp/autofill.py +0 -39
- osn_selenium/executors/sync/cdp/background_service.py +0 -30
- osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -101
- osn_selenium/executors/sync/cdp/browser.py +0 -131
- osn_selenium/executors/sync/cdp/cache_storage.py +0 -66
- osn_selenium/executors/sync/cdp/cast.py +0 -38
- osn_selenium/executors/sync/cdp/console.py +0 -24
- osn_selenium/executors/sync/cdp/css.py +0 -187
- osn_selenium/executors/sync/cdp/debugger.py +0 -206
- osn_selenium/executors/sync/cdp/device_access.py +0 -27
- osn_selenium/executors/sync/cdp/device_orientation.py +0 -24
- osn_selenium/executors/sync/cdp/dom.py +0 -310
- osn_selenium/executors/sync/cdp/dom_debugger.py +0 -56
- osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -58
- osn_selenium/executors/sync/cdp/dom_storage.py +0 -38
- osn_selenium/executors/sync/cdp/emulation.py +0 -270
- osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -27
- osn_selenium/executors/sync/cdp/extensions.py +0 -39
- osn_selenium/executors/sync/cdp/fed_cm.py +0 -45
- osn_selenium/executors/sync/cdp/fetch.py +0 -96
- osn_selenium/executors/sync/cdp/file_system.py +0 -18
- osn_selenium/executors/sync/cdp/headless_experimental.py +0 -44
- osn_selenium/executors/sync/cdp/heap_profiler.py +0 -89
- osn_selenium/executors/sync/cdp/indexed_db.py +0 -142
- osn_selenium/executors/sync/cdp/input.py +0 -233
- osn_selenium/executors/sync/cdp/inspector.py +0 -21
- osn_selenium/executors/sync/cdp/io.py +0 -33
- osn_selenium/executors/sync/cdp/layer_tree.py +0 -71
- osn_selenium/executors/sync/cdp/log.py +0 -35
- osn_selenium/executors/sync/cdp/media.py +0 -21
- osn_selenium/executors/sync/cdp/memory.py +0 -62
- osn_selenium/executors/sync/cdp/network.py +0 -287
- osn_selenium/executors/sync/cdp/overlay.py +0 -174
- osn_selenium/executors/sync/cdp/page.py +0 -365
- osn_selenium/executors/sync/cdp/performance.py +0 -33
- osn_selenium/executors/sync/cdp/performance_timeline.py +0 -26
- osn_selenium/executors/sync/cdp/preload.py +0 -21
- osn_selenium/executors/sync/cdp/profiler.py +0 -58
- osn_selenium/executors/sync/cdp/pwa.py +0 -55
- osn_selenium/executors/sync/cdp/runtime.py +0 -221
- osn_selenium/executors/sync/cdp/schema.py +0 -23
- osn_selenium/executors/sync/cdp/security.py +0 -30
- osn_selenium/executors/sync/cdp/service_worker.py +0 -56
- osn_selenium/executors/sync/cdp/storage.py +0 -151
- osn_selenium/executors/sync/cdp/system_info.py +0 -30
- osn_selenium/executors/sync/cdp/target.py +0 -147
- osn_selenium/executors/sync/cdp/tethering.py +0 -21
- osn_selenium/executors/sync/cdp/tracing.py +0 -62
- osn_selenium/executors/sync/cdp/web_audio.py +0 -24
- osn_selenium/executors/sync/cdp/web_authn.py +0 -82
- osn_selenium/executors/trio_threads/cdp/__init__.py +0 -771
- osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -87
- osn_selenium/executors/trio_threads/cdp/animation.py +0 -63
- osn_selenium/executors/trio_threads/cdp/audits.py +0 -57
- osn_selenium/executors/trio_threads/cdp/autofill.py +0 -52
- osn_selenium/executors/trio_threads/cdp/background_service.py +0 -40
- osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -111
- osn_selenium/executors/trio_threads/cdp/browser.py +0 -140
- osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -79
- osn_selenium/executors/trio_threads/cdp/cast.py +0 -47
- osn_selenium/executors/trio_threads/cdp/console.py +0 -33
- osn_selenium/executors/trio_threads/cdp/css.py +0 -196
- osn_selenium/executors/trio_threads/cdp/debugger.py +0 -219
- osn_selenium/executors/trio_threads/cdp/device_access.py +0 -40
- osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -34
- osn_selenium/executors/trio_threads/cdp/dom.py +0 -319
- osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -69
- osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -71
- osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -51
- osn_selenium/executors/trio_threads/cdp/emulation.py +0 -283
- osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -37
- osn_selenium/executors/trio_threads/cdp/extensions.py +0 -52
- osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -54
- osn_selenium/executors/trio_threads/cdp/fetch.py +0 -105
- osn_selenium/executors/trio_threads/cdp/file_system.py +0 -31
- osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -54
- osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -102
- osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -155
- osn_selenium/executors/trio_threads/cdp/input.py +0 -242
- osn_selenium/executors/trio_threads/cdp/inspector.py +0 -34
- osn_selenium/executors/trio_threads/cdp/io.py +0 -42
- osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -84
- osn_selenium/executors/trio_threads/cdp/log.py +0 -44
- osn_selenium/executors/trio_threads/cdp/media.py +0 -30
- osn_selenium/executors/trio_threads/cdp/memory.py +0 -71
- osn_selenium/executors/trio_threads/cdp/network.py +0 -296
- osn_selenium/executors/trio_threads/cdp/overlay.py +0 -183
- osn_selenium/executors/trio_threads/cdp/page.py +0 -374
- osn_selenium/executors/trio_threads/cdp/performance.py +0 -46
- osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -36
- osn_selenium/executors/trio_threads/cdp/preload.py +0 -30
- osn_selenium/executors/trio_threads/cdp/profiler.py +0 -71
- osn_selenium/executors/trio_threads/cdp/pwa.py +0 -64
- osn_selenium/executors/trio_threads/cdp/runtime.py +0 -230
- osn_selenium/executors/trio_threads/cdp/schema.py +0 -32
- osn_selenium/executors/trio_threads/cdp/security.py +0 -43
- osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -69
- osn_selenium/executors/trio_threads/cdp/storage.py +0 -162
- osn_selenium/executors/trio_threads/cdp/system_info.py +0 -43
- osn_selenium/executors/trio_threads/cdp/target.py +0 -156
- osn_selenium/executors/trio_threads/cdp/tethering.py +0 -34
- osn_selenium/executors/trio_threads/cdp/tracing.py +0 -71
- osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -37
- osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -95
- osn_selenium/executors/unified/cdp/accessibility.py +0 -81
- osn_selenium/executors/unified/cdp/animation.py +0 -50
- osn_selenium/executors/unified/cdp/audits.py +0 -45
- osn_selenium/executors/unified/cdp/autofill.py +0 -41
- osn_selenium/executors/unified/cdp/background_service.py +0 -24
- osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -132
- osn_selenium/executors/unified/cdp/browser.py +0 -143
- osn_selenium/executors/unified/cdp/cache_storage.py +0 -69
- osn_selenium/executors/unified/cdp/cast.py +0 -32
- osn_selenium/executors/unified/cdp/console.py +0 -18
- osn_selenium/executors/unified/cdp/css.py +0 -237
- osn_selenium/executors/unified/cdp/debugger.py +0 -243
- osn_selenium/executors/unified/cdp/device_access.py +0 -21
- osn_selenium/executors/unified/cdp/device_orientation.py +0 -18
- osn_selenium/executors/unified/cdp/dom.py +0 -380
- osn_selenium/executors/unified/cdp/dom_debugger.py +0 -65
- osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -58
- osn_selenium/executors/unified/cdp/dom_storage.py +0 -38
- osn_selenium/executors/unified/cdp/emulation.py +0 -312
- osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -24
- osn_selenium/executors/unified/cdp/extensions.py +0 -45
- osn_selenium/executors/unified/cdp/fed_cm.py +0 -51
- osn_selenium/executors/unified/cdp/fetch.py +0 -111
- osn_selenium/executors/unified/cdp/file_system.py +0 -15
- osn_selenium/executors/unified/cdp/headless_experimental.py +0 -38
- osn_selenium/executors/unified/cdp/heap_profiler.py +0 -101
- osn_selenium/executors/unified/cdp/indexed_db.py +0 -157
- osn_selenium/executors/unified/cdp/input.py +0 -254
- osn_selenium/executors/unified/cdp/inspector.py +0 -15
- osn_selenium/executors/unified/cdp/io.py +0 -29
- osn_selenium/executors/unified/cdp/layer_tree.py +0 -71
- osn_selenium/executors/unified/cdp/log.py +0 -29
- osn_selenium/executors/unified/cdp/media.py +0 -15
- osn_selenium/executors/unified/cdp/memory.py +0 -59
- osn_selenium/executors/unified/cdp/network.py +0 -323
- osn_selenium/executors/unified/cdp/overlay.py +0 -209
- osn_selenium/executors/unified/cdp/page.py +0 -410
- osn_selenium/executors/unified/cdp/performance.py +0 -27
- osn_selenium/executors/unified/cdp/performance_timeline.py +0 -17
- osn_selenium/executors/unified/cdp/preload.py +0 -15
- osn_selenium/executors/unified/cdp/profiler.py +0 -55
- osn_selenium/executors/unified/cdp/pwa.py +0 -55
- osn_selenium/executors/unified/cdp/runtime.py +0 -245
- osn_selenium/executors/unified/cdp/schema.py +0 -17
- osn_selenium/executors/unified/cdp/security.py +0 -27
- osn_selenium/executors/unified/cdp/service_worker.py +0 -62
- osn_selenium/executors/unified/cdp/storage.py +0 -178
- osn_selenium/executors/unified/cdp/system_info.py +0 -24
- osn_selenium/executors/unified/cdp/target.py +0 -165
- osn_selenium/executors/unified/cdp/tethering.py +0 -15
- osn_selenium/executors/unified/cdp/tracing.py +0 -62
- osn_selenium/executors/unified/cdp/web_audio.py +0 -18
- osn_selenium/executors/unified/cdp/web_authn.py +0 -103
- osn_selenium-1.0.0.dist-info/RECORD +0 -608
- /osn_selenium/{dev_tools/_exception_helpers.py → _exception_helpers.py} +0 -0
- /osn_selenium/executors/{unified/cdp → trio_bidi}/__init__.py +0 -0
- {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import math
|
|
2
|
+
import trio
|
|
3
|
+
from selenium.webdriver.common.by import By
|
|
4
|
+
from osn_selenium.trio_bidi.mixin import TrioBiDiMixin
|
|
5
|
+
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
6
|
+
from osn_selenium.instances.trio_bidi.shadow_root import ShadowRoot
|
|
7
|
+
from osn_selenium.exceptions.instance import (
|
|
8
|
+
CannotConvertTypeError
|
|
9
|
+
)
|
|
10
|
+
from osn_selenium.instances.unified.web_element import UnifiedWebElement
|
|
11
|
+
from osn_selenium.abstract.instances.web_element import AbstractWebElement
|
|
12
|
+
from osn_selenium.instances.trio_bidi.web_driver_wait import WebDriverWait
|
|
13
|
+
from typing import (
|
|
14
|
+
Any,
|
|
15
|
+
Dict,
|
|
16
|
+
Iterable,
|
|
17
|
+
List,
|
|
18
|
+
Optional,
|
|
19
|
+
Self,
|
|
20
|
+
Union
|
|
21
|
+
)
|
|
22
|
+
from selenium.webdriver.remote.webelement import (
|
|
23
|
+
WebElement as legacyWebElement
|
|
24
|
+
)
|
|
25
|
+
from osn_selenium.instances.convert import (
|
|
26
|
+
get_legacy_instance,
|
|
27
|
+
get_trio_thread_instance_wrapper
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
__all__ = ["WebElement"]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class WebElement(UnifiedWebElement, TrioBiDiMixin, AbstractWebElement):
|
|
35
|
+
"""
|
|
36
|
+
Represents an HTML element in the DOM, offering methods for interaction (click, type),
|
|
37
|
+
property retrieval, and finding child elements.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
def __init__(
|
|
41
|
+
self,
|
|
42
|
+
selenium_web_element: legacyWebElement,
|
|
43
|
+
lock: trio.Lock,
|
|
44
|
+
limiter: trio.CapacityLimiter,
|
|
45
|
+
trio_token: Optional[trio.lowlevel.TrioToken] = None,
|
|
46
|
+
bidi_buffer_size: Union[int, float] = math.inf,
|
|
47
|
+
) -> None:
|
|
48
|
+
"""
|
|
49
|
+
Initializes the WebElement wrapper.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
selenium_web_element (legacyWebElement): The legacy Selenium WebElement instance to wrap.
|
|
53
|
+
lock (trio.Lock): A Trio lock for managing concurrent access.
|
|
54
|
+
limiter (trio.CapacityLimiter): A Trio capacity limiter for rate limiting.
|
|
55
|
+
trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
|
|
56
|
+
bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
UnifiedWebElement.__init__(self, selenium_web_element=selenium_web_element)
|
|
60
|
+
|
|
61
|
+
TrioBiDiMixin.__init__(
|
|
62
|
+
self,
|
|
63
|
+
lock=lock,
|
|
64
|
+
limiter=limiter,
|
|
65
|
+
token=trio_token,
|
|
66
|
+
buffer_size=bidi_buffer_size
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
async def accessible_name(self) -> str:
|
|
70
|
+
return await self.sync_to_trio(sync_function=self._accessible_name_impl)()
|
|
71
|
+
|
|
72
|
+
async def aria_role(self) -> str:
|
|
73
|
+
return await self.sync_to_trio(sync_function=self._aria_role_impl)()
|
|
74
|
+
|
|
75
|
+
async def clear(self) -> None:
|
|
76
|
+
await self.sync_to_trio(sync_function=self._clear_impl)()
|
|
77
|
+
|
|
78
|
+
async def click(self) -> None:
|
|
79
|
+
await self.sync_to_trio(sync_function=self._click_impl)()
|
|
80
|
+
|
|
81
|
+
async def find_element(self, by: str = By.ID, value: Any = None) -> Self:
|
|
82
|
+
web_element = await self.sync_to_trio(sync_function=self._find_element_impl)(by=by, value=value)
|
|
83
|
+
|
|
84
|
+
return get_trio_thread_instance_wrapper(
|
|
85
|
+
wrapper_class=self.__class__,
|
|
86
|
+
legacy_object=web_element,
|
|
87
|
+
lock=self._lock,
|
|
88
|
+
limiter=self._capacity_limiter
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
async def find_elements(self, by: str = By.ID, value: Any = None) -> List[Self]:
|
|
92
|
+
web_elements = await self.sync_to_trio(sync_function=self._find_elements_impl)(by=by, value=value)
|
|
93
|
+
|
|
94
|
+
return [
|
|
95
|
+
get_trio_thread_instance_wrapper(
|
|
96
|
+
wrapper_class=self.__class__,
|
|
97
|
+
legacy_object=web_element,
|
|
98
|
+
lock=self._lock,
|
|
99
|
+
limiter=self._capacity_limiter,
|
|
100
|
+
)
|
|
101
|
+
for web_element in web_elements
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
async def get_attribute(self, name: str) -> Optional[str]:
|
|
105
|
+
return await self.sync_to_trio(sync_function=self._get_attribute_impl)(name=name)
|
|
106
|
+
|
|
107
|
+
async def get_dom_attribute(self, name: str) -> Optional[str]:
|
|
108
|
+
return await self.sync_to_trio(sync_function=self._get_dom_attribute_impl)(name=name)
|
|
109
|
+
|
|
110
|
+
async def get_property(self, name: str) -> Any:
|
|
111
|
+
return await self.sync_to_trio(sync_function=self._get_property_impl)(name=name)
|
|
112
|
+
|
|
113
|
+
async def id(self) -> str:
|
|
114
|
+
return await self.sync_to_trio(sync_function=self._id_impl)()
|
|
115
|
+
|
|
116
|
+
async def is_displayed(self) -> bool:
|
|
117
|
+
return await self.sync_to_trio(sync_function=self._is_displayed_impl)()
|
|
118
|
+
|
|
119
|
+
async def is_enabled(self) -> bool:
|
|
120
|
+
return await self.sync_to_trio(sync_function=self._is_enabled_impl)()
|
|
121
|
+
|
|
122
|
+
async def is_selected(self) -> bool:
|
|
123
|
+
return await self.sync_to_trio(sync_function=self._is_selected_impl)()
|
|
124
|
+
|
|
125
|
+
@property
|
|
126
|
+
def legacy(self) -> legacyWebElement:
|
|
127
|
+
return self._legacy_impl
|
|
128
|
+
|
|
129
|
+
async def location(self) -> Dict:
|
|
130
|
+
return await self.sync_to_trio(sync_function=self._location_impl)()
|
|
131
|
+
|
|
132
|
+
async def location_once_scrolled_into_view(self) -> Dict:
|
|
133
|
+
return await self.sync_to_trio(sync_function=self._location_once_scrolled_into_view_impl)()
|
|
134
|
+
|
|
135
|
+
@classmethod
|
|
136
|
+
def from_legacy(
|
|
137
|
+
cls,
|
|
138
|
+
legacy_object: WEB_ELEMENT_TYPEHINT,
|
|
139
|
+
lock: trio.Lock,
|
|
140
|
+
limiter: trio.CapacityLimiter,
|
|
141
|
+
trio_token: Optional[trio.lowlevel.TrioToken] = None,
|
|
142
|
+
bidi_buffer_size: Union[int, float] = math.inf,
|
|
143
|
+
) -> Self:
|
|
144
|
+
"""
|
|
145
|
+
Creates an instance from a legacy Selenium WebElement object.
|
|
146
|
+
|
|
147
|
+
This factory method is used to wrap an existing Selenium WebElement
|
|
148
|
+
instance into the new interface.
|
|
149
|
+
|
|
150
|
+
Args:
|
|
151
|
+
legacy_object (WEB_ELEMENT_TYPEHINT): The legacy Selenium WebElement instance or its wrapper.
|
|
152
|
+
lock (trio.Lock): A Trio lock for managing concurrent access.
|
|
153
|
+
limiter (trio.CapacityLimiter): A Trio capacity limiter for rate limiting.
|
|
154
|
+
trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
|
|
155
|
+
bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
|
|
156
|
+
|
|
157
|
+
Returns:
|
|
158
|
+
Self: A new instance of a class implementing WebElement.
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
legacy_element_obj = get_legacy_instance(instance=legacy_object)
|
|
162
|
+
|
|
163
|
+
if not isinstance(legacy_element_obj, legacyWebElement):
|
|
164
|
+
raise CannotConvertTypeError(from_=legacyWebElement, to_=legacy_object)
|
|
165
|
+
|
|
166
|
+
return cls(
|
|
167
|
+
selenium_web_element=legacy_element_obj,
|
|
168
|
+
lock=lock,
|
|
169
|
+
limiter=limiter,
|
|
170
|
+
trio_token=trio_token,
|
|
171
|
+
bidi_buffer_size=bidi_buffer_size,
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
async def parent(self) -> Self:
|
|
175
|
+
parent = await self.sync_to_trio(sync_function=self._parent_impl)()
|
|
176
|
+
|
|
177
|
+
return self.from_legacy(legacy_object=parent, lock=self._lock, limiter=self._capacity_limiter)
|
|
178
|
+
|
|
179
|
+
async def rect(self) -> Dict:
|
|
180
|
+
return await self.sync_to_trio(sync_function=self._rect_impl)()
|
|
181
|
+
|
|
182
|
+
async def screenshot(self, filename: str) -> bool:
|
|
183
|
+
return await self.sync_to_trio(sync_function=self._screenshot_impl)(filename=filename)
|
|
184
|
+
|
|
185
|
+
async def screenshot_as_base64(self) -> str:
|
|
186
|
+
return await self.sync_to_trio(sync_function=self._screenshot_as_base64_impl)()
|
|
187
|
+
|
|
188
|
+
async def screenshot_as_png(self) -> bytes:
|
|
189
|
+
return await self.sync_to_trio(sync_function=self._screenshot_as_png_impl)()
|
|
190
|
+
|
|
191
|
+
async def send_keys(self, *value: str) -> None:
|
|
192
|
+
await self.sync_to_trio(sync_function=self._send_keys_impl)(*value)
|
|
193
|
+
|
|
194
|
+
async def session_id(self) -> str:
|
|
195
|
+
return await self.sync_to_trio(sync_function=self._session_id_impl)()
|
|
196
|
+
|
|
197
|
+
async def shadow_root(self) -> ShadowRoot:
|
|
198
|
+
shadow_root = await self.sync_to_trio(sync_function=self._shadow_root_impl)()
|
|
199
|
+
|
|
200
|
+
return get_trio_thread_instance_wrapper(
|
|
201
|
+
wrapper_class=ShadowRoot,
|
|
202
|
+
legacy_object=shadow_root,
|
|
203
|
+
lock=self._lock,
|
|
204
|
+
limiter=self._capacity_limiter,
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
async def size(self) -> Dict:
|
|
208
|
+
return await self.sync_to_trio(sync_function=self._size_impl)()
|
|
209
|
+
|
|
210
|
+
async def submit(self) -> None:
|
|
211
|
+
await self.sync_to_trio(sync_function=self._submit_impl)()
|
|
212
|
+
|
|
213
|
+
async def tag_name(self) -> str:
|
|
214
|
+
return await self.sync_to_trio(sync_function=self._tag_name_impl)()
|
|
215
|
+
|
|
216
|
+
async def text(self) -> str:
|
|
217
|
+
return await self.sync_to_trio(sync_function=self._text_impl)()
|
|
218
|
+
|
|
219
|
+
async def value_of_css_property(self, property_name: str) -> str:
|
|
220
|
+
return await self.sync_to_trio(sync_function=self._value_of_css_property_impl)(property_name=property_name)
|
|
221
|
+
|
|
222
|
+
def web_driver_wait(
|
|
223
|
+
self,
|
|
224
|
+
timeout: float,
|
|
225
|
+
poll_frequency: float = 0.5,
|
|
226
|
+
ignored_exceptions: Optional[Iterable[BaseException]] = None,
|
|
227
|
+
) -> WebDriverWait:
|
|
228
|
+
web_driver_wait = self._web_driver_wait_impl(
|
|
229
|
+
timeout=timeout,
|
|
230
|
+
poll_frequency=poll_frequency,
|
|
231
|
+
ignored_exceptions=ignored_exceptions,
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
return get_trio_thread_instance_wrapper(
|
|
235
|
+
wrapper_class=WebDriverWait,
|
|
236
|
+
legacy_object=web_driver_wait,
|
|
237
|
+
lock=self._lock,
|
|
238
|
+
limiter=self._capacity_limiter,
|
|
239
|
+
)
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
from osn_selenium.instances.trio_threads.action_chains.move import MoveMixin
|
|
1
2
|
from osn_selenium.abstract.instances.action_chains import AbstractActionChains
|
|
2
3
|
from osn_selenium.instances.trio_threads.action_chains.click import ClickMixin
|
|
3
4
|
from osn_selenium.instances.trio_threads.action_chains.utils import UtilsMixin
|
|
5
|
+
from osn_selenium.instances.trio_threads.action_chains.scroll import ScrollMixin
|
|
4
6
|
from osn_selenium.instances.trio_threads.action_chains.hm_move import HMMoveMixin
|
|
7
|
+
from osn_selenium.instances.trio_threads.action_chains.keyboard import KeyboardMixin
|
|
5
8
|
from osn_selenium.instances.trio_threads.action_chains.hm_scroll import HMScrollMixin
|
|
6
9
|
from osn_selenium.instances.trio_threads.action_chains.hm_keyboard import HMKeyboardMixin
|
|
7
10
|
from osn_selenium.instances.trio_threads.action_chains.drag_and_drop import DragAndDropMixin
|
|
@@ -17,6 +20,9 @@ class ActionChains(
|
|
|
17
20
|
HMKeyboardMixin,
|
|
18
21
|
HMMoveMixin,
|
|
19
22
|
HMScrollMixin,
|
|
23
|
+
KeyboardMixin,
|
|
24
|
+
MoveMixin,
|
|
25
|
+
ScrollMixin,
|
|
20
26
|
AbstractActionChains,
|
|
21
27
|
):
|
|
22
28
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
from typing import Optional, Self
|
|
3
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
4
|
from osn_selenium.instances._typehints import ALERT_TYPEHINT
|
|
5
5
|
from osn_selenium.instances.unified.alert import UnifiedAlert
|
|
6
6
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
from typing import List, Self
|
|
3
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
4
|
from osn_selenium.instances._typehints import BROWSER_TYPEHINT
|
|
5
5
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
6
6
|
from osn_selenium.instances.unified.browser import UnifiedBrowser
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import trio
|
|
2
|
-
from osn_selenium.
|
|
2
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
3
3
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
4
4
|
from osn_selenium.exceptions.instance import (
|
|
5
5
|
CannotConvertTypeError
|
|
@@ -58,8 +58,8 @@ class BrowsingContext(UnifiedBrowsingContext, TrioThreadMixin, AbstractBrowsingC
|
|
|
58
58
|
|
|
59
59
|
TrioThreadMixin.__init__(self, lock=lock, limiter=limiter)
|
|
60
60
|
|
|
61
|
-
async def activate(self, context: str) ->
|
|
62
|
-
|
|
61
|
+
async def activate(self, context: str) -> None:
|
|
62
|
+
await self.sync_to_trio(sync_function=self._activate_impl)(context=context)
|
|
63
63
|
|
|
64
64
|
async def add_event_handler(
|
|
65
65
|
self,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
from typing import List, Optional, Self
|
|
3
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
4
|
from selenium.webdriver.common.fedcm.account import Account
|
|
5
5
|
from osn_selenium.instances._typehints import DIALOG_TYPEHINT
|
|
6
6
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import trio
|
|
2
|
-
from osn_selenium.base_mixin import TrioThreadMixin
|
|
3
2
|
from typing import (
|
|
4
3
|
Dict,
|
|
5
4
|
List,
|
|
6
5
|
Optional,
|
|
7
6
|
Self
|
|
8
7
|
)
|
|
8
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
9
9
|
from osn_selenium.instances._typehints import FEDCM_TYPEHINT
|
|
10
10
|
from osn_selenium.instances.unified.fedcm import UnifiedFedCM
|
|
11
11
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
from typing import List, Self, Union
|
|
3
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
4
|
from osn_selenium.instances._typehints import MOBILE_TYPEHINT
|
|
5
5
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
6
6
|
from osn_selenium.instances.unified.mobile import UnifiedMobile
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import trio
|
|
2
|
-
from osn_selenium.base_mixin import TrioThreadMixin
|
|
3
2
|
from typing import (
|
|
4
3
|
Callable,
|
|
5
4
|
List,
|
|
6
5
|
Optional,
|
|
7
6
|
Self
|
|
8
7
|
)
|
|
8
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
9
9
|
from osn_selenium.instances._typehints import NETWORK_TYPEHINT
|
|
10
10
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
11
11
|
from osn_selenium.instances.unified.network import UnifiedNetwork
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import trio
|
|
2
|
-
from typing import
|
|
3
|
-
|
|
2
|
+
from typing import (
|
|
3
|
+
Any,
|
|
4
|
+
Callable,
|
|
5
|
+
Dict,
|
|
6
|
+
Self
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
9
|
from osn_selenium.instances._typehints import SCRIPT_TYPEHINT
|
|
5
10
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
6
11
|
from osn_selenium.instances.unified.script import UnifiedScript
|
|
@@ -49,7 +54,7 @@ class Script(UnifiedScript, TrioThreadMixin, AbstractScript):
|
|
|
49
54
|
async def add_javascript_error_handler(self, handler: Callable[[Any], None]) -> int:
|
|
50
55
|
return await self.sync_to_trio(sync_function=self._add_javascript_error_handler_impl)(handler=handler)
|
|
51
56
|
|
|
52
|
-
async def execute(self, script: str, *args: Any) -> Any:
|
|
57
|
+
async def execute(self, script: str, *args: Any) -> Dict[str, Any]:
|
|
53
58
|
return await self.sync_to_trio(sync_function=self._execute_impl)(script, *args)
|
|
54
59
|
|
|
55
60
|
@classmethod
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
from selenium.webdriver.common.by import By
|
|
3
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
|
+
from osn_selenium.instances._typehints import SHADOW_ROOT_TYPEHINT
|
|
4
5
|
from typing import (
|
|
5
6
|
List,
|
|
6
7
|
Optional,
|
|
7
8
|
Self,
|
|
8
|
-
TYPE_CHECKING
|
|
9
|
+
TYPE_CHECKING,
|
|
10
|
+
Type
|
|
9
11
|
)
|
|
10
|
-
from osn_selenium.instances._typehints import SHADOW_ROOT_TYPEHINT
|
|
11
12
|
from osn_selenium.exceptions.instance import (
|
|
12
13
|
CannotConvertTypeError
|
|
13
14
|
)
|
|
@@ -16,6 +17,9 @@ from osn_selenium.abstract.instances.shadow_root import AbstractShadowRoot
|
|
|
16
17
|
from selenium.webdriver.remote.shadowroot import (
|
|
17
18
|
ShadowRoot as legacyShadowRoot
|
|
18
19
|
)
|
|
20
|
+
from selenium.webdriver.remote.webelement import (
|
|
21
|
+
WebElement as legacyWebElement
|
|
22
|
+
)
|
|
19
23
|
from osn_selenium.instances.convert import (
|
|
20
24
|
get_legacy_instance,
|
|
21
25
|
get_trio_thread_instance_wrapper
|
|
@@ -27,6 +31,39 @@ __all__ = ["ShadowRoot"]
|
|
|
27
31
|
if TYPE_CHECKING:
|
|
28
32
|
from osn_selenium.instances.trio_threads.web_element import WebElement
|
|
29
33
|
|
|
34
|
+
_WEB_ELEMENT_TYPE: Optional[Type["WebElement"]] = None
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _build_web_element(
|
|
38
|
+
legacy_element: legacyWebElement,
|
|
39
|
+
lock: trio.Lock,
|
|
40
|
+
limiter: trio.CapacityLimiter,
|
|
41
|
+
):
|
|
42
|
+
"""
|
|
43
|
+
Builds a wrapped WebElement from a legacy element.
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
legacy_element (legacyWebElement): The legacy Selenium WebElement instance.
|
|
47
|
+
lock (trio.Lock): A Trio lock for managing concurrent access.
|
|
48
|
+
limiter (trio.CapacityLimiter): A Trio capacity limiter for rate limiting.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
WebElement: The wrapped WebElement instance.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
global _WEB_ELEMENT_TYPE
|
|
55
|
+
|
|
56
|
+
if _WEB_ELEMENT_TYPE is None:
|
|
57
|
+
from osn_selenium.instances.trio_threads.web_element import WebElement
|
|
58
|
+
_WEB_ELEMENT_TYPE = WebElement
|
|
59
|
+
|
|
60
|
+
return get_trio_thread_instance_wrapper(
|
|
61
|
+
wrapper_class=_WEB_ELEMENT_TYPE,
|
|
62
|
+
legacy_object=legacy_element,
|
|
63
|
+
lock=lock,
|
|
64
|
+
limiter=limiter,
|
|
65
|
+
)
|
|
66
|
+
|
|
30
67
|
|
|
31
68
|
class ShadowRoot(UnifiedShadowRoot, TrioThreadMixin, AbstractShadowRoot):
|
|
32
69
|
"""
|
|
@@ -58,26 +95,20 @@ class ShadowRoot(UnifiedShadowRoot, TrioThreadMixin, AbstractShadowRoot):
|
|
|
58
95
|
async def find_element(self, by: str = By.ID, value: Optional[str] = None) -> "WebElement":
|
|
59
96
|
legacy_element = await self.sync_to_trio(sync_function=self._find_element_impl)(by=by, value=value)
|
|
60
97
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return get_trio_thread_instance_wrapper(
|
|
64
|
-
wrapper_class=WebElement,
|
|
65
|
-
legacy_object=legacy_element,
|
|
98
|
+
return _build_web_element(
|
|
99
|
+
legacy_element=legacy_element,
|
|
66
100
|
lock=self._lock,
|
|
67
|
-
limiter=self._capacity_limiter
|
|
101
|
+
limiter=self._capacity_limiter,
|
|
68
102
|
)
|
|
69
103
|
|
|
70
104
|
async def find_elements(self, by: str = By.ID, value: Optional[str] = None) -> List["WebElement"]:
|
|
71
105
|
legacy_elements = await self.sync_to_trio(sync_function=self._find_elements_impl)(by=by, value=value)
|
|
72
106
|
|
|
73
|
-
from osn_selenium.instances.trio_threads.web_element import WebElement
|
|
74
|
-
|
|
75
107
|
return [
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
legacy_object=legacy_element,
|
|
108
|
+
_build_web_element(
|
|
109
|
+
legacy_element=legacy_element,
|
|
79
110
|
lock=self._lock,
|
|
80
|
-
limiter=self._capacity_limiter
|
|
111
|
+
limiter=self._capacity_limiter,
|
|
81
112
|
)
|
|
82
113
|
for legacy_element in legacy_elements
|
|
83
114
|
]
|
|
@@ -4,7 +4,7 @@ from typing import (
|
|
|
4
4
|
Self,
|
|
5
5
|
Union
|
|
6
6
|
)
|
|
7
|
-
from osn_selenium.
|
|
7
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
8
8
|
from osn_selenium.instances._typehints import STORAGE_TYPEHINT
|
|
9
9
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
10
10
|
from osn_selenium.instances.unified.storage import UnifiedStorage
|
|
@@ -4,7 +4,7 @@ from typing import (
|
|
|
4
4
|
Self,
|
|
5
5
|
Union
|
|
6
6
|
)
|
|
7
|
-
from osn_selenium.
|
|
7
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
8
8
|
from osn_selenium.instances.trio_threads.alert import Alert
|
|
9
9
|
from osn_selenium.instances.unified.switch_to import UnifiedSwitchTo
|
|
10
10
|
from osn_selenium.abstract.instances.switch_to import AbstractSwitchTo
|
|
@@ -4,7 +4,7 @@ from typing import (
|
|
|
4
4
|
Self,
|
|
5
5
|
TypeVar
|
|
6
6
|
)
|
|
7
|
-
from osn_selenium.
|
|
7
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
8
8
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
9
9
|
from osn_selenium.exceptions.instance import (
|
|
10
10
|
CannotConvertTypeError
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
from selenium.webdriver.common.by import By
|
|
3
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
4
|
from osn_selenium.instances._typehints import WEB_ELEMENT_TYPEHINT
|
|
5
5
|
from typing import (
|
|
6
6
|
Any,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import trio
|
|
2
|
-
from osn_selenium.base_mixin import TrioThreadMixin
|
|
3
2
|
from typing import (
|
|
4
3
|
Dict,
|
|
5
4
|
Optional,
|
|
6
5
|
Self,
|
|
7
6
|
Union
|
|
8
7
|
)
|
|
8
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
9
9
|
from osn_selenium.instances.convert import get_legacy_instance
|
|
10
10
|
from osn_selenium.exceptions.instance import (
|
|
11
11
|
CannotConvertTypeError
|
|
@@ -26,8 +26,8 @@ class UnifiedBrowsingContext:
|
|
|
26
26
|
|
|
27
27
|
self._selenium_browsing_context = selenium_browsing_context
|
|
28
28
|
|
|
29
|
-
def _activate_impl(self, context: str) ->
|
|
30
|
-
|
|
29
|
+
def _activate_impl(self, context: str) -> None:
|
|
30
|
+
self._legacy_impl.activate(context)
|
|
31
31
|
|
|
32
32
|
def _add_event_handler_impl(
|
|
33
33
|
self,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Any, Callable
|
|
1
|
+
from typing import Any, Callable, Dict
|
|
2
2
|
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
3
3
|
from selenium.webdriver.common.bidi.script import (
|
|
4
4
|
Script as legacyScript
|
|
@@ -21,7 +21,7 @@ class UnifiedScript:
|
|
|
21
21
|
def _add_javascript_error_handler_impl(self, handler: Callable[[Any], None]) -> int:
|
|
22
22
|
return self._legacy_impl.add_javascript_error_handler(handler=handler)
|
|
23
23
|
|
|
24
|
-
def _execute_impl(self, script: str, *args: Any) -> Any:
|
|
24
|
+
def _execute_impl(self, script: str, *args: Any) -> Dict[str, Any]:
|
|
25
25
|
return self._legacy_impl.execute(script, *args)
|
|
26
26
|
|
|
27
27
|
@property
|
|
@@ -7,6 +7,7 @@ from typing import (
|
|
|
7
7
|
List,
|
|
8
8
|
Optional
|
|
9
9
|
)
|
|
10
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
10
11
|
from selenium.webdriver.remote.shadowroot import (
|
|
11
12
|
ShadowRoot as legacyShadowRoot
|
|
12
13
|
)
|
|
@@ -24,10 +25,7 @@ __all__ = ["UnifiedWebElement"]
|
|
|
24
25
|
class UnifiedWebElement:
|
|
25
26
|
def __init__(self, selenium_web_element: legacyWebElement):
|
|
26
27
|
if not isinstance(selenium_web_element, legacyWebElement):
|
|
27
|
-
raise
|
|
28
|
-
expected_class=legacyWebElement,
|
|
29
|
-
received_instance=selenium_web_element
|
|
30
|
-
)
|
|
28
|
+
raise NotExpectedTypeError(expected_type=legacyWebElement, received_instance=selenium_web_element)
|
|
31
29
|
|
|
32
30
|
self._selenium_web_element = selenium_web_element
|
|
33
31
|
|
|
@@ -95,7 +93,7 @@ class UnifiedWebElement:
|
|
|
95
93
|
def _parent_impl(self) -> Any:
|
|
96
94
|
return self._legacy_impl.parent
|
|
97
95
|
|
|
98
|
-
def _rect_impl(self) -> Dict:
|
|
96
|
+
def _rect_impl(self) -> Dict[str, int]:
|
|
99
97
|
return self._legacy_impl.rect
|
|
100
98
|
|
|
101
99
|
def _screenshot_as_base64_impl(self) -> str:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
from copy import deepcopy
|
|
1
2
|
from pydantic import Field
|
|
2
3
|
from typing import Dict, List, Literal
|
|
3
|
-
from osn_selenium.
|
|
4
|
+
from osn_selenium._base_models import DictModel
|
|
4
5
|
from osn_selenium.javascript.functions import get_js_scripts
|
|
5
6
|
from osn_selenium.javascript.fingerprint._functions import add_code_level
|
|
6
7
|
from osn_selenium.javascript.fingerprint.registry.models import RegistryItem
|
|
@@ -42,7 +43,7 @@ class FingerprintSettings(DictModel):
|
|
|
42
43
|
"""
|
|
43
44
|
|
|
44
45
|
if self.use_preset_registry:
|
|
45
|
-
registry_ = FINGERPRINT_REGISTRY
|
|
46
|
+
registry_ = deepcopy(FINGERPRINT_REGISTRY)
|
|
46
47
|
else:
|
|
47
48
|
registry_ = {}
|
|
48
49
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from pydantic import Field
|
|
2
2
|
from typing import Any, Dict, Optional
|
|
3
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium._base_models import DictModel
|
|
4
4
|
from osn_selenium.javascript.fingerprint._typehints import SPOOF_RULE_TYPEHINT
|
|
5
5
|
from osn_selenium.javascript.fingerprint.registry._typehints import ITEM_TYPE_TYPEHINT
|
|
6
6
|
|