osn-selenium 1.1.0__tar.gz → 1.2.0__tar.gz
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-1.1.0 → osn_selenium-1.2.0}/PKG-INFO +3 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/README.md +2 -1
- osn_selenium-1.2.0/osn_selenium/_decorators.py +57 -0
- osn_selenium-1.2.0/osn_selenium/_trio_threads_helpers.py +157 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/_typehints.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/blink/base.py +14 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/blink/lifecycle.py +8 -8
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/base.py +0 -14
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/capture.py +4 -3
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/lifecycle.py +8 -8
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/script.py +5 -4
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/window.py +11 -11
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/_decorators.py +1 -42
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/_functions.py +2 -4
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/domains/fetch.py +5 -7
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/domains_default/fetch.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/logger/main.py +9 -9
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/logger/target.py +7 -7
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/manager/base.py +10 -19
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/manager/lifecycle.py +83 -74
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/manager/logging.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/manager/targets.py +13 -5
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/settings.py +4 -4
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/target/base.py +18 -11
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/target/discovery.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/target/events.py +2 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/target/fingerprint.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/target/lifecycle.py +103 -43
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/target/logging.py +1 -1
- osn_selenium-1.2.0/osn_selenium/exceptions/__init__.py +0 -0
- osn_selenium-1.2.0/osn_selenium/exceptions/base.py +36 -0
- osn_selenium-1.2.0/osn_selenium/exceptions/bidi_bridge.py +59 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/configuration.py +1 -8
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/dependencies.py +2 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/devtools.py +9 -39
- osn_selenium-1.2.0/osn_selenium/exceptions/experimental.py +26 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/flags.py +0 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/instance.py +1 -9
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/javascript.py +0 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/logic.py +0 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/path.py +1 -9
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/platform.py +0 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/protocol.py +0 -3
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/webdriver.py +1 -7
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/exceptions/window.py +1 -8
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/executors/sync/cdp.py +0 -5
- osn_selenium-1.2.0/osn_selenium/executors/trio_bidi/cdp.py +101 -0
- osn_selenium-1.2.0/osn_selenium/executors/trio_bidi/javascript.py +101 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/executors/trio_threads/cdp.py +0 -5
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/base.py +6 -4
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/blink.py +2 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/chrome.py +6 -6
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/edge.py +6 -6
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/convert.py +44 -3
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/protocols.py +47 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/browsing_context.py +2 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/script.py +7 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/web_element.py +1 -1
- osn_selenium-1.2.0/osn_selenium/instances/trio_bidi/shadow_root.py +180 -0
- osn_selenium-1.2.0/osn_selenium/instances/trio_bidi/switch_to.py +143 -0
- osn_selenium-1.2.0/osn_selenium/instances/trio_bidi/web_driver_wait.py +124 -0
- osn_selenium-1.2.0/osn_selenium/instances/trio_bidi/web_element.py +239 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/browsing_context.py +2 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/script.py +7 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/browsing_context.py +2 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/script.py +2 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/web_element.py +3 -5
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/__init__.py +2 -1
- osn_selenium-1.2.0/osn_selenium/trio_bidi/_context_vars.py +12 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/_error_mappings.py +123 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/_error_redirects.py +194 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/_file_functions.py +28 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/_internal_mappings.py +10 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/_models.py +199 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/_typehints.py +20 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/connection_pool.py +587 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/_constants.py +14 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/_js_snippets.py +285 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/_utils.py +4 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/__init__.py +87 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_alert.py +102 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_args_helpers.py +225 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_capture.py +71 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_cdp.py +40 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_element.py +55 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_file.py +32 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_navigation.py +147 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_script.py +85 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_shadow_root.py +65 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_switch_to.py +59 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_web_element.py +448 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/request_functions/_window.py +125 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/__init__.py +86 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_alert.py +81 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_args_helpers.py +183 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_args_validators.py +153 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_capture.py +71 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_cdp.py +26 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_element.py +58 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_file.py +30 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_navigation.py +120 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_script.py +57 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_shadow_root.py +58 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_switch_to.py +57 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_web_element.py +368 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping/response_functions/_window.py +119 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/mixin.py +186 -0
- osn_selenium-1.2.0/osn_selenium/trio_bidi/remote_connection.py +164 -0
- osn_selenium-1.1.0/osn_selenium/base_mixin.py → osn_selenium-1.2.0/osn_selenium/trio_threads_mixin.py +31 -40
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/_args_helpers.py +118 -5
- osn_selenium-1.2.0/osn_selenium/webdrivers/_typehints.py +16 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/protocols.py +130 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/blink/base.py +10 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/base.py +3 -11
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/capture.py +3 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/file.py +3 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/lifecycle.py +44 -10
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/script.py +3 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/window.py +3 -3
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/edge/lifecycle.py +23 -5
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/edge/settings.py +6 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/yandex/lifecycle.py +23 -5
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/yandex/settings.py +6 -1
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/blink/__init__.py +132 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/blink/base.py +167 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/blink/lifecycle.py +89 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/blink/settings.py +63 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/chrome/__init__.py +114 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/chrome/base.py +127 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/chrome/lifecycle.py +85 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/trio_threads → osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi}/chrome/settings.py +1 -1
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/__init__.py +95 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/actions.py +70 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/base.py +200 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/capture.py +39 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/devtools.py +49 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/element.py +64 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/lifecycle.py +135 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/navigation.py +37 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/script.py +56 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/settings.py +36 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/core/window.py +134 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/edge/__init__.py +114 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/edge/base.py +123 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/edge/lifecycle.py +85 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/trio_threads → osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi}/edge/settings.py +1 -1
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/yandex/__init__.py +114 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/yandex/base.py +120 -0
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi/yandex/lifecycle.py +85 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/trio_threads → osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi}/yandex/settings.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/blink/__init__.py +7 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/blink/base.py +14 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +23 -5
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_threads/chrome/settings.py +63 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/__init__.py +0 -10
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/base.py +4 -16
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/capture.py +3 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/file.py +3 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/lifecycle.py +44 -10
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/script.py +3 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/window.py +4 -4
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +23 -5
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_threads/edge/settings.py +63 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +23 -5
- osn_selenium-1.2.0/osn_selenium/webdrivers/trio_threads/yandex/settings.py +63 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/blink/base.py +5 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/chrome/base.py +5 -1
- osn_selenium-1.2.0/osn_selenium/webdrivers/unified/core/__init__.py +1 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/auth.py +4 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/base.py +16 -10
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/capture.py +3 -2
- osn_selenium-1.2.0/osn_selenium/webdrivers/unified/core/components.py +37 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/devtools.py +2 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/file.py +3 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/lifecycle.py +5 -3
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/script.py +5 -3
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/storage.py +2 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/window.py +9 -8
- osn_selenium-1.2.0/osn_selenium/webdrivers/unified/edge/__init__.py +1 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/edge/base.py +5 -1
- osn_selenium-1.2.0/osn_selenium/webdrivers/unified/yandex/__init__.py +1 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/yandex/base.py +5 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium.egg-info/PKG-INFO +3 -2
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium.egg-info/SOURCES.txt +83 -218
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/pyproject.toml +1 -1
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/__init__.py +0 -435
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/accessibility.py +0 -62
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/animation.py +0 -47
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/audits.py +0 -39
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/autofill.py +0 -34
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/background_service.py +0 -22
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -95
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/browser.py +0 -122
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/cache_storage.py +0 -49
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/cast.py +0 -31
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/console.py +0 -18
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/css.py +0 -197
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/debugger.py +0 -198
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/device_access.py +0 -22
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/device_orientation.py +0 -14
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/dom.py +0 -305
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -57
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -42
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/dom_storage.py +0 -31
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/emulation.py +0 -259
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -18
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/extensions.py +0 -31
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/fed_cm.py +0 -35
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/fetch.py +0 -76
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/file_system.py +0 -11
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -30
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -73
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/indexed_db.py +0 -99
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/input.py +0 -158
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/inspector.py +0 -14
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/io.py +0 -24
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/layer_tree.py +0 -61
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/log.py +0 -27
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/media.py +0 -14
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/memory.py +0 -61
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/network.py +0 -252
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/overlay.py +0 -166
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/page.py +0 -347
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/performance.py +0 -28
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -11
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/preload.py +0 -14
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/profiler.py +0 -54
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/pwa.py +0 -46
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/runtime.py +0 -176
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/schema.py +0 -11
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/security.py +0 -26
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/service_worker.py +0 -54
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/storage.py +0 -175
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/system_info.py +0 -24
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/target.py +0 -125
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/tethering.py +0 -14
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/tracing.py +0 -48
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/web_audio.py +0 -19
- osn_selenium-1.1.0/osn_selenium/abstract/executors/cdp/web_authn.py +0 -76
- osn_selenium-1.1.0/osn_selenium/exceptions/base.py +0 -9
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/__init__.py +0 -550
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/accessibility.py +0 -74
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/animation.py +0 -50
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/audits.py +0 -48
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/autofill.py +0 -39
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/background_service.py +0 -30
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -101
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/browser.py +0 -131
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/cache_storage.py +0 -66
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/cast.py +0 -38
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/console.py +0 -24
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/css.py +0 -187
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/debugger.py +0 -206
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/device_access.py +0 -27
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/device_orientation.py +0 -24
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/dom.py +0 -310
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/dom_debugger.py +0 -56
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -58
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/dom_storage.py +0 -38
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/emulation.py +0 -270
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -27
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/extensions.py +0 -39
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/fed_cm.py +0 -45
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/fetch.py +0 -96
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/file_system.py +0 -18
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/headless_experimental.py +0 -44
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/heap_profiler.py +0 -89
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/indexed_db.py +0 -142
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/input.py +0 -233
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/inspector.py +0 -21
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/io.py +0 -33
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/layer_tree.py +0 -71
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/log.py +0 -35
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/media.py +0 -21
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/memory.py +0 -62
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/network.py +0 -287
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/overlay.py +0 -174
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/page.py +0 -365
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/performance.py +0 -33
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/performance_timeline.py +0 -26
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/preload.py +0 -21
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/profiler.py +0 -58
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/pwa.py +0 -55
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/runtime.py +0 -221
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/schema.py +0 -23
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/security.py +0 -30
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/service_worker.py +0 -56
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/storage.py +0 -151
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/system_info.py +0 -30
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/target.py +0 -147
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/tethering.py +0 -21
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/tracing.py +0 -62
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/web_audio.py +0 -24
- osn_selenium-1.1.0/osn_selenium/executors/sync/cdp/web_authn.py +0 -82
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/__init__.py +0 -771
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -87
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/animation.py +0 -63
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/audits.py +0 -57
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/autofill.py +0 -52
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/background_service.py +0 -40
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -111
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/browser.py +0 -140
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -79
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/cast.py +0 -47
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/console.py +0 -33
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/css.py +0 -196
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/debugger.py +0 -219
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/device_access.py +0 -40
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -34
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/dom.py +0 -319
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -69
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -71
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -51
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/emulation.py +0 -283
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -37
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/extensions.py +0 -52
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -54
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/fetch.py +0 -105
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/file_system.py +0 -31
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -54
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -102
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -155
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/input.py +0 -242
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/inspector.py +0 -34
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/io.py +0 -42
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -84
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/log.py +0 -44
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/media.py +0 -30
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/memory.py +0 -71
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/network.py +0 -296
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/overlay.py +0 -183
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/page.py +0 -374
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/performance.py +0 -46
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -36
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/preload.py +0 -30
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/profiler.py +0 -71
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/pwa.py +0 -64
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/runtime.py +0 -230
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/schema.py +0 -32
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/security.py +0 -43
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -69
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/storage.py +0 -162
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/system_info.py +0 -43
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/target.py +0 -156
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/tethering.py +0 -34
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/tracing.py +0 -71
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -37
- osn_selenium-1.1.0/osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -95
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/accessibility.py +0 -81
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/animation.py +0 -50
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/audits.py +0 -45
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/autofill.py +0 -41
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/background_service.py +0 -24
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -132
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/browser.py +0 -143
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/cache_storage.py +0 -69
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/cast.py +0 -32
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/console.py +0 -18
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/css.py +0 -237
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/debugger.py +0 -243
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/device_access.py +0 -21
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/device_orientation.py +0 -18
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/dom.py +0 -380
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/dom_debugger.py +0 -65
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -58
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/dom_storage.py +0 -38
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/emulation.py +0 -312
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -24
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/extensions.py +0 -45
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/fed_cm.py +0 -51
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/fetch.py +0 -111
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/file_system.py +0 -15
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/headless_experimental.py +0 -38
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/heap_profiler.py +0 -101
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/indexed_db.py +0 -157
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/input.py +0 -254
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/inspector.py +0 -15
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/io.py +0 -29
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/layer_tree.py +0 -71
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/log.py +0 -29
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/media.py +0 -15
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/memory.py +0 -59
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/network.py +0 -323
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/overlay.py +0 -209
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/page.py +0 -410
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/performance.py +0 -27
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/performance_timeline.py +0 -17
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/preload.py +0 -15
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/profiler.py +0 -55
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/pwa.py +0 -55
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/runtime.py +0 -245
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/schema.py +0 -17
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/security.py +0 -27
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/service_worker.py +0 -62
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/storage.py +0 -178
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/system_info.py +0 -24
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/target.py +0 -165
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/tethering.py +0 -15
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/tracing.py +0 -62
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/web_audio.py +0 -18
- osn_selenium-1.1.0/osn_selenium/executors/unified/cdp/web_authn.py +0 -103
- osn_selenium-1.1.0/osn_selenium/trio_threads_mixin.py +0 -159
- osn_selenium-1.1.0/osn_selenium/webdrivers/_typehints.py +0 -10
- osn_selenium-1.1.0/osn_selenium/webdrivers/protocols.py +0 -50
- osn_selenium-1.1.0/osn_selenium/webdrivers/unified/core/components.py +0 -32
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/description.txt +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/_base_models.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/_cdp_import.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/dev_tools → osn_selenium-1.2.0/osn_selenium}/_exception_helpers.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/_functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/executors/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/executors/cdp.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/executors/javascript.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/click.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/drag_and_drop.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/hm_keyboard.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/hm_move.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/hm_scroll.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/keyboard.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/move.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/scroll.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/action_chains/utils.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/alert.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/browser.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/browsing_context.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/dialog.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/fedcm.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/mobile.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/network.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/permissions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/script.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/shadow_root.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/storage.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/switch_to.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/web_driver_wait.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/web_element.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/instances/web_extension.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/blink/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/blink/casting.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/blink/features.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/blink/logging.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/blink/network.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/blink/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/chrome/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/chrome/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/chrome/lifecycle.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/chrome/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/actions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/auth.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/components.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/devtools.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/element.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/file.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/navigation.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/storage.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/core/timeouts.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/edge/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/edge/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/edge/lifecycle.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/edge/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/yandex/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/yandex/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/yandex/lifecycle.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/yandex/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/browsers_handler/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/browsers_handler/_linux.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/browsers_handler/_windows.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/browsers_handler/models.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/_system_utils.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/_typehints.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/_validators.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/_wrappers.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/domains/__init__.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/domains/abstract.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/domains_default/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/filters.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/logger/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/logger/models.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/manager/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/manager/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/models.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/target/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/dev_tools/target/detach.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/exceptions → osn_selenium-1.2.0/osn_selenium/executors}/__init__.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/executors → osn_selenium-1.2.0/osn_selenium/executors/sync}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/executors/sync/javascript.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/executors/sync → osn_selenium-1.2.0/osn_selenium/executors/trio_bidi}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/executors/trio_threads/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/executors/trio_threads/javascript.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/executors/unified/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/executors/unified/javascript.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/executors/unified/cdp → osn_selenium-1.2.0/osn_selenium/flags}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/_functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/_typehints.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/_validators.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/flags → osn_selenium-1.2.0/osn_selenium/flags/models}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/models/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/models/blink.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/models/chrome.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/models/edge.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/models/values.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/models/yandex.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/flags/yandex.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/flags/models → osn_selenium-1.2.0/osn_selenium/instances}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/_functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/_typehints.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/_utils.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/instances → osn_selenium-1.2.0/osn_selenium/instances/sync}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/click.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/drag_and_drop.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/hm_keyboard.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/hm_move.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/hm_scroll.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/keyboard.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/move.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/scroll.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/action_chains/utils.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/alert.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/browser.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/dialog.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/fedcm.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/mobile.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/network.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/permissions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/shadow_root.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/storage.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/switch_to.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/web_driver_wait.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/sync/web_extension.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/instances/sync → osn_selenium-1.2.0/osn_selenium/instances/trio_bidi}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/click.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/drag_and_drop.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/hm_keyboard.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/hm_move.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/hm_scroll.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/keyboard.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/move.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/scroll.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/action_chains/utils.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/alert.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/browser.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/dialog.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/fedcm.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/mobile.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/network.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/permissions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/shadow_root.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/storage.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/switch_to.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/web_driver_wait.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/web_element.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/trio_threads/web_extension.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/click.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/drag_and_drop.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/hm_keyboard.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/hm_move.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/hm_scroll.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/keyboard.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/move.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/scroll.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/action_chains/utils.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/alert.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/browser.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/dialog.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/fedcm.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/mobile.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/network.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/permissions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/shadow_root.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/storage.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/switch_to.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/web_driver_wait.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/instances/unified/web_extension.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/_functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/_decorators.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/_detect/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/_detect/functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/_detect/templates.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/_functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/_typehints.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/registry/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/registry/_core_functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/registry/_functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/registry/_typehints.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/registry/_utils.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/registry/models.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/spoof/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/spoof/_functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/spoof/_templates.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/spoof/_typehints.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/spoof/core_rules.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/spoof/noise.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/fingerprint/spoof/rules.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/models.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/check_element_in_viewport.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/get_document_scroll_size.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/get_element_css.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/get_element_rect_in_viewport.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/get_random_element_point_in_viewport.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/get_viewport_position.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/get_viewport_rect.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/get_viewport_size.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/open_new_tab.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/start_fingerprint_detection.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/javascript/scripts/stop_window_loading.js +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/models.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers → osn_selenium-1.2.0/osn_selenium/trio_bidi}/__init__.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/_executable_tables → osn_selenium-1.2.0/osn_selenium/trio_bidi/mapping}/__init__.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/sync → osn_selenium-1.2.0/osn_selenium/webdrivers}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/_bridges.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/_decorators.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/trio_threads → osn_selenium-1.2.0/osn_selenium/webdrivers/_executable_tables}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/_executable_tables/functions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/_executable_tables/models.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/unified → osn_selenium-1.2.0/osn_selenium/webdrivers/sync}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/blink/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/blink/casting.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/blink/features.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/blink/logging.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/blink/network.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/blink/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/chrome/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/chrome/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/actions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/auth.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/comonents.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/devtools.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/element.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/navigation.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/storage.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/core/timeouts.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/edge/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/edge/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/yandex/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/sync/yandex/base.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/unified/blink → osn_selenium-1.2.0/osn_selenium/webdrivers/trio_bidi}/__init__.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/unified/chrome → osn_selenium-1.2.0/osn_selenium/webdrivers/trio_threads}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/blink/casting.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/blink/features.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/blink/logging.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/blink/network.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/blink/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/chrome/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/chrome/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/comonents.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/devtools.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/element.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/navigation.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/edge/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/edge/base.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/yandex/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/trio_threads/yandex/base.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/unified/core → osn_selenium-1.2.0/osn_selenium/webdrivers/unified}/__init__.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/unified/edge → osn_selenium-1.2.0/osn_selenium/webdrivers/unified/blink}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/blink/casting.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/blink/features.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/blink/logging.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/blink/network.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/blink/settings.py +0 -0
- {osn_selenium-1.1.0/osn_selenium/webdrivers/unified/yandex → osn_selenium-1.2.0/osn_selenium/webdrivers/unified/chrome}/__init__.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/chrome/lifecycle.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/chrome/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/actions.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/element.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/navigation.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/core/timeouts.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/edge/lifecycle.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/edge/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/yandex/lifecycle.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/webdrivers/unified/yandex/settings.py +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium.egg-info/dependency_links.txt +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium.egg-info/requires.txt +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium.egg-info/top_level.txt +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/requirements.txt +0 -0
- {osn_selenium-1.1.0 → osn_selenium-1.2.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: osn-selenium
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: An advanced, asynchronous wrapper for Selenium designed for fine-grained browser control. It leverages `trio` for async operations, provides human-like action chains for more natural automation, and offers deep integration with the Chrome DevTools Protocol (CDP) for advanced features like network interception. The library is structured to be extensible, with built-in support for Blink-based browsers like Chrome, Edge, and Yandex.
|
|
5
5
|
Author-email: oddshellnick <oddshellnick.programming@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/oddshellnick/osn-selenium
|
|
@@ -241,6 +241,7 @@ Utilities for executing JS and managing browser fingerprints.
|
|
|
241
241
|
The `trio_threads` implementation is built using a unified `trio.Lock`. This means that every driver function and every associated instance (including `ActionChains`, `WebElement`, `Alert`, etc.) can execute only one operation at a time. Do not attempt to parallelize multiple operations (coroutines) within a single browser instance, as they will be queued sequentially. The primary purpose of this asynchronous implementation is to enable the simultaneous management of **multiple browser instances** within a single event loop, rather than concurrent interactions with one browser.
|
|
242
242
|
* **CDP Domains and Background Tasks:**
|
|
243
243
|
When configuring the domains for network interception, it is highly recommended to provide a `target_background_task` in your `DevToolsSettings`. This is especially critical for websites that dynamically create numerous targets (such as iframes or workers). Without a proper background task to handle these events, the browser's execution flow might hang or fail to process requests for nested targets properly.
|
|
244
|
+
* **Experimental `trio_bidi` Architecture:** A new experimental architecture, `trio_bidi`, has been introduced. While it currently does not cover 100% of browser capabilities, it supports all core functionalities, including page navigation and element interactions, through native BiDi communication.
|
|
244
245
|
|
|
245
246
|
## Future Notes
|
|
246
247
|
|
|
@@ -249,4 +250,4 @@ Utilities for executing JS and managing browser fingerprints.
|
|
|
249
250
|
* **macOS Support:** Extending browser auto-detection and lifecycle management for macOS environments.
|
|
250
251
|
* **High-Level CDP Handlers:** Expanding the `dev_tools.domains` module to include simplified event-driven logic for `Network`, `Page`, and `Runtime` domains, similar to the current `Fetch` implementation.
|
|
251
252
|
* **Enhanced Human-Like Actions:** Adding more complex Bezier-based mouse movement patterns and advanced typing jitter to further decrease automation footprints.
|
|
252
|
-
* **
|
|
253
|
+
* **Full BiDi Coverage:** Implementing comprehensive Selenium feature coverage using BiDi mappings to eventually replace the need for synchronous thread pools in async mode.
|
|
@@ -225,6 +225,7 @@ Utilities for executing JS and managing browser fingerprints.
|
|
|
225
225
|
The `trio_threads` implementation is built using a unified `trio.Lock`. This means that every driver function and every associated instance (including `ActionChains`, `WebElement`, `Alert`, etc.) can execute only one operation at a time. Do not attempt to parallelize multiple operations (coroutines) within a single browser instance, as they will be queued sequentially. The primary purpose of this asynchronous implementation is to enable the simultaneous management of **multiple browser instances** within a single event loop, rather than concurrent interactions with one browser.
|
|
226
226
|
* **CDP Domains and Background Tasks:**
|
|
227
227
|
When configuring the domains for network interception, it is highly recommended to provide a `target_background_task` in your `DevToolsSettings`. This is especially critical for websites that dynamically create numerous targets (such as iframes or workers). Without a proper background task to handle these events, the browser's execution flow might hang or fail to process requests for nested targets properly.
|
|
228
|
+
* **Experimental `trio_bidi` Architecture:** A new experimental architecture, `trio_bidi`, has been introduced. While it currently does not cover 100% of browser capabilities, it supports all core functionalities, including page navigation and element interactions, through native BiDi communication.
|
|
228
229
|
|
|
229
230
|
## Future Notes
|
|
230
231
|
|
|
@@ -233,4 +234,4 @@ Utilities for executing JS and managing browser fingerprints.
|
|
|
233
234
|
* **macOS Support:** Extending browser auto-detection and lifecycle management for macOS environments.
|
|
234
235
|
* **High-Level CDP Handlers:** Expanding the `dev_tools.domains` module to include simplified event-driven logic for `Network`, `Page`, and `Runtime` domains, similar to the current `Fetch` implementation.
|
|
235
236
|
* **Enhanced Human-Like Actions:** Adding more complex Bezier-based mouse movement patterns and advanced typing jitter to further decrease automation footprints.
|
|
236
|
-
* **
|
|
237
|
+
* **Full BiDi Coverage:** Implementing comprehensive Selenium feature coverage using BiDi mappings to eventually replace the need for synchronous thread pools in async mode.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import inspect
|
|
2
|
+
import functools
|
|
3
|
+
from osn_selenium.exceptions.base import ExceptionThrown
|
|
4
|
+
from osn_selenium._exception_helpers import log_exception
|
|
5
|
+
from typing import (
|
|
6
|
+
Any,
|
|
7
|
+
Callable,
|
|
8
|
+
ParamSpec,
|
|
9
|
+
TypeVar
|
|
10
|
+
)
|
|
11
|
+
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["log_on_error"]
|
|
15
|
+
|
|
16
|
+
_METHOD_INPUT = ParamSpec("_METHOD_INPUT")
|
|
17
|
+
_METHOD_OUTPUT = TypeVar("_METHOD_OUTPUT")
|
|
18
|
+
_METHOD = TypeVar("_METHOD", bound=Callable[..., Any])
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def log_on_error(func: _METHOD) -> _METHOD:
|
|
22
|
+
"""
|
|
23
|
+
Decorator that logs any `BaseException` raised by the decorated async function.
|
|
24
|
+
|
|
25
|
+
If an exception occurs, it is logged using `log_exception`, and an `ExceptionThrown`
|
|
26
|
+
object wrapping the exception is returned instead of re-raising it.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
func (_METHOD): The asynchronous function to be wrapped.
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
_METHOD: The wrapped asynchronous function.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
@functools.wraps(func)
|
|
36
|
+
def sync_wrapper(*args: _METHOD_INPUT.args, **kwargs: _METHOD_INPUT.kwargs) -> _METHOD_OUTPUT:
|
|
37
|
+
try:
|
|
38
|
+
return func(*args, **kwargs)
|
|
39
|
+
except BaseException as exception:
|
|
40
|
+
log_exception(exception)
|
|
41
|
+
return ExceptionThrown(exception)
|
|
42
|
+
|
|
43
|
+
@functools.wraps(func)
|
|
44
|
+
async def async_wrapper(*args: _METHOD_INPUT.args, **kwargs: _METHOD_INPUT.kwargs) -> _METHOD_OUTPUT:
|
|
45
|
+
try:
|
|
46
|
+
return await func(*args, **kwargs)
|
|
47
|
+
except BaseException as exception:
|
|
48
|
+
log_exception(exception)
|
|
49
|
+
return ExceptionThrown(exception)
|
|
50
|
+
|
|
51
|
+
if inspect.iscoroutinefunction(func):
|
|
52
|
+
return async_wrapper
|
|
53
|
+
|
|
54
|
+
if inspect.isfunction(func):
|
|
55
|
+
return sync_wrapper
|
|
56
|
+
|
|
57
|
+
raise NotExpectedTypeError(expected_type=["coroutine function", "function"], received_instance=func)
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import trio
|
|
3
|
+
import contextvars
|
|
4
|
+
from contextlib import asynccontextmanager
|
|
5
|
+
from typing import (
|
|
6
|
+
Any,
|
|
7
|
+
AsyncContextManager,
|
|
8
|
+
AsyncIterator,
|
|
9
|
+
Callable,
|
|
10
|
+
ContextManager,
|
|
11
|
+
Coroutine,
|
|
12
|
+
ParamSpec,
|
|
13
|
+
Tuple,
|
|
14
|
+
TypeVar
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
__all__ = ["sync_to_trio", "sync_to_trio_context"]
|
|
19
|
+
|
|
20
|
+
_METHOD_INPUT = ParamSpec("_METHOD_INPUT")
|
|
21
|
+
_METHOD_OUTPUT = TypeVar("_METHOD_OUTPUT")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def sync_to_trio_context(
|
|
25
|
+
context_manager_factory: Callable[_METHOD_INPUT, ContextManager[_METHOD_OUTPUT]],
|
|
26
|
+
lock_object: trio.Lock,
|
|
27
|
+
capacity_limiter_object: trio.CapacityLimiter,
|
|
28
|
+
lock: bool,
|
|
29
|
+
exchange_context: bool,
|
|
30
|
+
) -> Callable[_METHOD_INPUT, AsyncContextManager[_METHOD_OUTPUT]]:
|
|
31
|
+
"""
|
|
32
|
+
Converts a synchronous context manager factory to an asynchronous Trio-compatible context manager.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
context_manager_factory (Callable[_METHOD_INPUT, ContextManager[_METHOD_OUTPUT]]): Factory function returning a context manager.
|
|
36
|
+
lock_object (trio.Lock): Trio lock for synchronization.
|
|
37
|
+
capacity_limiter_object (trio.CapacityLimiter): Trio capacity limiter.
|
|
38
|
+
lock (bool): Whether to use the internal lock for synchronization.
|
|
39
|
+
exchange_context (bool): Whether to synchronize context variables between threads.
|
|
40
|
+
|
|
41
|
+
Returns:
|
|
42
|
+
Callable[_METHOD_INPUT, AsyncContextManager[_METHOD_OUTPUT]]: An async function returning an async context manager.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
@asynccontextmanager
|
|
46
|
+
async def wrapper(*args: _METHOD_INPUT.args, **kwargs: _METHOD_INPUT.kwargs) -> AsyncIterator[_METHOD_OUTPUT]:
|
|
47
|
+
"""
|
|
48
|
+
Internal async context manager wrapper.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
*args (_METHOD_INPUT.args): Positional arguments for the factory.
|
|
52
|
+
**kwargs (_METHOD_INPUT.kwargs): Keyword arguments for the factory.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
AsyncIterator[_METHOD_OUTPUT]: An async iterator yielding the context resource.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
sync_context_manager = await sync_to_trio(
|
|
59
|
+
sync_function=context_manager_factory,
|
|
60
|
+
lock_object=lock_object,
|
|
61
|
+
capacity_limiter_object=capacity_limiter_object,
|
|
62
|
+
lock=lock,
|
|
63
|
+
exchange_context=exchange_context,
|
|
64
|
+
)(*args, **kwargs)
|
|
65
|
+
|
|
66
|
+
enter_ = sync_to_trio(
|
|
67
|
+
sync_function=sync_context_manager.__enter__,
|
|
68
|
+
lock_object=lock_object,
|
|
69
|
+
capacity_limiter_object=capacity_limiter_object,
|
|
70
|
+
lock=lock,
|
|
71
|
+
exchange_context=exchange_context,
|
|
72
|
+
)
|
|
73
|
+
exit_ = sync_to_trio(
|
|
74
|
+
sync_function=sync_context_manager.__exit__,
|
|
75
|
+
lock_object=lock_object,
|
|
76
|
+
capacity_limiter_object=capacity_limiter_object,
|
|
77
|
+
lock=lock,
|
|
78
|
+
exchange_context=exchange_context,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
try:
|
|
82
|
+
result = await enter_()
|
|
83
|
+
|
|
84
|
+
yield result
|
|
85
|
+
except Exception as e:
|
|
86
|
+
exc_type, exc_val, exc_tb = sys.exc_info()
|
|
87
|
+
|
|
88
|
+
if not await exit_(exc_type, exc_val, exc_tb):
|
|
89
|
+
raise e
|
|
90
|
+
else:
|
|
91
|
+
await exit_(None, None, None)
|
|
92
|
+
|
|
93
|
+
return wrapper
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def sync_to_trio(
|
|
97
|
+
sync_function: Callable[_METHOD_INPUT, _METHOD_OUTPUT],
|
|
98
|
+
lock_object: trio.Lock,
|
|
99
|
+
capacity_limiter_object: trio.CapacityLimiter,
|
|
100
|
+
lock: bool,
|
|
101
|
+
exchange_context: bool,
|
|
102
|
+
) -> Callable[_METHOD_INPUT, Coroutine[Any, Any, _METHOD_OUTPUT]]:
|
|
103
|
+
"""
|
|
104
|
+
Wraps a synchronous function to run within a Trio thread pool using a lock and limiter.
|
|
105
|
+
|
|
106
|
+
Args:
|
|
107
|
+
sync_function (Callable[_METHOD_INPUT, _METHOD_OUTPUT]): The synchronous function to wrap.
|
|
108
|
+
lock_object (trio.Lock): Trio lock for synchronization.
|
|
109
|
+
capacity_limiter_object (trio.CapacityLimiter): Trio capacity limiter.
|
|
110
|
+
lock (bool): Whether to use the provided lock.
|
|
111
|
+
exchange_context (bool): Whether to synchronize context variables between threads.
|
|
112
|
+
|
|
113
|
+
Returns:
|
|
114
|
+
Callable[_METHOD_INPUT, Coroutine[Any, Any, _METHOD_OUTPUT]]: An async wrapper for the sync function.
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
async def wrapper(*args: _METHOD_INPUT.args, **kwargs: _METHOD_INPUT.kwargs) -> _METHOD_OUTPUT:
|
|
118
|
+
"""
|
|
119
|
+
Internal async wrapper for the synchronous function.
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
*args (_METHOD_INPUT.args): Positional arguments for the sync function.
|
|
123
|
+
**kwargs (_METHOD_INPUT.kwargs): Keyword arguments for the sync function.
|
|
124
|
+
|
|
125
|
+
Returns:
|
|
126
|
+
_METHOD_OUTPUT: The result of the synchronous function execution.
|
|
127
|
+
"""
|
|
128
|
+
|
|
129
|
+
def function_with_kwargs(*args_) -> Tuple[_METHOD_OUTPUT, contextvars.Context]:
|
|
130
|
+
"""
|
|
131
|
+
Helper to pass keyword arguments to trio.to_thread.run_sync.
|
|
132
|
+
|
|
133
|
+
Args:
|
|
134
|
+
*args_: Positional arguments passed from the outer scope.
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
Tuple[_METHOD_OUTPUT, contextvars.Context]: Result of original sync function and the thread context.
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
sync_result = sync_function(*args_, **kwargs)
|
|
141
|
+
context_vars = contextvars.copy_context()
|
|
142
|
+
|
|
143
|
+
return sync_result, context_vars
|
|
144
|
+
|
|
145
|
+
if lock:
|
|
146
|
+
async with lock_object:
|
|
147
|
+
result, child_context_vars = await trio.to_thread.run_sync(function_with_kwargs, *args, limiter=capacity_limiter_object)
|
|
148
|
+
else:
|
|
149
|
+
result, child_context_vars = await trio.to_thread.run_sync(function_with_kwargs, *args, limiter=capacity_limiter_object)
|
|
150
|
+
|
|
151
|
+
if exchange_context:
|
|
152
|
+
for var, value in child_context_vars.items():
|
|
153
|
+
var.set(value)
|
|
154
|
+
|
|
155
|
+
return result
|
|
156
|
+
|
|
157
|
+
return wrapper
|
|
@@ -14,6 +14,6 @@ __all__ = [
|
|
|
14
14
|
]
|
|
15
15
|
|
|
16
16
|
DEVICES_TYPEHINT = Union[PointerInput, KeyInput, WheelInput]
|
|
17
|
-
ARCHITECTURES_TYPEHINT = Literal["sync", "trio_threads"]
|
|
17
|
+
ARCHITECTURES_TYPEHINT = Literal["sync", "trio_threads", "trio_bidi"]
|
|
18
18
|
PATH_TYPEHINT = Union[str, bytes, pathlib.Path, os.PathLike]
|
|
19
19
|
TYPES_FOR_FLATTENING_TYPEHINT = Union[str, Type]
|
|
@@ -2,6 +2,7 @@ from abc import abstractmethod
|
|
|
2
2
|
from selenium import webdriver
|
|
3
3
|
from typing import Optional, Union
|
|
4
4
|
from osn_selenium._typehints import PATH_TYPEHINT
|
|
5
|
+
from osn_selenium.abstract.executors.cdp import AbstractCDPExecutor
|
|
5
6
|
from osn_selenium.abstract.webdriver.core.base import (
|
|
6
7
|
AbstractCoreBaseMixin
|
|
7
8
|
)
|
|
@@ -31,6 +32,19 @@ class AbstractBlinkBaseMixin(AbstractCoreBaseMixin):
|
|
|
31
32
|
|
|
32
33
|
...
|
|
33
34
|
|
|
35
|
+
@property
|
|
36
|
+
@abstractmethod
|
|
37
|
+
def cdp(self) -> AbstractCDPExecutor:
|
|
38
|
+
"""
|
|
39
|
+
Returns the CDP (Chrome DevTools Protocol) executor.
|
|
40
|
+
|
|
41
|
+
Returns:
|
|
42
|
+
AbstractCDPExecutor: The CDP executor instance used for sending
|
|
43
|
+
commands directly to the browser via the DevTools protocol.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
...
|
|
47
|
+
|
|
34
48
|
@property
|
|
35
49
|
@abstractmethod
|
|
36
50
|
def debugging_ip(self) -> Optional[str]:
|
{osn_selenium-1.1.0 → osn_selenium-1.2.0}/osn_selenium/abstract/webdriver/blink/lifecycle.py
RENAMED
|
@@ -19,14 +19,6 @@ class AbstractBlinkLifecycleMixin(AbstractCoreLifecycleMixin):
|
|
|
19
19
|
and the associated browser process.
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
@abstractmethod
|
|
23
|
-
async def close_webdriver(self) -> None:
|
|
24
|
-
"""
|
|
25
|
-
Closes the WebDriver connection and terminates the browser process.
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
...
|
|
29
|
-
|
|
30
22
|
@abstractmethod
|
|
31
23
|
async def restart_webdriver(
|
|
32
24
|
self,
|
|
@@ -74,3 +66,11 @@ class AbstractBlinkLifecycleMixin(AbstractCoreLifecycleMixin):
|
|
|
74
66
|
"""
|
|
75
67
|
|
|
76
68
|
...
|
|
69
|
+
|
|
70
|
+
@abstractmethod
|
|
71
|
+
async def stop_webdriver(self) -> None:
|
|
72
|
+
"""
|
|
73
|
+
Stops the WebDriver connection and terminates the browser process.
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
...
|
|
@@ -11,7 +11,6 @@ from osn_selenium._typehints import (
|
|
|
11
11
|
ARCHITECTURES_TYPEHINT
|
|
12
12
|
)
|
|
13
13
|
from selenium.webdriver.remote.errorhandler import ErrorHandler
|
|
14
|
-
from osn_selenium.abstract.executors.cdp import AbstractCDPExecutor
|
|
15
14
|
from selenium.webdriver.remote.locator_converter import LocatorConverter
|
|
16
15
|
from selenium.webdriver.remote.remote_connection import RemoteConnection
|
|
17
16
|
from osn_selenium.abstract.executors.javascript import AbstractJSExecutor
|
|
@@ -90,19 +89,6 @@ class AbstractCoreBaseMixin(ABC):
|
|
|
90
89
|
|
|
91
90
|
...
|
|
92
91
|
|
|
93
|
-
@property
|
|
94
|
-
@abstractmethod
|
|
95
|
-
def cdp(self) -> AbstractCDPExecutor:
|
|
96
|
-
"""
|
|
97
|
-
Returns the CDP (Chrome DevTools Protocol) executor.
|
|
98
|
-
|
|
99
|
-
Returns:
|
|
100
|
-
AbstractCDPExecutor: The CDP executor instance used for sending
|
|
101
|
-
commands directly to the browser via the DevTools protocol.
|
|
102
|
-
"""
|
|
103
|
-
|
|
104
|
-
...
|
|
105
|
-
|
|
106
92
|
@property
|
|
107
93
|
@abstractmethod
|
|
108
94
|
def command_executor(self) -> RemoteConnection:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import Optional
|
|
2
2
|
from abc import ABC, abstractmethod
|
|
3
|
+
from selenium.webdriver.common.print_page_options import PrintOptions
|
|
3
4
|
|
|
4
5
|
|
|
5
6
|
__all__ = ["AbstractCoreCaptureMixin"]
|
|
@@ -56,12 +57,12 @@ class AbstractCoreCaptureMixin(ABC):
|
|
|
56
57
|
...
|
|
57
58
|
|
|
58
59
|
@abstractmethod
|
|
59
|
-
def print_page(self, print_options: Optional[
|
|
60
|
+
def print_page(self, print_options: Optional[PrintOptions] = None) -> str:
|
|
60
61
|
"""
|
|
61
62
|
Prints the current page to a PDF.
|
|
62
63
|
|
|
63
64
|
Args:
|
|
64
|
-
print_options (Optional[
|
|
65
|
+
print_options (Optional[PrintOptions]): Options for printing the page.
|
|
65
66
|
|
|
66
67
|
Returns:
|
|
67
68
|
str: A base64-encoded string of the PDF.
|
|
@@ -16,14 +16,6 @@ __all__ = ["AbstractCoreLifecycleMixin"]
|
|
|
16
16
|
class AbstractCoreLifecycleMixin(ABC):
|
|
17
17
|
"""Mixin responsible for driver lifecycle, creation, session, and connection management."""
|
|
18
18
|
|
|
19
|
-
@abstractmethod
|
|
20
|
-
def close_webdriver(self) -> None:
|
|
21
|
-
"""
|
|
22
|
-
Closes the WebDriver instance and all associated windows.
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
...
|
|
26
|
-
|
|
27
19
|
@abstractmethod
|
|
28
20
|
def quit(self) -> None:
|
|
29
21
|
"""
|
|
@@ -101,3 +93,11 @@ class AbstractCoreLifecycleMixin(ABC):
|
|
|
101
93
|
"""
|
|
102
94
|
|
|
103
95
|
...
|
|
96
|
+
|
|
97
|
+
@abstractmethod
|
|
98
|
+
def stop_webdriver(self) -> None:
|
|
99
|
+
"""
|
|
100
|
+
Stops the WebDriver instance and all associated windows.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
...
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from abc import ABC, abstractmethod
|
|
2
2
|
from typing import Any, List, Optional
|
|
3
|
+
from selenium.webdriver.remote.script_key import ScriptKey
|
|
3
4
|
from osn_selenium.abstract.instances.script import AbstractScript
|
|
4
5
|
|
|
5
6
|
|
|
@@ -51,7 +52,7 @@ class AbstractCoreScriptMixin(ABC):
|
|
|
51
52
|
...
|
|
52
53
|
|
|
53
54
|
@abstractmethod
|
|
54
|
-
def pin_script(self, script: str, script_key: Optional[Any] = None) ->
|
|
55
|
+
def pin_script(self, script: str, script_key: Optional[Any] = None) -> ScriptKey:
|
|
55
56
|
"""
|
|
56
57
|
Pins a script to the browser for faster execution.
|
|
57
58
|
|
|
@@ -60,7 +61,7 @@ class AbstractCoreScriptMixin(ABC):
|
|
|
60
61
|
script_key (Optional[Any]): An optional key to identify the script.
|
|
61
62
|
|
|
62
63
|
Returns:
|
|
63
|
-
|
|
64
|
+
ScriptKey: The key associated with the pinned script.
|
|
64
65
|
"""
|
|
65
66
|
|
|
66
67
|
...
|
|
@@ -77,12 +78,12 @@ class AbstractCoreScriptMixin(ABC):
|
|
|
77
78
|
...
|
|
78
79
|
|
|
79
80
|
@abstractmethod
|
|
80
|
-
def unpin(self, script_key:
|
|
81
|
+
def unpin(self, script_key: ScriptKey) -> None:
|
|
81
82
|
"""
|
|
82
83
|
Unpins a previously pinned script.
|
|
83
84
|
|
|
84
85
|
Args:
|
|
85
|
-
script_key (
|
|
86
|
+
script_key (ScriptKey): The key of the script to unpin.
|
|
86
87
|
"""
|
|
87
88
|
|
|
88
89
|
...
|
|
@@ -66,6 +66,17 @@ class AbstractCoreWindowMixin(ABC):
|
|
|
66
66
|
|
|
67
67
|
...
|
|
68
68
|
|
|
69
|
+
@abstractmethod
|
|
70
|
+
def get_orientation(self) -> Literal["LANDSCAPE", "PORTRAIT"]:
|
|
71
|
+
"""
|
|
72
|
+
Gets the current orientation of the browser.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
Literal["LANDSCAPE", "PORTRAIT"]: The current orientation.
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
...
|
|
79
|
+
|
|
69
80
|
@abstractmethod
|
|
70
81
|
def get_window_handle(self, window: Optional[Union[str, int]] = None) -> str:
|
|
71
82
|
"""
|
|
@@ -140,17 +151,6 @@ class AbstractCoreWindowMixin(ABC):
|
|
|
140
151
|
|
|
141
152
|
...
|
|
142
153
|
|
|
143
|
-
@abstractmethod
|
|
144
|
-
def orientation(self) -> Literal["LANDSCAPE", "PORTRAIT"]:
|
|
145
|
-
"""
|
|
146
|
-
Gets the current orientation of the browser.
|
|
147
|
-
|
|
148
|
-
Returns:
|
|
149
|
-
Literal["LANDSCAPE", "PORTRAIT"]: The current orientation.
|
|
150
|
-
"""
|
|
151
|
-
|
|
152
|
-
...
|
|
153
|
-
|
|
154
154
|
@abstractmethod
|
|
155
155
|
def set_orientation(self, value: Literal["LANDSCAPE", "PORTRAIT"]) -> None:
|
|
156
156
|
"""
|
|
@@ -2,9 +2,7 @@ import trio
|
|
|
2
2
|
import inspect
|
|
3
3
|
import warnings
|
|
4
4
|
import functools
|
|
5
|
-
from osn_selenium.exceptions.devtools import ExceptionThrown
|
|
6
5
|
from osn_selenium.exceptions.instance import NotExpectedTypeError
|
|
7
|
-
from osn_selenium.dev_tools._exception_helpers import log_exception
|
|
8
6
|
from typing import (
|
|
9
7
|
Any,
|
|
10
8
|
Callable,
|
|
@@ -15,7 +13,7 @@ from typing import (
|
|
|
15
13
|
)
|
|
16
14
|
|
|
17
15
|
|
|
18
|
-
__all__ = ["background_task_decorator", "
|
|
16
|
+
__all__ = ["background_task_decorator", "warn_if_active"]
|
|
19
17
|
|
|
20
18
|
if TYPE_CHECKING:
|
|
21
19
|
from osn_selenium.dev_tools.manager import DevTools
|
|
@@ -76,45 +74,6 @@ def warn_if_active(func: _METHOD) -> _METHOD:
|
|
|
76
74
|
raise NotExpectedTypeError(expected_type=["coroutine function", "function"], received_instance=func)
|
|
77
75
|
|
|
78
76
|
|
|
79
|
-
def log_on_error(func: _METHOD) -> _METHOD:
|
|
80
|
-
"""
|
|
81
|
-
Decorator that logs any `BaseException` raised by the decorated async function.
|
|
82
|
-
|
|
83
|
-
If an exception occurs, it is logged using `log_exception`, and an `ExceptionThrown`
|
|
84
|
-
object wrapping the exception is returned instead of re-raising it.
|
|
85
|
-
|
|
86
|
-
Args:
|
|
87
|
-
func (_METHOD): The asynchronous function to be wrapped.
|
|
88
|
-
|
|
89
|
-
Returns:
|
|
90
|
-
_METHOD: The wrapped asynchronous function.
|
|
91
|
-
"""
|
|
92
|
-
|
|
93
|
-
@functools.wraps(func)
|
|
94
|
-
def sync_wrapper(*args: _METHOD_INPUT.args, **kwargs: _METHOD_INPUT.kwargs) -> _METHOD_OUTPUT:
|
|
95
|
-
try:
|
|
96
|
-
return func(*args, **kwargs)
|
|
97
|
-
except BaseException as exception:
|
|
98
|
-
log_exception(exception)
|
|
99
|
-
return ExceptionThrown(exception)
|
|
100
|
-
|
|
101
|
-
@functools.wraps(func)
|
|
102
|
-
async def async_wrapper(*args: _METHOD_INPUT.args, **kwargs: _METHOD_INPUT.kwargs) -> _METHOD_OUTPUT:
|
|
103
|
-
try:
|
|
104
|
-
return await func(*args, **kwargs)
|
|
105
|
-
except BaseException as exception:
|
|
106
|
-
log_exception(exception)
|
|
107
|
-
return ExceptionThrown(exception)
|
|
108
|
-
|
|
109
|
-
if inspect.iscoroutinefunction(func):
|
|
110
|
-
return async_wrapper
|
|
111
|
-
|
|
112
|
-
if inspect.isfunction(func):
|
|
113
|
-
return sync_wrapper
|
|
114
|
-
|
|
115
|
-
raise NotExpectedTypeError(expected_type=["coroutine function", "function"], received_instance=func)
|
|
116
|
-
|
|
117
|
-
|
|
118
77
|
def background_task_decorator(func: "DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT") -> "DEVTOOLS_BACKGROUND_FUNCTION_TYPEHINT":
|
|
119
78
|
"""
|
|
120
79
|
Decorator for target background tasks to manage their lifecycle.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
import random
|
|
3
|
+
from osn_selenium.exceptions.base import ExceptionThrown
|
|
4
|
+
from osn_selenium.exceptions.devtools import CDPEndExceptions
|
|
3
5
|
from typing import (
|
|
4
6
|
Any,
|
|
5
7
|
Callable,
|
|
@@ -10,10 +12,6 @@ from typing import (
|
|
|
10
12
|
from osn_selenium.exceptions.configuration import (
|
|
11
13
|
NotExpectedValueError
|
|
12
14
|
)
|
|
13
|
-
from osn_selenium.exceptions.devtools import (
|
|
14
|
-
CDPEndExceptions,
|
|
15
|
-
ExceptionThrown
|
|
16
|
-
)
|
|
17
15
|
|
|
18
16
|
|
|
19
17
|
__all__ = ["cdp_command_error", "execute_cdp_command", "wait_one"]
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
from pydantic import Field
|
|
3
3
|
from osn_selenium._base_models import DictModel
|
|
4
|
+
from osn_selenium.exceptions.base import ExceptionThrown
|
|
5
|
+
from osn_selenium.exceptions.devtools import CDPEndExceptions
|
|
4
6
|
from osn_selenium.dev_tools._functions import execute_cdp_command
|
|
5
|
-
from osn_selenium.exceptions.devtools import (
|
|
6
|
-
CDPEndExceptions,
|
|
7
|
-
ExceptionThrown
|
|
8
|
-
)
|
|
9
7
|
from typing import (
|
|
10
8
|
Any,
|
|
11
9
|
Callable,
|
|
@@ -134,7 +132,7 @@ async def _build_kwargs_from_handlers_func(self: DevToolsTarget, handlers: DictM
|
|
|
134
132
|
kwargs_ready_event = trio.Event()
|
|
135
133
|
kwargs_ready_events.append(kwargs_ready_event)
|
|
136
134
|
|
|
137
|
-
self.
|
|
135
|
+
self._nursery.start_soon(
|
|
138
136
|
handler_settings.func,
|
|
139
137
|
self,
|
|
140
138
|
kwargs_ready_event,
|
|
@@ -243,7 +241,7 @@ async def _handle_auth_required(
|
|
|
243
241
|
)
|
|
244
242
|
|
|
245
243
|
if response_handle_func is not None:
|
|
246
|
-
self.
|
|
244
|
+
self._nursery.start_soon(response_handle_func, self, response)
|
|
247
245
|
except* CDPEndExceptions:
|
|
248
246
|
pass
|
|
249
247
|
except* BaseException as error:
|
|
@@ -505,7 +503,7 @@ async def _handle_request_paused(
|
|
|
505
503
|
)
|
|
506
504
|
|
|
507
505
|
if response_handle_func is not None:
|
|
508
|
-
self.
|
|
506
|
+
self._nursery.start_soon(response_handle_func, self, response)
|
|
509
507
|
except* CDPEndExceptions:
|
|
510
508
|
pass
|
|
511
509
|
except* BaseException as error:
|