osn-selenium 1.1.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/_decorators.py +57 -0
- osn_selenium/_trio_threads_helpers.py +157 -0
- osn_selenium/_typehints.py +1 -1
- 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/dev_tools/_decorators.py +1 -42
- osn_selenium/dev_tools/_functions.py +2 -4
- osn_selenium/dev_tools/domains/__init__.py +1 -1
- osn_selenium/dev_tools/domains/fetch.py +5 -7
- osn_selenium/dev_tools/domains_default/fetch.py +1 -1
- osn_selenium/dev_tools/logger/main.py +9 -9
- osn_selenium/dev_tools/logger/target.py +7 -7
- osn_selenium/dev_tools/manager/base.py +10 -19
- osn_selenium/dev_tools/manager/lifecycle.py +83 -74
- osn_selenium/dev_tools/manager/logging.py +1 -1
- osn_selenium/dev_tools/manager/targets.py +13 -5
- osn_selenium/dev_tools/settings.py +4 -4
- osn_selenium/dev_tools/target/base.py +18 -11
- 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 -43
- osn_selenium/dev_tools/target/logging.py +1 -1
- 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 +2 -2
- 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 +0 -5
- 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 +0 -5
- osn_selenium/flags/base.py +6 -4
- osn_selenium/flags/blink.py +2 -2
- osn_selenium/flags/chrome.py +6 -6
- osn_selenium/flags/edge.py +6 -6
- osn_selenium/instances/convert.py +44 -3
- osn_selenium/instances/protocols.py +47 -1
- osn_selenium/instances/sync/browsing_context.py +2 -2
- osn_selenium/instances/sync/script.py +7 -2
- 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/browsing_context.py +2 -2
- osn_selenium/instances/trio_threads/fedcm.py +1 -1
- osn_selenium/instances/trio_threads/network.py +1 -1
- osn_selenium/instances/trio_threads/script.py +7 -2
- 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 +2 -1
- 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/trio_threads_mixin.py +22 -68
- osn_selenium/webdrivers/_args_helpers.py +118 -5
- osn_selenium/webdrivers/_typehints.py +9 -3
- osn_selenium/webdrivers/protocols.py +81 -1
- osn_selenium/webdrivers/sync/blink/base.py +10 -0
- osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
- osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
- osn_selenium/webdrivers/sync/core/base.py +3 -11
- 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/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/edge/settings.py +6 -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 +7 -1
- osn_selenium/webdrivers/trio_threads/blink/base.py +14 -0
- osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
- 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 +0 -10
- 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 +4 -16
- osn_selenium/webdrivers/trio_threads/core/capture.py +3 -2
- osn_selenium/webdrivers/trio_threads/core/file.py +3 -2
- osn_selenium/webdrivers/trio_threads/core/lifecycle.py +44 -10
- osn_selenium/webdrivers/trio_threads/core/script.py +3 -2
- 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 +4 -4
- 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/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/yandex/settings.py +1 -1
- osn_selenium/webdrivers/unified/blink/base.py +5 -1
- osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
- osn_selenium/webdrivers/unified/chrome/base.py +5 -1
- osn_selenium/webdrivers/unified/core/auth.py +4 -2
- osn_selenium/webdrivers/unified/core/base.py +16 -10
- 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 +5 -1
- osn_selenium/webdrivers/unified/yandex/base.py +5 -1
- {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/METADATA +3 -2
- osn_selenium-1.2.0.dist-info/RECORD +480 -0
- 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/base_mixin.py +0 -122
- 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.1.0.dist-info/RECORD +0 -615
- /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.1.0.dist-info → osn_selenium-1.2.0.dist-info}/WHEEL +0 -0
- {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from typing import Any, Dict
|
|
3
|
+
from selenium.webdriver.remote.command import Command
|
|
4
|
+
from osn_selenium.trio_bidi.mapping._js_snippets import WEB_ELEMENT
|
|
5
|
+
from osn_selenium.trio_bidi._typehints import (
|
|
6
|
+
CURRENT_BROWSING_CONTEXT_TYPEHINT,
|
|
7
|
+
MAP_REQUEST_FUNCTION_TYPEHINT,
|
|
8
|
+
REQUEST_PARAMS_TYPEHINT
|
|
9
|
+
)
|
|
10
|
+
from osn_selenium.trio_bidi.mapping.request_functions._args_helpers import (
|
|
11
|
+
build_locate_nodes_request,
|
|
12
|
+
build_script_call_request,
|
|
13
|
+
get_web_element_argument
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
__all__ = ["MAPPED_REQUEST_WEB_ELEMENT_COMMANDS"]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _map_send_keys_to_element_request(
|
|
21
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
22
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
23
|
+
) -> Dict[str, Any]:
|
|
24
|
+
"""
|
|
25
|
+
Maps send keys to element, handling file uploads if needed.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
params (REQUEST_PARAMS_TYPEHINT): Parameters containing 'text'.
|
|
29
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
Dict[str, Any]: The BiDi request.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
text_to_type = {"type": "string", "value": params.get("text", "")}
|
|
36
|
+
files = [line for line in text_to_type["value"].split("\n")]
|
|
37
|
+
|
|
38
|
+
if all(os.path.isfile(file) for file in files):
|
|
39
|
+
return {
|
|
40
|
+
"method": "input.setFiles",
|
|
41
|
+
"params": {
|
|
42
|
+
"context": context_id,
|
|
43
|
+
"element": get_web_element_argument(params),
|
|
44
|
+
"files": files,
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return build_script_call_request(
|
|
49
|
+
context_id=context_id,
|
|
50
|
+
function=WEB_ELEMENT.SEND_KEYS_TO,
|
|
51
|
+
args=[get_web_element_argument(params=params), text_to_type],
|
|
52
|
+
ownership="none",
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _map_is_element_selected_request(
|
|
57
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
58
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
59
|
+
) -> Dict[str, Any]:
|
|
60
|
+
"""
|
|
61
|
+
Maps is element selected via JS call.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
params (REQUEST_PARAMS_TYPEHINT): Element parameters.
|
|
65
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
Dict[str, Any]: The BiDi request.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
return build_script_call_request(
|
|
72
|
+
context_id=context_id,
|
|
73
|
+
function=WEB_ELEMENT.IS_SELECTED,
|
|
74
|
+
args=[get_web_element_argument(params=params)],
|
|
75
|
+
ownership="none",
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _map_is_element_enabled_request(
|
|
80
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
81
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
82
|
+
) -> Dict[str, Any]:
|
|
83
|
+
"""
|
|
84
|
+
Maps is element enabled via JS call.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
params (REQUEST_PARAMS_TYPEHINT): Element parameters.
|
|
88
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
89
|
+
|
|
90
|
+
Returns:
|
|
91
|
+
Dict[str, Any]: The BiDi request.
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
return build_script_call_request(
|
|
95
|
+
context_id=context_id,
|
|
96
|
+
function=WEB_ELEMENT.IS_ENABLED,
|
|
97
|
+
args=[get_web_element_argument(params=params)],
|
|
98
|
+
ownership="none",
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _map_get_shadow_root_request(
|
|
103
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
104
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
105
|
+
) -> Dict[str, Any]:
|
|
106
|
+
"""
|
|
107
|
+
Maps get shadow root via JS call with 'root' ownership.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
params (REQUEST_PARAMS_TYPEHINT): Element parameters.
|
|
111
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
112
|
+
|
|
113
|
+
Returns:
|
|
114
|
+
Dict[str, Any]: The BiDi request.
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
return build_script_call_request(
|
|
118
|
+
context_id=context_id,
|
|
119
|
+
function=WEB_ELEMENT.GET_SHADOW_ROOT,
|
|
120
|
+
args=[get_web_element_argument(params=params)],
|
|
121
|
+
ownership="root",
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def _map_get_element_text_request(
|
|
126
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
127
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
128
|
+
) -> Dict[str, Any]:
|
|
129
|
+
"""
|
|
130
|
+
Maps get element text via JS call.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
params (REQUEST_PARAMS_TYPEHINT): Element parameters.
|
|
134
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
Dict[str, Any]: The BiDi request.
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
return build_script_call_request(
|
|
141
|
+
context_id=context_id,
|
|
142
|
+
function=WEB_ELEMENT.GET_TEXT,
|
|
143
|
+
args=[get_web_element_argument(params=params)],
|
|
144
|
+
ownership="none",
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def _map_get_element_tag_name_request(
|
|
149
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
150
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
151
|
+
) -> Dict[str, Any]:
|
|
152
|
+
"""
|
|
153
|
+
Maps get element tag name via JS call.
|
|
154
|
+
|
|
155
|
+
Args:
|
|
156
|
+
params (REQUEST_PARAMS_TYPEHINT): Element parameters.
|
|
157
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
158
|
+
|
|
159
|
+
Returns:
|
|
160
|
+
Dict[str, Any]: The BiDi request.
|
|
161
|
+
"""
|
|
162
|
+
|
|
163
|
+
return build_script_call_request(
|
|
164
|
+
context_id=context_id,
|
|
165
|
+
function=WEB_ELEMENT.GET_TAG,
|
|
166
|
+
args=[get_web_element_argument(params=params)],
|
|
167
|
+
ownership="none",
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def _map_get_element_rect_request(
|
|
172
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
173
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
174
|
+
) -> Dict[str, Any]:
|
|
175
|
+
"""
|
|
176
|
+
Maps get element rect via JS call.
|
|
177
|
+
|
|
178
|
+
Args:
|
|
179
|
+
params (REQUEST_PARAMS_TYPEHINT): Element parameters.
|
|
180
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
181
|
+
|
|
182
|
+
Returns:
|
|
183
|
+
Dict[str, Any]: The BiDi request.
|
|
184
|
+
"""
|
|
185
|
+
|
|
186
|
+
return build_script_call_request(
|
|
187
|
+
context_id=context_id,
|
|
188
|
+
function=WEB_ELEMENT.GET_RECT,
|
|
189
|
+
args=[get_web_element_argument(params=params)],
|
|
190
|
+
ownership="none",
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def _map_get_element_property_request(
|
|
195
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
196
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
197
|
+
) -> Dict[str, Any]:
|
|
198
|
+
"""
|
|
199
|
+
Maps get element property via JS call.
|
|
200
|
+
|
|
201
|
+
Args:
|
|
202
|
+
params (REQUEST_PARAMS_TYPEHINT): Element and property name.
|
|
203
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
204
|
+
|
|
205
|
+
Returns:
|
|
206
|
+
Dict[str, Any]: The BiDi request.
|
|
207
|
+
"""
|
|
208
|
+
|
|
209
|
+
prop_name = {"type": "string", "value": params["name"]}
|
|
210
|
+
|
|
211
|
+
return build_script_call_request(
|
|
212
|
+
context_id=context_id,
|
|
213
|
+
function=WEB_ELEMENT.GET_PROPERTY,
|
|
214
|
+
args=[get_web_element_argument(params=params), prop_name],
|
|
215
|
+
ownership="none",
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def _map_get_element_css_value_request(
|
|
220
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
221
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
222
|
+
) -> Dict[str, Any]:
|
|
223
|
+
"""
|
|
224
|
+
Maps get computed CSS value via JS call.
|
|
225
|
+
|
|
226
|
+
Args:
|
|
227
|
+
params (REQUEST_PARAMS_TYPEHINT): Element and CSS property name.
|
|
228
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
229
|
+
|
|
230
|
+
Returns:
|
|
231
|
+
Dict[str, Any]: The BiDi request.
|
|
232
|
+
"""
|
|
233
|
+
|
|
234
|
+
prop_name = {"type": "string", "value": params["propertyName"]}
|
|
235
|
+
|
|
236
|
+
return build_script_call_request(
|
|
237
|
+
context_id=context_id,
|
|
238
|
+
function=WEB_ELEMENT.GET_CSS,
|
|
239
|
+
args=[get_web_element_argument(params=params), prop_name],
|
|
240
|
+
ownership="none",
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def _map_get_element_attribute_request(
|
|
245
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
246
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
247
|
+
) -> Dict[str, Any]:
|
|
248
|
+
"""
|
|
249
|
+
Maps get attribute via JS call.
|
|
250
|
+
|
|
251
|
+
Args:
|
|
252
|
+
params (REQUEST_PARAMS_TYPEHINT): Element and attribute name.
|
|
253
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
254
|
+
|
|
255
|
+
Returns:
|
|
256
|
+
Dict[str, Any]: The BiDi request.
|
|
257
|
+
"""
|
|
258
|
+
|
|
259
|
+
attr_name = {"type": "string", "value": params["name"]}
|
|
260
|
+
|
|
261
|
+
return build_script_call_request(
|
|
262
|
+
context_id=context_id,
|
|
263
|
+
function=WEB_ELEMENT.GET_ATTRIBUTE,
|
|
264
|
+
args=[get_web_element_argument(params=params), attr_name],
|
|
265
|
+
ownership="none",
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
def _map_get_element_aria_role_request(
|
|
270
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
271
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
272
|
+
) -> Dict[str, Any]:
|
|
273
|
+
"""
|
|
274
|
+
Maps get ARIA role via JS call.
|
|
275
|
+
|
|
276
|
+
Args:
|
|
277
|
+
params (REQUEST_PARAMS_TYPEHINT): Element parameters.
|
|
278
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
279
|
+
|
|
280
|
+
Returns:
|
|
281
|
+
Dict[str, Any]: The BiDi request.
|
|
282
|
+
"""
|
|
283
|
+
|
|
284
|
+
return build_script_call_request(
|
|
285
|
+
context_id=context_id,
|
|
286
|
+
function=WEB_ELEMENT.GET_ARIA_ROLE,
|
|
287
|
+
args=[get_web_element_argument(params=params)],
|
|
288
|
+
ownership="none",
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
def _map_get_element_aria_label_request(
|
|
293
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
294
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
295
|
+
) -> Dict[str, Any]:
|
|
296
|
+
"""
|
|
297
|
+
Maps get ARIA label via JS call.
|
|
298
|
+
|
|
299
|
+
Args:
|
|
300
|
+
params (REQUEST_PARAMS_TYPEHINT): Element parameters.
|
|
301
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
302
|
+
|
|
303
|
+
Returns:
|
|
304
|
+
Dict[str, Any]: The BiDi request.
|
|
305
|
+
"""
|
|
306
|
+
|
|
307
|
+
return build_script_call_request(
|
|
308
|
+
context_id=context_id,
|
|
309
|
+
function=WEB_ELEMENT.GET_ARIA_LABEL,
|
|
310
|
+
args=[get_web_element_argument(params=params)],
|
|
311
|
+
ownership="none",
|
|
312
|
+
)
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
def _map_find_child_elements_request(
|
|
316
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
317
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
318
|
+
) -> Dict[str, Any]:
|
|
319
|
+
"""
|
|
320
|
+
Maps find child elements from a parent element.
|
|
321
|
+
|
|
322
|
+
Args:
|
|
323
|
+
params (REQUEST_PARAMS_TYPEHINT): Strategy, value and parent element ID.
|
|
324
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
325
|
+
|
|
326
|
+
Returns:
|
|
327
|
+
Dict[str, Any]: The BiDi request.
|
|
328
|
+
"""
|
|
329
|
+
|
|
330
|
+
return build_locate_nodes_request(
|
|
331
|
+
context_id=context_id,
|
|
332
|
+
params=params,
|
|
333
|
+
start_nodes=[get_web_element_argument(params=params)]
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
def _map_find_child_element_request(
|
|
338
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
339
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
340
|
+
) -> Dict[str, Any]:
|
|
341
|
+
"""
|
|
342
|
+
Maps find child element from a parent element (max 1).
|
|
343
|
+
|
|
344
|
+
Args:
|
|
345
|
+
params (REQUEST_PARAMS_TYPEHINT): Strategy, value and parent element ID.
|
|
346
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
347
|
+
|
|
348
|
+
Returns:
|
|
349
|
+
Dict[str, Any]: The BiDi request.
|
|
350
|
+
"""
|
|
351
|
+
|
|
352
|
+
return build_locate_nodes_request(
|
|
353
|
+
context_id=context_id,
|
|
354
|
+
params=params,
|
|
355
|
+
max_nodes=1,
|
|
356
|
+
start_nodes=[get_web_element_argument(params=params)]
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
def _map_element_screenshot_request(
|
|
361
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
362
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
363
|
+
) -> Dict[str, Any]:
|
|
364
|
+
"""
|
|
365
|
+
Maps element-specific screenshot command.
|
|
366
|
+
|
|
367
|
+
Args:
|
|
368
|
+
params (REQUEST_PARAMS_TYPEHINT): Element ID.
|
|
369
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
370
|
+
|
|
371
|
+
Returns:
|
|
372
|
+
Dict[str, Any]: The BiDi request.
|
|
373
|
+
"""
|
|
374
|
+
|
|
375
|
+
return {
|
|
376
|
+
"method": "browsingContext.captureScreenshot",
|
|
377
|
+
"params": {
|
|
378
|
+
"context": context_id,
|
|
379
|
+
"clip": {"type": "element", "element": get_web_element_argument(params=params)}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
def _map_click_element_request(
|
|
385
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
386
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
387
|
+
) -> Dict[str, Any]:
|
|
388
|
+
"""
|
|
389
|
+
Maps element click via JS call.
|
|
390
|
+
|
|
391
|
+
Args:
|
|
392
|
+
params (REQUEST_PARAMS_TYPEHINT): Element ID.
|
|
393
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
394
|
+
|
|
395
|
+
Returns:
|
|
396
|
+
Dict[str, Any]: The BiDi request.
|
|
397
|
+
"""
|
|
398
|
+
|
|
399
|
+
return build_script_call_request(
|
|
400
|
+
context_id=context_id,
|
|
401
|
+
function=WEB_ELEMENT.CLICK,
|
|
402
|
+
args=[get_web_element_argument(params=params)],
|
|
403
|
+
ownership="none",
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
def _map_clear_element_request(
|
|
408
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
409
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
410
|
+
) -> Dict[str, Any]:
|
|
411
|
+
"""
|
|
412
|
+
Maps element clear via JS call.
|
|
413
|
+
|
|
414
|
+
Args:
|
|
415
|
+
params (REQUEST_PARAMS_TYPEHINT): Element ID.
|
|
416
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
417
|
+
|
|
418
|
+
Returns:
|
|
419
|
+
Dict[str, Any]: The BiDi request.
|
|
420
|
+
"""
|
|
421
|
+
|
|
422
|
+
return build_script_call_request(
|
|
423
|
+
context_id=context_id,
|
|
424
|
+
function=WEB_ELEMENT.CLEAR,
|
|
425
|
+
args=[get_web_element_argument(params=params)],
|
|
426
|
+
ownership="none",
|
|
427
|
+
)
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
MAPPED_REQUEST_WEB_ELEMENT_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
|
|
431
|
+
Command.GET_ELEMENT_TAG_NAME: _map_get_element_tag_name_request,
|
|
432
|
+
Command.GET_ELEMENT_TEXT: _map_get_element_text_request,
|
|
433
|
+
Command.CLICK_ELEMENT: _map_click_element_request,
|
|
434
|
+
Command.CLEAR_ELEMENT: _map_clear_element_request,
|
|
435
|
+
Command.GET_ELEMENT_PROPERTY: _map_get_element_property_request,
|
|
436
|
+
Command.GET_ELEMENT_ATTRIBUTE: _map_get_element_attribute_request,
|
|
437
|
+
Command.IS_ELEMENT_SELECTED: _map_is_element_selected_request,
|
|
438
|
+
Command.IS_ELEMENT_ENABLED: _map_is_element_enabled_request,
|
|
439
|
+
Command.SEND_KEYS_TO_ELEMENT: _map_send_keys_to_element_request,
|
|
440
|
+
Command.GET_SHADOW_ROOT: _map_get_shadow_root_request,
|
|
441
|
+
Command.GET_ELEMENT_RECT: _map_get_element_rect_request,
|
|
442
|
+
Command.GET_ELEMENT_VALUE_OF_CSS_PROPERTY: _map_get_element_css_value_request,
|
|
443
|
+
Command.GET_ELEMENT_ARIA_ROLE: _map_get_element_aria_role_request,
|
|
444
|
+
Command.GET_ELEMENT_ARIA_LABEL: _map_get_element_aria_label_request,
|
|
445
|
+
Command.ELEMENT_SCREENSHOT: _map_element_screenshot_request,
|
|
446
|
+
Command.FIND_CHILD_ELEMENT: _map_find_child_element_request,
|
|
447
|
+
Command.FIND_CHILD_ELEMENTS: _map_find_child_elements_request,
|
|
448
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
from typing import Any, Dict
|
|
2
|
+
from selenium.webdriver.remote.command import Command
|
|
3
|
+
from osn_selenium.trio_bidi.mapping._js_snippets import WINDOW
|
|
4
|
+
from osn_selenium.trio_bidi.mapping.request_functions._args_helpers import (
|
|
5
|
+
build_script_evaluate_request
|
|
6
|
+
)
|
|
7
|
+
from osn_selenium.trio_bidi._typehints import (
|
|
8
|
+
CURRENT_BROWSING_CONTEXT_TYPEHINT,
|
|
9
|
+
MAP_REQUEST_FUNCTION_TYPEHINT,
|
|
10
|
+
REQUEST_PARAMS_TYPEHINT
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["MAPPED_REQUEST_WINDOW_COMMANDS"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _map_w3c_get_window_handles_request(
|
|
18
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
19
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
20
|
+
) -> Dict[str, Any]:
|
|
21
|
+
"""
|
|
22
|
+
Maps command to get all window handles.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
params (REQUEST_PARAMS_TYPEHINT): Request parameters.
|
|
26
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
Dict[str, Any]: The BiDi request.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
return {"method": "browsingContext.getTree", "params": {}}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _map_w3c_get_current_window_handle_request(
|
|
36
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
37
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
38
|
+
) -> Dict[str, Any]:
|
|
39
|
+
"""
|
|
40
|
+
Maps command to get current window handle.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
params (REQUEST_PARAMS_TYPEHINT): Request parameters.
|
|
44
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
Dict[str, Any]: The BiDi request.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
"method": "browsingContext.getTree",
|
|
52
|
+
"params": {"root": context_id, "maxDepth": 0}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _map_set_screen_orientation_request(
|
|
57
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
58
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
59
|
+
) -> Dict[str, Any]:
|
|
60
|
+
"""
|
|
61
|
+
Maps set screen orientation via JS evaluation.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
params (REQUEST_PARAMS_TYPEHINT): Parameters containing 'orientation'.
|
|
65
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
Dict[str, Any]: The BiDi request.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
orientation = params.get("orientation").lower()
|
|
72
|
+
|
|
73
|
+
return build_script_evaluate_request(
|
|
74
|
+
context_id=context_id,
|
|
75
|
+
expression=WINDOW.SET_ORIENTATION.format(orientation=orientation),
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _map_get_screen_orientation_request(
|
|
80
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
81
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
82
|
+
) -> Dict[str, Any]:
|
|
83
|
+
"""
|
|
84
|
+
Maps get screen orientation via JS evaluation.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
params (REQUEST_PARAMS_TYPEHINT): Request parameters.
|
|
88
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
89
|
+
|
|
90
|
+
Returns:
|
|
91
|
+
Dict[str, Any]: The BiDi request.
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
return build_script_evaluate_request(context_id=context_id, expression=WINDOW.GET_ORIENTATION)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def _map_close_request(
|
|
98
|
+
params: REQUEST_PARAMS_TYPEHINT,
|
|
99
|
+
context_id: CURRENT_BROWSING_CONTEXT_TYPEHINT
|
|
100
|
+
) -> Dict[str, Any]:
|
|
101
|
+
"""
|
|
102
|
+
Maps window close command.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
params (REQUEST_PARAMS_TYPEHINT): Parameters containing 'handle'.
|
|
106
|
+
context_id (CURRENT_BROWSING_CONTEXT_TYPEHINT): The browsing context ID.
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
Dict[str, Any]: The BiDi request.
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
target_context = params.get("handle") or context_id
|
|
113
|
+
|
|
114
|
+
return {"method": "browsingContext.close", "params": {"context": target_context}}
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
MAPPED_REQUEST_WINDOW_COMMANDS: Dict[str, MAP_REQUEST_FUNCTION_TYPEHINT] = {
|
|
118
|
+
Command.W3C_GET_WINDOW_HANDLES: _map_w3c_get_window_handles_request,
|
|
119
|
+
Command.W3C_GET_CURRENT_WINDOW_HANDLE: _map_w3c_get_current_window_handle_request,
|
|
120
|
+
Command.CLOSE: _map_close_request,
|
|
121
|
+
Command.GET_SCREEN_ORIENTATION: _map_get_screen_orientation_request,
|
|
122
|
+
Command.SET_SCREEN_ORIENTATION: _map_set_screen_orientation_request,
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
# TODO create mappings for Command.GET_WINDOW_RECT, Command.SET_WINDOW_RECT, Command.W3C_MAXIMIZE_WINDOW, Command.MINIMIZE_WINDOW, Command.FULLSCREEN_WINDOW
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
from typing import Any, Dict
|
|
2
|
+
from osn_selenium.exceptions.bidi_bridge import (
|
|
3
|
+
CommandNotMappedToBiDiError
|
|
4
|
+
)
|
|
5
|
+
from osn_selenium.trio_bidi.mapping.response_functions._cdp import (
|
|
6
|
+
MAPPED_RESPONSE_CDP_COMMANDS
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium.trio_bidi.mapping.response_functions._file import (
|
|
9
|
+
MAPPED_RESPONSE_FILE_COMMANDS
|
|
10
|
+
)
|
|
11
|
+
from osn_selenium.trio_bidi.mapping.response_functions._alert import (
|
|
12
|
+
MAPPED_RESPONSE_ALERT_COMMANDS
|
|
13
|
+
)
|
|
14
|
+
from osn_selenium.trio_bidi.mapping.response_functions._script import (
|
|
15
|
+
MAPPED_RESPONSE_SCRIPT_COMMANDS
|
|
16
|
+
)
|
|
17
|
+
from osn_selenium.trio_bidi.mapping.response_functions._window import (
|
|
18
|
+
MAPPED_RESPONSE_WINDOW_COMMANDS
|
|
19
|
+
)
|
|
20
|
+
from osn_selenium.trio_bidi._typehints import (
|
|
21
|
+
MAP_RESPONSE_FUNCTION_TYPEHINT,
|
|
22
|
+
REQUEST_PARAMS_TYPEHINT
|
|
23
|
+
)
|
|
24
|
+
from osn_selenium.trio_bidi.mapping.response_functions._capture import (
|
|
25
|
+
MAPPED_RESPONSE_CAPTURE_COMMANDS
|
|
26
|
+
)
|
|
27
|
+
from osn_selenium.trio_bidi.mapping.response_functions._element import (
|
|
28
|
+
MAPPED_RESPONSE_ELEMENT_COMMANDS
|
|
29
|
+
)
|
|
30
|
+
from osn_selenium.trio_bidi.mapping.response_functions._switch_to import (
|
|
31
|
+
MAPPED_RESPONSE_SWITCH_TO_COMMANDS
|
|
32
|
+
)
|
|
33
|
+
from osn_selenium.trio_bidi.mapping.response_functions._navigation import (
|
|
34
|
+
MAPPED_RESPONSE_NAVIGATION_COMMANDS
|
|
35
|
+
)
|
|
36
|
+
from osn_selenium.trio_bidi.mapping.response_functions._web_element import (
|
|
37
|
+
MAPPED_RESPONSE_WEB_ELEMENT_COMMANDS
|
|
38
|
+
)
|
|
39
|
+
from osn_selenium.trio_bidi.mapping.response_functions._shadow_root import (
|
|
40
|
+
MAPPED_RESPONSE_SHADOW_ROOT_COMMANDS
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
__all__ = ["map_response"]
|
|
45
|
+
|
|
46
|
+
_MAPPED_RESPONSE_COMMANDS: Dict[str, MAP_RESPONSE_FUNCTION_TYPEHINT] = {
|
|
47
|
+
**MAPPED_RESPONSE_ALERT_COMMANDS,
|
|
48
|
+
**MAPPED_RESPONSE_CAPTURE_COMMANDS,
|
|
49
|
+
**MAPPED_RESPONSE_CDP_COMMANDS,
|
|
50
|
+
**MAPPED_RESPONSE_ELEMENT_COMMANDS,
|
|
51
|
+
**MAPPED_RESPONSE_FILE_COMMANDS,
|
|
52
|
+
**MAPPED_RESPONSE_NAVIGATION_COMMANDS,
|
|
53
|
+
**MAPPED_RESPONSE_SCRIPT_COMMANDS,
|
|
54
|
+
**MAPPED_RESPONSE_SHADOW_ROOT_COMMANDS,
|
|
55
|
+
**MAPPED_RESPONSE_SWITCH_TO_COMMANDS,
|
|
56
|
+
**MAPPED_RESPONSE_WEB_ELEMENT_COMMANDS,
|
|
57
|
+
**MAPPED_RESPONSE_WINDOW_COMMANDS,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def map_response(
|
|
62
|
+
command: str,
|
|
63
|
+
bidi_result: Dict[str, Any],
|
|
64
|
+
request_params: REQUEST_PARAMS_TYPEHINT
|
|
65
|
+
) -> Dict[str, Any]:
|
|
66
|
+
"""
|
|
67
|
+
Maps a BiDi response result back to the W3C WebDriver response format.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
command (str): The original W3C command name.
|
|
71
|
+
bidi_result (Dict[str, Any]): The result dictionary received from BiDi.
|
|
72
|
+
request_params (REQUEST_PARAMS_TYPEHINT): The parameters sent with the original request.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
Dict[str, Any]: The formatted W3C response dictionary.
|
|
76
|
+
|
|
77
|
+
Raises:
|
|
78
|
+
CommandNotMappedToBiDiError: If the command does not have a registered response mapper.
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
function = _MAPPED_RESPONSE_COMMANDS.get(command, None)
|
|
82
|
+
|
|
83
|
+
if function is not None:
|
|
84
|
+
return function(bidi_result, request_params)
|
|
85
|
+
|
|
86
|
+
raise CommandNotMappedToBiDiError(command=command)
|