osn-selenium 1.0.0__py3-none-any.whl → 1.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- osn_selenium/_base_models.py +41 -0
- osn_selenium/_cdp_import.py +253 -0
- osn_selenium/_decorators.py +57 -0
- osn_selenium/_trio_threads_helpers.py +157 -0
- osn_selenium/_typehints.py +1 -1
- osn_selenium/abstract/executors/cdp.py +63 -0
- osn_selenium/abstract/webdriver/blink/base.py +14 -0
- osn_selenium/abstract/webdriver/blink/lifecycle.py +8 -8
- osn_selenium/abstract/webdriver/core/base.py +0 -14
- osn_selenium/abstract/webdriver/core/capture.py +4 -3
- osn_selenium/abstract/webdriver/core/lifecycle.py +8 -8
- osn_selenium/abstract/webdriver/core/script.py +5 -4
- osn_selenium/abstract/webdriver/core/window.py +11 -11
- osn_selenium/browsers_handler/models.py +1 -1
- osn_selenium/dev_tools/_decorators.py +19 -51
- osn_selenium/dev_tools/_functions.py +2 -4
- osn_selenium/dev_tools/_typehints.py +5 -2
- osn_selenium/dev_tools/_wrappers.py +0 -3
- osn_selenium/dev_tools/domains/__init__.py +2 -2
- osn_selenium/dev_tools/domains/abstract.py +1 -1
- osn_selenium/dev_tools/domains/fetch.py +6 -8
- osn_selenium/dev_tools/domains_default/fetch.py +2 -2
- osn_selenium/dev_tools/filters.py +1 -1
- osn_selenium/dev_tools/logger/main.py +9 -21
- osn_selenium/dev_tools/logger/models.py +1 -1
- osn_selenium/dev_tools/logger/target.py +49 -29
- osn_selenium/dev_tools/manager/base.py +10 -42
- osn_selenium/dev_tools/manager/lifecycle.py +84 -75
- osn_selenium/dev_tools/manager/logging.py +1 -1
- osn_selenium/dev_tools/manager/targets.py +13 -5
- osn_selenium/dev_tools/models.py +1 -1
- osn_selenium/dev_tools/settings.py +9 -5
- osn_selenium/dev_tools/target/base.py +30 -34
- osn_selenium/dev_tools/target/discovery.py +1 -1
- osn_selenium/dev_tools/target/events.py +2 -2
- osn_selenium/dev_tools/target/fingerprint.py +1 -1
- osn_selenium/dev_tools/target/lifecycle.py +103 -38
- osn_selenium/dev_tools/target/logging.py +11 -3
- osn_selenium/exceptions/__init__.py +0 -1
- osn_selenium/exceptions/base.py +28 -1
- osn_selenium/exceptions/bidi_bridge.py +59 -0
- osn_selenium/exceptions/configuration.py +1 -8
- osn_selenium/exceptions/dependencies.py +60 -0
- osn_selenium/exceptions/devtools.py +9 -39
- osn_selenium/exceptions/experimental.py +26 -0
- osn_selenium/exceptions/flags.py +0 -2
- osn_selenium/exceptions/instance.py +1 -9
- osn_selenium/exceptions/javascript.py +0 -2
- osn_selenium/exceptions/logic.py +0 -2
- osn_selenium/exceptions/path.py +1 -9
- osn_selenium/exceptions/platform.py +0 -2
- osn_selenium/exceptions/protocol.py +0 -3
- osn_selenium/exceptions/webdriver.py +1 -7
- osn_selenium/exceptions/window.py +1 -8
- osn_selenium/executors/sync/cdp.py +95 -0
- osn_selenium/executors/trio_bidi/cdp.py +101 -0
- osn_selenium/executors/trio_bidi/javascript.py +101 -0
- osn_selenium/executors/trio_threads/cdp.py +99 -0
- osn_selenium/executors/trio_threads/javascript.py +1 -1
- osn_selenium/executors/unified/javascript.py +0 -4
- osn_selenium/flags/base.py +7 -13
- osn_selenium/flags/blink.py +2 -8
- osn_selenium/flags/chrome.py +6 -6
- osn_selenium/flags/edge.py +6 -6
- osn_selenium/flags/models/base.py +4 -4
- osn_selenium/flags/models/blink.py +1 -1
- osn_selenium/flags/models/values.py +1 -1
- osn_selenium/instances/convert.py +44 -3
- osn_selenium/instances/protocols.py +47 -1
- osn_selenium/instances/sync/action_chains/__init__.py +6 -0
- osn_selenium/instances/sync/browsing_context.py +2 -2
- osn_selenium/instances/sync/script.py +7 -2
- osn_selenium/instances/sync/shadow_root.py +30 -8
- osn_selenium/instances/sync/web_element.py +1 -1
- osn_selenium/instances/trio_bidi/__init__.py +1 -0
- osn_selenium/instances/trio_bidi/shadow_root.py +180 -0
- osn_selenium/instances/trio_bidi/switch_to.py +143 -0
- osn_selenium/instances/trio_bidi/web_driver_wait.py +124 -0
- osn_selenium/instances/trio_bidi/web_element.py +239 -0
- osn_selenium/instances/trio_threads/action_chains/__init__.py +6 -0
- osn_selenium/instances/trio_threads/action_chains/base.py +1 -1
- osn_selenium/instances/trio_threads/alert.py +1 -1
- osn_selenium/instances/trio_threads/browser.py +1 -1
- osn_selenium/instances/trio_threads/browsing_context.py +3 -3
- osn_selenium/instances/trio_threads/dialog.py +1 -1
- osn_selenium/instances/trio_threads/fedcm.py +1 -1
- osn_selenium/instances/trio_threads/mobile.py +1 -1
- osn_selenium/instances/trio_threads/network.py +1 -1
- osn_selenium/instances/trio_threads/permissions.py +1 -1
- osn_selenium/instances/trio_threads/script.py +8 -3
- osn_selenium/instances/trio_threads/shadow_root.py +46 -15
- osn_selenium/instances/trio_threads/storage.py +1 -1
- osn_selenium/instances/trio_threads/switch_to.py +1 -1
- osn_selenium/instances/trio_threads/web_driver_wait.py +1 -1
- osn_selenium/instances/trio_threads/web_element.py +1 -1
- osn_selenium/instances/trio_threads/web_extension.py +1 -1
- osn_selenium/instances/unified/browsing_context.py +2 -2
- osn_selenium/instances/unified/script.py +2 -2
- osn_selenium/instances/unified/web_element.py +3 -5
- osn_selenium/javascript/fingerprint/__init__.py +3 -2
- osn_selenium/javascript/fingerprint/registry/models.py +1 -1
- osn_selenium/javascript/fingerprint/spoof/core_rules.py +1 -1
- osn_selenium/javascript/fingerprint/spoof/noise.py +1 -1
- osn_selenium/javascript/models.py +1 -1
- osn_selenium/models.py +2 -47
- osn_selenium/trio_bidi/__init__.py +1 -0
- osn_selenium/trio_bidi/_context_vars.py +12 -0
- osn_selenium/trio_bidi/_error_mappings.py +123 -0
- osn_selenium/trio_bidi/_error_redirects.py +194 -0
- osn_selenium/trio_bidi/_file_functions.py +28 -0
- osn_selenium/trio_bidi/_internal_mappings.py +10 -0
- osn_selenium/trio_bidi/_models.py +199 -0
- osn_selenium/trio_bidi/_typehints.py +20 -0
- osn_selenium/trio_bidi/connection_pool.py +587 -0
- osn_selenium/trio_bidi/mapping/__init__.py +1 -0
- osn_selenium/trio_bidi/mapping/_constants.py +14 -0
- osn_selenium/trio_bidi/mapping/_js_snippets.py +285 -0
- osn_selenium/trio_bidi/mapping/_utils.py +4 -0
- osn_selenium/trio_bidi/mapping/request_functions/__init__.py +87 -0
- osn_selenium/trio_bidi/mapping/request_functions/_alert.py +102 -0
- osn_selenium/trio_bidi/mapping/request_functions/_args_helpers.py +225 -0
- osn_selenium/trio_bidi/mapping/request_functions/_capture.py +71 -0
- osn_selenium/trio_bidi/mapping/request_functions/_cdp.py +40 -0
- osn_selenium/trio_bidi/mapping/request_functions/_element.py +55 -0
- osn_selenium/trio_bidi/mapping/request_functions/_file.py +32 -0
- osn_selenium/trio_bidi/mapping/request_functions/_navigation.py +147 -0
- osn_selenium/trio_bidi/mapping/request_functions/_script.py +85 -0
- osn_selenium/trio_bidi/mapping/request_functions/_shadow_root.py +65 -0
- osn_selenium/trio_bidi/mapping/request_functions/_switch_to.py +59 -0
- osn_selenium/trio_bidi/mapping/request_functions/_web_element.py +448 -0
- osn_selenium/trio_bidi/mapping/request_functions/_window.py +125 -0
- osn_selenium/trio_bidi/mapping/response_functions/__init__.py +86 -0
- osn_selenium/trio_bidi/mapping/response_functions/_alert.py +81 -0
- osn_selenium/trio_bidi/mapping/response_functions/_args_helpers.py +183 -0
- osn_selenium/trio_bidi/mapping/response_functions/_args_validators.py +153 -0
- osn_selenium/trio_bidi/mapping/response_functions/_capture.py +71 -0
- osn_selenium/trio_bidi/mapping/response_functions/_cdp.py +26 -0
- osn_selenium/trio_bidi/mapping/response_functions/_element.py +58 -0
- osn_selenium/trio_bidi/mapping/response_functions/_file.py +30 -0
- osn_selenium/trio_bidi/mapping/response_functions/_navigation.py +120 -0
- osn_selenium/trio_bidi/mapping/response_functions/_script.py +57 -0
- osn_selenium/trio_bidi/mapping/response_functions/_shadow_root.py +58 -0
- osn_selenium/trio_bidi/mapping/response_functions/_switch_to.py +57 -0
- osn_selenium/trio_bidi/mapping/response_functions/_web_element.py +368 -0
- osn_selenium/trio_bidi/mapping/response_functions/_window.py +119 -0
- osn_selenium/trio_bidi/mixin.py +186 -0
- osn_selenium/trio_bidi/remote_connection.py +164 -0
- osn_selenium/{base_mixin.py → trio_threads_mixin.py} +31 -40
- osn_selenium/webdrivers/_args_helpers.py +120 -7
- osn_selenium/webdrivers/_bridges.py +2 -2
- osn_selenium/webdrivers/_executable_tables/models.py +1 -1
- osn_selenium/webdrivers/_typehints.py +9 -3
- osn_selenium/webdrivers/protocols.py +81 -1
- osn_selenium/webdrivers/sync/blink/__init__.py +11 -1
- osn_selenium/webdrivers/sync/blink/base.py +23 -1
- osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
- osn_selenium/webdrivers/sync/chrome/__init__.py +36 -1
- osn_selenium/webdrivers/sync/chrome/base.py +13 -1
- osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
- osn_selenium/webdrivers/sync/core/__init__.py +10 -1
- osn_selenium/webdrivers/sync/core/base.py +18 -18
- osn_selenium/webdrivers/sync/core/capture.py +3 -2
- osn_selenium/webdrivers/sync/core/file.py +3 -2
- osn_selenium/webdrivers/sync/core/lifecycle.py +44 -10
- osn_selenium/webdrivers/sync/core/script.py +3 -2
- osn_selenium/webdrivers/sync/core/window.py +3 -3
- osn_selenium/webdrivers/sync/edge/__init__.py +36 -1
- osn_selenium/webdrivers/sync/edge/base.py +13 -1
- osn_selenium/webdrivers/sync/edge/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/edge/settings.py +6 -1
- osn_selenium/webdrivers/sync/yandex/__init__.py +36 -1
- osn_selenium/webdrivers/sync/yandex/base.py +13 -1
- osn_selenium/webdrivers/sync/yandex/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/yandex/settings.py +6 -1
- osn_selenium/webdrivers/trio_bidi/__init__.py +1 -0
- osn_selenium/webdrivers/trio_bidi/blink/__init__.py +132 -0
- osn_selenium/webdrivers/trio_bidi/blink/base.py +167 -0
- osn_selenium/webdrivers/trio_bidi/blink/lifecycle.py +89 -0
- osn_selenium/webdrivers/trio_bidi/blink/settings.py +63 -0
- osn_selenium/webdrivers/trio_bidi/chrome/__init__.py +114 -0
- osn_selenium/webdrivers/trio_bidi/chrome/base.py +127 -0
- osn_selenium/webdrivers/trio_bidi/chrome/lifecycle.py +85 -0
- osn_selenium/webdrivers/trio_bidi/chrome/settings.py +63 -0
- osn_selenium/webdrivers/trio_bidi/core/__init__.py +95 -0
- osn_selenium/webdrivers/trio_bidi/core/actions.py +70 -0
- osn_selenium/webdrivers/trio_bidi/core/base.py +200 -0
- osn_selenium/webdrivers/trio_bidi/core/capture.py +39 -0
- osn_selenium/webdrivers/trio_bidi/core/devtools.py +49 -0
- osn_selenium/webdrivers/trio_bidi/core/element.py +64 -0
- osn_selenium/webdrivers/trio_bidi/core/lifecycle.py +135 -0
- osn_selenium/webdrivers/trio_bidi/core/navigation.py +37 -0
- osn_selenium/webdrivers/trio_bidi/core/script.py +56 -0
- osn_selenium/webdrivers/trio_bidi/core/settings.py +36 -0
- osn_selenium/webdrivers/trio_bidi/core/window.py +134 -0
- osn_selenium/webdrivers/trio_bidi/edge/__init__.py +114 -0
- osn_selenium/webdrivers/trio_bidi/edge/base.py +123 -0
- osn_selenium/webdrivers/trio_bidi/edge/lifecycle.py +85 -0
- osn_selenium/webdrivers/trio_bidi/edge/settings.py +63 -0
- osn_selenium/webdrivers/trio_bidi/yandex/__init__.py +114 -0
- osn_selenium/webdrivers/trio_bidi/yandex/base.py +120 -0
- osn_selenium/webdrivers/trio_bidi/yandex/lifecycle.py +85 -0
- osn_selenium/webdrivers/trio_bidi/yandex/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/blink/__init__.py +18 -2
- osn_selenium/webdrivers/trio_threads/blink/base.py +25 -1
- osn_selenium/webdrivers/trio_threads/blink/casting.py +1 -1
- osn_selenium/webdrivers/trio_threads/blink/features.py +1 -1
- osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
- osn_selenium/webdrivers/trio_threads/blink/logging.py +1 -1
- osn_selenium/webdrivers/trio_threads/blink/network.py +1 -1
- osn_selenium/webdrivers/trio_threads/chrome/__init__.py +34 -1
- osn_selenium/webdrivers/trio_threads/chrome/base.py +14 -2
- osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/chrome/settings.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/__init__.py +10 -14
- osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/base.py +18 -22
- osn_selenium/webdrivers/trio_threads/core/capture.py +4 -3
- osn_selenium/webdrivers/trio_threads/core/comonents.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/devtools.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/element.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/file.py +5 -4
- osn_selenium/webdrivers/trio_threads/core/lifecycle.py +45 -11
- osn_selenium/webdrivers/trio_threads/core/navigation.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/script.py +4 -3
- osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/window.py +6 -6
- osn_selenium/webdrivers/trio_threads/edge/__init__.py +34 -1
- osn_selenium/webdrivers/trio_threads/edge/base.py +14 -2
- osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/edge/settings.py +1 -1
- osn_selenium/webdrivers/trio_threads/yandex/__init__.py +34 -1
- osn_selenium/webdrivers/trio_threads/yandex/base.py +14 -2
- osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/yandex/settings.py +1 -1
- osn_selenium/webdrivers/unified/blink/base.py +9 -1
- osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
- osn_selenium/webdrivers/unified/chrome/base.py +9 -1
- osn_selenium/webdrivers/unified/core/auth.py +4 -2
- osn_selenium/webdrivers/unified/core/base.py +19 -6
- osn_selenium/webdrivers/unified/core/capture.py +3 -2
- osn_selenium/webdrivers/unified/core/components.py +12 -7
- osn_selenium/webdrivers/unified/core/devtools.py +2 -1
- osn_selenium/webdrivers/unified/core/file.py +3 -2
- osn_selenium/webdrivers/unified/core/lifecycle.py +5 -3
- osn_selenium/webdrivers/unified/core/script.py +5 -3
- osn_selenium/webdrivers/unified/core/storage.py +2 -1
- osn_selenium/webdrivers/unified/core/window.py +9 -8
- osn_selenium/webdrivers/unified/edge/base.py +9 -1
- osn_selenium/webdrivers/unified/yandex/base.py +9 -1
- {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/METADATA +24 -10
- osn_selenium-1.2.0.dist-info/RECORD +480 -0
- {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/WHEEL +1 -1
- osn_selenium/abstract/executors/cdp/__init__.py +0 -435
- osn_selenium/abstract/executors/cdp/accessibility.py +0 -62
- osn_selenium/abstract/executors/cdp/animation.py +0 -47
- osn_selenium/abstract/executors/cdp/audits.py +0 -39
- osn_selenium/abstract/executors/cdp/autofill.py +0 -34
- osn_selenium/abstract/executors/cdp/background_service.py +0 -22
- osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -95
- osn_selenium/abstract/executors/cdp/browser.py +0 -122
- osn_selenium/abstract/executors/cdp/cache_storage.py +0 -49
- osn_selenium/abstract/executors/cdp/cast.py +0 -31
- osn_selenium/abstract/executors/cdp/console.py +0 -18
- osn_selenium/abstract/executors/cdp/css.py +0 -197
- osn_selenium/abstract/executors/cdp/debugger.py +0 -198
- osn_selenium/abstract/executors/cdp/device_access.py +0 -22
- osn_selenium/abstract/executors/cdp/device_orientation.py +0 -14
- osn_selenium/abstract/executors/cdp/dom.py +0 -305
- osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -57
- osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -42
- osn_selenium/abstract/executors/cdp/dom_storage.py +0 -31
- osn_selenium/abstract/executors/cdp/emulation.py +0 -259
- osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -18
- osn_selenium/abstract/executors/cdp/extensions.py +0 -31
- osn_selenium/abstract/executors/cdp/fed_cm.py +0 -35
- osn_selenium/abstract/executors/cdp/fetch.py +0 -76
- osn_selenium/abstract/executors/cdp/file_system.py +0 -11
- osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -30
- osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -73
- osn_selenium/abstract/executors/cdp/indexed_db.py +0 -99
- osn_selenium/abstract/executors/cdp/input.py +0 -158
- osn_selenium/abstract/executors/cdp/inspector.py +0 -14
- osn_selenium/abstract/executors/cdp/io.py +0 -24
- osn_selenium/abstract/executors/cdp/layer_tree.py +0 -61
- osn_selenium/abstract/executors/cdp/log.py +0 -27
- osn_selenium/abstract/executors/cdp/media.py +0 -14
- osn_selenium/abstract/executors/cdp/memory.py +0 -61
- osn_selenium/abstract/executors/cdp/network.py +0 -252
- osn_selenium/abstract/executors/cdp/overlay.py +0 -166
- osn_selenium/abstract/executors/cdp/page.py +0 -347
- osn_selenium/abstract/executors/cdp/performance.py +0 -28
- osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -11
- osn_selenium/abstract/executors/cdp/preload.py +0 -14
- osn_selenium/abstract/executors/cdp/profiler.py +0 -54
- osn_selenium/abstract/executors/cdp/pwa.py +0 -46
- osn_selenium/abstract/executors/cdp/runtime.py +0 -176
- osn_selenium/abstract/executors/cdp/schema.py +0 -11
- osn_selenium/abstract/executors/cdp/security.py +0 -26
- osn_selenium/abstract/executors/cdp/service_worker.py +0 -54
- osn_selenium/abstract/executors/cdp/storage.py +0 -175
- osn_selenium/abstract/executors/cdp/system_info.py +0 -24
- osn_selenium/abstract/executors/cdp/target.py +0 -125
- osn_selenium/abstract/executors/cdp/tethering.py +0 -14
- osn_selenium/abstract/executors/cdp/tracing.py +0 -48
- osn_selenium/abstract/executors/cdp/web_audio.py +0 -19
- osn_selenium/abstract/executors/cdp/web_authn.py +0 -76
- osn_selenium/executors/sync/cdp/__init__.py +0 -550
- osn_selenium/executors/sync/cdp/accessibility.py +0 -74
- osn_selenium/executors/sync/cdp/animation.py +0 -50
- osn_selenium/executors/sync/cdp/audits.py +0 -48
- osn_selenium/executors/sync/cdp/autofill.py +0 -39
- osn_selenium/executors/sync/cdp/background_service.py +0 -30
- osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -101
- osn_selenium/executors/sync/cdp/browser.py +0 -131
- osn_selenium/executors/sync/cdp/cache_storage.py +0 -66
- osn_selenium/executors/sync/cdp/cast.py +0 -38
- osn_selenium/executors/sync/cdp/console.py +0 -24
- osn_selenium/executors/sync/cdp/css.py +0 -187
- osn_selenium/executors/sync/cdp/debugger.py +0 -206
- osn_selenium/executors/sync/cdp/device_access.py +0 -27
- osn_selenium/executors/sync/cdp/device_orientation.py +0 -24
- osn_selenium/executors/sync/cdp/dom.py +0 -310
- osn_selenium/executors/sync/cdp/dom_debugger.py +0 -56
- osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -58
- osn_selenium/executors/sync/cdp/dom_storage.py +0 -38
- osn_selenium/executors/sync/cdp/emulation.py +0 -270
- osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -27
- osn_selenium/executors/sync/cdp/extensions.py +0 -39
- osn_selenium/executors/sync/cdp/fed_cm.py +0 -45
- osn_selenium/executors/sync/cdp/fetch.py +0 -96
- osn_selenium/executors/sync/cdp/file_system.py +0 -18
- osn_selenium/executors/sync/cdp/headless_experimental.py +0 -44
- osn_selenium/executors/sync/cdp/heap_profiler.py +0 -89
- osn_selenium/executors/sync/cdp/indexed_db.py +0 -142
- osn_selenium/executors/sync/cdp/input.py +0 -233
- osn_selenium/executors/sync/cdp/inspector.py +0 -21
- osn_selenium/executors/sync/cdp/io.py +0 -33
- osn_selenium/executors/sync/cdp/layer_tree.py +0 -71
- osn_selenium/executors/sync/cdp/log.py +0 -35
- osn_selenium/executors/sync/cdp/media.py +0 -21
- osn_selenium/executors/sync/cdp/memory.py +0 -62
- osn_selenium/executors/sync/cdp/network.py +0 -287
- osn_selenium/executors/sync/cdp/overlay.py +0 -174
- osn_selenium/executors/sync/cdp/page.py +0 -365
- osn_selenium/executors/sync/cdp/performance.py +0 -33
- osn_selenium/executors/sync/cdp/performance_timeline.py +0 -26
- osn_selenium/executors/sync/cdp/preload.py +0 -21
- osn_selenium/executors/sync/cdp/profiler.py +0 -58
- osn_selenium/executors/sync/cdp/pwa.py +0 -55
- osn_selenium/executors/sync/cdp/runtime.py +0 -221
- osn_selenium/executors/sync/cdp/schema.py +0 -23
- osn_selenium/executors/sync/cdp/security.py +0 -30
- osn_selenium/executors/sync/cdp/service_worker.py +0 -56
- osn_selenium/executors/sync/cdp/storage.py +0 -151
- osn_selenium/executors/sync/cdp/system_info.py +0 -30
- osn_selenium/executors/sync/cdp/target.py +0 -147
- osn_selenium/executors/sync/cdp/tethering.py +0 -21
- osn_selenium/executors/sync/cdp/tracing.py +0 -62
- osn_selenium/executors/sync/cdp/web_audio.py +0 -24
- osn_selenium/executors/sync/cdp/web_authn.py +0 -82
- osn_selenium/executors/trio_threads/cdp/__init__.py +0 -771
- osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -87
- osn_selenium/executors/trio_threads/cdp/animation.py +0 -63
- osn_selenium/executors/trio_threads/cdp/audits.py +0 -57
- osn_selenium/executors/trio_threads/cdp/autofill.py +0 -52
- osn_selenium/executors/trio_threads/cdp/background_service.py +0 -40
- osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -111
- osn_selenium/executors/trio_threads/cdp/browser.py +0 -140
- osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -79
- osn_selenium/executors/trio_threads/cdp/cast.py +0 -47
- osn_selenium/executors/trio_threads/cdp/console.py +0 -33
- osn_selenium/executors/trio_threads/cdp/css.py +0 -196
- osn_selenium/executors/trio_threads/cdp/debugger.py +0 -219
- osn_selenium/executors/trio_threads/cdp/device_access.py +0 -40
- osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -34
- osn_selenium/executors/trio_threads/cdp/dom.py +0 -319
- osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -69
- osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -71
- osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -51
- osn_selenium/executors/trio_threads/cdp/emulation.py +0 -283
- osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -37
- osn_selenium/executors/trio_threads/cdp/extensions.py +0 -52
- osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -54
- osn_selenium/executors/trio_threads/cdp/fetch.py +0 -105
- osn_selenium/executors/trio_threads/cdp/file_system.py +0 -31
- osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -54
- osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -102
- osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -155
- osn_selenium/executors/trio_threads/cdp/input.py +0 -242
- osn_selenium/executors/trio_threads/cdp/inspector.py +0 -34
- osn_selenium/executors/trio_threads/cdp/io.py +0 -42
- osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -84
- osn_selenium/executors/trio_threads/cdp/log.py +0 -44
- osn_selenium/executors/trio_threads/cdp/media.py +0 -30
- osn_selenium/executors/trio_threads/cdp/memory.py +0 -71
- osn_selenium/executors/trio_threads/cdp/network.py +0 -296
- osn_selenium/executors/trio_threads/cdp/overlay.py +0 -183
- osn_selenium/executors/trio_threads/cdp/page.py +0 -374
- osn_selenium/executors/trio_threads/cdp/performance.py +0 -46
- osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -36
- osn_selenium/executors/trio_threads/cdp/preload.py +0 -30
- osn_selenium/executors/trio_threads/cdp/profiler.py +0 -71
- osn_selenium/executors/trio_threads/cdp/pwa.py +0 -64
- osn_selenium/executors/trio_threads/cdp/runtime.py +0 -230
- osn_selenium/executors/trio_threads/cdp/schema.py +0 -32
- osn_selenium/executors/trio_threads/cdp/security.py +0 -43
- osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -69
- osn_selenium/executors/trio_threads/cdp/storage.py +0 -162
- osn_selenium/executors/trio_threads/cdp/system_info.py +0 -43
- osn_selenium/executors/trio_threads/cdp/target.py +0 -156
- osn_selenium/executors/trio_threads/cdp/tethering.py +0 -34
- osn_selenium/executors/trio_threads/cdp/tracing.py +0 -71
- osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -37
- osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -95
- osn_selenium/executors/unified/cdp/accessibility.py +0 -81
- osn_selenium/executors/unified/cdp/animation.py +0 -50
- osn_selenium/executors/unified/cdp/audits.py +0 -45
- osn_selenium/executors/unified/cdp/autofill.py +0 -41
- osn_selenium/executors/unified/cdp/background_service.py +0 -24
- osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -132
- osn_selenium/executors/unified/cdp/browser.py +0 -143
- osn_selenium/executors/unified/cdp/cache_storage.py +0 -69
- osn_selenium/executors/unified/cdp/cast.py +0 -32
- osn_selenium/executors/unified/cdp/console.py +0 -18
- osn_selenium/executors/unified/cdp/css.py +0 -237
- osn_selenium/executors/unified/cdp/debugger.py +0 -243
- osn_selenium/executors/unified/cdp/device_access.py +0 -21
- osn_selenium/executors/unified/cdp/device_orientation.py +0 -18
- osn_selenium/executors/unified/cdp/dom.py +0 -380
- osn_selenium/executors/unified/cdp/dom_debugger.py +0 -65
- osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -58
- osn_selenium/executors/unified/cdp/dom_storage.py +0 -38
- osn_selenium/executors/unified/cdp/emulation.py +0 -312
- osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -24
- osn_selenium/executors/unified/cdp/extensions.py +0 -45
- osn_selenium/executors/unified/cdp/fed_cm.py +0 -51
- osn_selenium/executors/unified/cdp/fetch.py +0 -111
- osn_selenium/executors/unified/cdp/file_system.py +0 -15
- osn_selenium/executors/unified/cdp/headless_experimental.py +0 -38
- osn_selenium/executors/unified/cdp/heap_profiler.py +0 -101
- osn_selenium/executors/unified/cdp/indexed_db.py +0 -157
- osn_selenium/executors/unified/cdp/input.py +0 -254
- osn_selenium/executors/unified/cdp/inspector.py +0 -15
- osn_selenium/executors/unified/cdp/io.py +0 -29
- osn_selenium/executors/unified/cdp/layer_tree.py +0 -71
- osn_selenium/executors/unified/cdp/log.py +0 -29
- osn_selenium/executors/unified/cdp/media.py +0 -15
- osn_selenium/executors/unified/cdp/memory.py +0 -59
- osn_selenium/executors/unified/cdp/network.py +0 -323
- osn_selenium/executors/unified/cdp/overlay.py +0 -209
- osn_selenium/executors/unified/cdp/page.py +0 -410
- osn_selenium/executors/unified/cdp/performance.py +0 -27
- osn_selenium/executors/unified/cdp/performance_timeline.py +0 -17
- osn_selenium/executors/unified/cdp/preload.py +0 -15
- osn_selenium/executors/unified/cdp/profiler.py +0 -55
- osn_selenium/executors/unified/cdp/pwa.py +0 -55
- osn_selenium/executors/unified/cdp/runtime.py +0 -245
- osn_selenium/executors/unified/cdp/schema.py +0 -17
- osn_selenium/executors/unified/cdp/security.py +0 -27
- osn_selenium/executors/unified/cdp/service_worker.py +0 -62
- osn_selenium/executors/unified/cdp/storage.py +0 -178
- osn_selenium/executors/unified/cdp/system_info.py +0 -24
- osn_selenium/executors/unified/cdp/target.py +0 -165
- osn_selenium/executors/unified/cdp/tethering.py +0 -15
- osn_selenium/executors/unified/cdp/tracing.py +0 -62
- osn_selenium/executors/unified/cdp/web_audio.py +0 -18
- osn_selenium/executors/unified/cdp/web_authn.py +0 -103
- osn_selenium-1.0.0.dist-info/RECORD +0 -608
- /osn_selenium/{dev_tools/_exception_helpers.py → _exception_helpers.py} +0 -0
- /osn_selenium/executors/{unified/cdp → trio_bidi}/__init__.py +0 -0
- {osn_selenium-1.0.0.dist-info → osn_selenium-1.2.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.models import WindowRect
|
|
3
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
|
+
from osn_selenium.flags.models.edge import EdgeFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_bidi.blink.lifecycle import BlinkLifecycleMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.edge.lifecycle import (
|
|
7
|
+
UnifiedEdgeLifecycleMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.edge.lifecycle import (
|
|
10
|
+
AbstractEdgeLifecycleMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["EdgeLifecycleMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class EdgeLifecycleMixin(
|
|
18
|
+
UnifiedEdgeLifecycleMixin,
|
|
19
|
+
BlinkLifecycleMixin,
|
|
20
|
+
AbstractEdgeLifecycleMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for managing the lifecycle of the Edge WebDriver.
|
|
24
|
+
|
|
25
|
+
Handles the creation, startup, shutdown, and restarting processes of the
|
|
26
|
+
underlying browser instance, ensuring clean session management.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
async def start_webdriver(
|
|
30
|
+
self,
|
|
31
|
+
flags: Optional[EdgeFlags] = None,
|
|
32
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
33
|
+
browser_name_in_system: Optional[str] = None,
|
|
34
|
+
use_browser_exe: Optional[bool] = None,
|
|
35
|
+
start_page_url: Optional[str] = None,
|
|
36
|
+
window_rect: Optional[WindowRect] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
|
|
39
|
+
flags=flags,
|
|
40
|
+
browser_exe=browser_exe,
|
|
41
|
+
browser_name_in_system=browser_name_in_system,
|
|
42
|
+
use_browser_exe=use_browser_exe,
|
|
43
|
+
start_page_url=start_page_url,
|
|
44
|
+
window_rect=window_rect,
|
|
45
|
+
)
|
|
46
|
+
await self._start_bidi_bridge()
|
|
47
|
+
|
|
48
|
+
async def __aenter__(
|
|
49
|
+
self,
|
|
50
|
+
flags: Optional[EdgeFlags] = None,
|
|
51
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
52
|
+
browser_name_in_system: Optional[str] = None,
|
|
53
|
+
use_browser_exe: Optional[bool] = None,
|
|
54
|
+
start_page_url: Optional[str] = None,
|
|
55
|
+
window_rect: Optional[WindowRect] = None,
|
|
56
|
+
) -> None:
|
|
57
|
+
await self.start_webdriver(
|
|
58
|
+
flags=flags,
|
|
59
|
+
browser_exe=browser_exe,
|
|
60
|
+
browser_name_in_system=browser_name_in_system,
|
|
61
|
+
use_browser_exe=use_browser_exe,
|
|
62
|
+
start_page_url=start_page_url,
|
|
63
|
+
window_rect=window_rect,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
async def restart_webdriver(
|
|
67
|
+
self,
|
|
68
|
+
flags: Optional[EdgeFlags] = None,
|
|
69
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
70
|
+
browser_name_in_system: Optional[str] = None,
|
|
71
|
+
use_browser_exe: Optional[bool] = None,
|
|
72
|
+
start_page_url: Optional[str] = None,
|
|
73
|
+
window_rect: Optional[WindowRect] = None,
|
|
74
|
+
) -> None:
|
|
75
|
+
await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
|
|
76
|
+
flags=flags,
|
|
77
|
+
browser_exe=browser_exe,
|
|
78
|
+
browser_name_in_system=browser_name_in_system,
|
|
79
|
+
use_browser_exe=use_browser_exe,
|
|
80
|
+
start_page_url=start_page_url,
|
|
81
|
+
window_rect=window_rect,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
await self._stop_bidi_bridge()
|
|
85
|
+
await self._start_bidi_bridge()
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.models import WindowRect
|
|
3
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
|
+
from osn_selenium.flags.models.edge import EdgeFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_bidi.blink.settings import BlinkSettingsMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.edge.settings import (
|
|
7
|
+
UnifiedEdgeSettingsMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.edge.settings import (
|
|
10
|
+
AbstractEdgeSettingsMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["EdgeSettingsMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class EdgeSettingsMixin(
|
|
18
|
+
UnifiedEdgeSettingsMixin,
|
|
19
|
+
BlinkSettingsMixin,
|
|
20
|
+
AbstractEdgeSettingsMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for configuring and updating settings of the Edge WebDriver.
|
|
24
|
+
|
|
25
|
+
Provides methods to modify browser flags, window rectangles, and other
|
|
26
|
+
configuration parameters either before startup or during a reset.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
async def reset_settings(
|
|
30
|
+
self,
|
|
31
|
+
flags: Optional[EdgeFlags] = None,
|
|
32
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
33
|
+
browser_name_in_system: Optional[str] = None,
|
|
34
|
+
use_browser_exe: Optional[bool] = None,
|
|
35
|
+
start_page_url: str = "",
|
|
36
|
+
window_rect: Optional[WindowRect] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._reset_settings_impl)(
|
|
39
|
+
flags=flags,
|
|
40
|
+
browser_exe=browser_exe,
|
|
41
|
+
browser_name_in_system=browser_name_in_system,
|
|
42
|
+
use_browser_exe=use_browser_exe,
|
|
43
|
+
start_page_url=start_page_url,
|
|
44
|
+
window_rect=window_rect,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
async def update_settings(
|
|
48
|
+
self,
|
|
49
|
+
flags: Optional[EdgeFlags] = None,
|
|
50
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
51
|
+
browser_name_in_system: Optional[str] = None,
|
|
52
|
+
use_browser_exe: Optional[bool] = None,
|
|
53
|
+
start_page_url: Optional[str] = None,
|
|
54
|
+
window_rect: Optional[WindowRect] = None,
|
|
55
|
+
) -> None:
|
|
56
|
+
await self.sync_to_trio(sync_function=self._update_settings_impl)(
|
|
57
|
+
flags=flags,
|
|
58
|
+
browser_exe=browser_exe,
|
|
59
|
+
browser_name_in_system=browser_name_in_system,
|
|
60
|
+
use_browser_exe=use_browser_exe,
|
|
61
|
+
start_page_url=start_page_url,
|
|
62
|
+
window_rect=window_rect,
|
|
63
|
+
)
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import trio
|
|
2
|
+
from osn_selenium.models import WindowRect
|
|
3
|
+
from typing import (
|
|
4
|
+
Mapping,
|
|
5
|
+
Optional,
|
|
6
|
+
Type
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
9
|
+
from osn_selenium.flags.models.yandex import YandexFlags
|
|
10
|
+
from osn_selenium.flags.yandex import YandexFlagsManager
|
|
11
|
+
from osn_selenium.dev_tools.settings import DevToolsSettings
|
|
12
|
+
from osn_selenium.webdrivers.trio_bidi.chrome import ChromeWebDriver
|
|
13
|
+
from osn_selenium.webdrivers.trio_bidi.yandex.base import YandexBaseMixin
|
|
14
|
+
from osn_selenium.abstract.webdriver.yandex import (
|
|
15
|
+
AbstractYandexWebDriver
|
|
16
|
+
)
|
|
17
|
+
from osn_selenium.webdrivers.trio_bidi.yandex.settings import YandexSettingsMixin
|
|
18
|
+
from osn_selenium.webdrivers.trio_bidi.yandex.lifecycle import YandexLifecycleMixin
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
__all__ = ["YandexWebDriver"]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class YandexWebDriver(
|
|
25
|
+
YandexBaseMixin,
|
|
26
|
+
YandexLifecycleMixin,
|
|
27
|
+
YandexSettingsMixin,
|
|
28
|
+
ChromeWebDriver,
|
|
29
|
+
AbstractYandexWebDriver,
|
|
30
|
+
):
|
|
31
|
+
"""
|
|
32
|
+
Concrete Yandex WebDriver implementation combining all functional mixins.
|
|
33
|
+
|
|
34
|
+
This class aggregates lifecycle management, element interaction, navigation,
|
|
35
|
+
and browser-specific features into a single usable driver instance.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
def __init__(
|
|
39
|
+
self,
|
|
40
|
+
webdriver_path: str,
|
|
41
|
+
flags_manager_type: Type[YandexFlagsManager] = YandexFlagsManager,
|
|
42
|
+
use_browser_exe: bool = True,
|
|
43
|
+
browser_name_in_system: str = "Yandex",
|
|
44
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
45
|
+
flags: Optional[YandexFlags] = None,
|
|
46
|
+
start_page_url: str = "about:blank",
|
|
47
|
+
implicitly_wait: int = 5,
|
|
48
|
+
page_load_timeout: int = 5,
|
|
49
|
+
script_timeout: int = 5,
|
|
50
|
+
window_rect: Optional[WindowRect] = None,
|
|
51
|
+
devtools_settings: Optional[DevToolsSettings] = None,
|
|
52
|
+
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
53
|
+
cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
|
|
54
|
+
ignore_cdp_version_package_missing: bool = True,
|
|
55
|
+
):
|
|
56
|
+
"""
|
|
57
|
+
Initializes the Trio-based Yandex WebDriver with specified configuration.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
webdriver_path (str): Path to the YandexDriver executable.
|
|
61
|
+
flags_manager_type (Type[YandexFlagsManager]): The class type used for managing Yandex flags.
|
|
62
|
+
Defaults to YandexFlagsManager.
|
|
63
|
+
use_browser_exe (bool): Whether to use a specific browser executable path or auto-detect.
|
|
64
|
+
Defaults to True.
|
|
65
|
+
browser_name_in_system (str): The name of the browser in the system registry or path.
|
|
66
|
+
Defaults to "Yandex".
|
|
67
|
+
browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Yandex browser executable.
|
|
68
|
+
flags (Optional[YandexFlags]): Initial set of flags.
|
|
69
|
+
start_page_url (str): The initial URL. Defaults to "about:blank".
|
|
70
|
+
implicitly_wait (int): Default implicit wait time.
|
|
71
|
+
page_load_timeout (int): Default page load timeout.
|
|
72
|
+
script_timeout (int): Default script timeout.
|
|
73
|
+
window_rect (Optional[WindowRect]): Initial window dimensions.
|
|
74
|
+
capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
|
|
75
|
+
cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
|
|
76
|
+
ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
ChromeWebDriver.__init__(
|
|
80
|
+
self,
|
|
81
|
+
browser_exe=browser_exe,
|
|
82
|
+
browser_name_in_system=browser_name_in_system,
|
|
83
|
+
webdriver_path=webdriver_path,
|
|
84
|
+
use_browser_exe=use_browser_exe,
|
|
85
|
+
flags_manager_type=flags_manager_type,
|
|
86
|
+
flags=flags,
|
|
87
|
+
implicitly_wait=implicitly_wait,
|
|
88
|
+
page_load_timeout=page_load_timeout,
|
|
89
|
+
script_timeout=script_timeout,
|
|
90
|
+
window_rect=window_rect,
|
|
91
|
+
devtools_settings=devtools_settings,
|
|
92
|
+
capacity_limiter=capacity_limiter,
|
|
93
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
94
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
YandexBaseMixin.__init__(
|
|
98
|
+
self,
|
|
99
|
+
browser_exe=browser_exe,
|
|
100
|
+
browser_name_in_system=browser_name_in_system,
|
|
101
|
+
use_browser_exe=use_browser_exe,
|
|
102
|
+
webdriver_path=webdriver_path,
|
|
103
|
+
architecture="trio_bidi",
|
|
104
|
+
flags_manager_type=flags_manager_type,
|
|
105
|
+
flags=flags,
|
|
106
|
+
start_page_url=start_page_url,
|
|
107
|
+
implicitly_wait=implicitly_wait,
|
|
108
|
+
page_load_timeout=page_load_timeout,
|
|
109
|
+
script_timeout=script_timeout,
|
|
110
|
+
window_rect=window_rect,
|
|
111
|
+
capacity_limiter=capacity_limiter,
|
|
112
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
113
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
114
|
+
)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import math
|
|
2
|
+
import trio
|
|
3
|
+
from osn_selenium.models import WindowRect
|
|
4
|
+
from osn_selenium.flags.models.yandex import YandexFlags
|
|
5
|
+
from osn_selenium.flags.yandex import YandexFlagsManager
|
|
6
|
+
from typing import (
|
|
7
|
+
Mapping,
|
|
8
|
+
Optional,
|
|
9
|
+
Type,
|
|
10
|
+
Union
|
|
11
|
+
)
|
|
12
|
+
from osn_selenium.webdrivers.trio_bidi.chrome.base import ChromeBaseMixin
|
|
13
|
+
from osn_selenium._typehints import (
|
|
14
|
+
ARCHITECTURES_TYPEHINT,
|
|
15
|
+
PATH_TYPEHINT
|
|
16
|
+
)
|
|
17
|
+
from osn_selenium.webdrivers.unified.yandex.base import (
|
|
18
|
+
UnifiedYandexBaseMixin
|
|
19
|
+
)
|
|
20
|
+
from osn_selenium.abstract.webdriver.yandex.base import (
|
|
21
|
+
AbstractYandexBaseMixin
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
__all__ = ["YandexBaseMixin"]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class YandexBaseMixin(UnifiedYandexBaseMixin, ChromeBaseMixin, AbstractYandexBaseMixin):
|
|
29
|
+
"""
|
|
30
|
+
Base mixin for Yandex WebDrivers handling core initialization and state management.
|
|
31
|
+
|
|
32
|
+
This class serves as the foundation for browser-specific implementations, managing
|
|
33
|
+
the WebDriver executable path, configuration flags, timeouts, and the active
|
|
34
|
+
driver instance.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
def __init__(
|
|
38
|
+
self,
|
|
39
|
+
webdriver_path: str,
|
|
40
|
+
architecture: ARCHITECTURES_TYPEHINT,
|
|
41
|
+
flags_manager_type: Type[YandexFlagsManager] = YandexFlagsManager,
|
|
42
|
+
use_browser_exe: bool = True,
|
|
43
|
+
browser_name_in_system: str = "Yandex",
|
|
44
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
45
|
+
flags: Optional[YandexFlags] = None,
|
|
46
|
+
start_page_url: str = "about:blank",
|
|
47
|
+
implicitly_wait: int = 5,
|
|
48
|
+
page_load_timeout: int = 5,
|
|
49
|
+
script_timeout: int = 5,
|
|
50
|
+
window_rect: Optional[WindowRect] = None,
|
|
51
|
+
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
52
|
+
cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
|
|
53
|
+
ignore_cdp_version_package_missing: bool = True,
|
|
54
|
+
trio_token: Optional[trio.lowlevel.TrioToken] = None,
|
|
55
|
+
bidi_buffer_size: Union[int, float] = math.inf,
|
|
56
|
+
):
|
|
57
|
+
"""
|
|
58
|
+
Initializes the Trio-based Yandex WebDriver mixin with specified configuration.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
webdriver_path (str): Path to the YandexDriver executable.
|
|
62
|
+
architecture (ARCHITECTURE_TYPEHINT): System architecture.
|
|
63
|
+
flags_manager_type (Type[YandexFlagsManager]): The class type used for managing Yandex flags.
|
|
64
|
+
Defaults to YandexFlagsManager.
|
|
65
|
+
use_browser_exe (bool): Whether to use a specific browser executable path or auto-detect.
|
|
66
|
+
Defaults to True.
|
|
67
|
+
browser_name_in_system (str): The name of the browser in the system registry or path.
|
|
68
|
+
Defaults to "Yandex".
|
|
69
|
+
browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Yandex browser executable.
|
|
70
|
+
flags (Optional[YandexFlags]): Initial set of flags.
|
|
71
|
+
start_page_url (str): The initial URL. Defaults to "about:blank".
|
|
72
|
+
implicitly_wait (int): Default implicit wait time.
|
|
73
|
+
page_load_timeout (int): Default page load timeout.
|
|
74
|
+
script_timeout (int): Default script timeout.
|
|
75
|
+
window_rect (Optional[WindowRect]): Initial window dimensions.
|
|
76
|
+
capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
|
|
77
|
+
cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
|
|
78
|
+
ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
|
|
79
|
+
trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
|
|
80
|
+
bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
ChromeBaseMixin.__init__(
|
|
84
|
+
self,
|
|
85
|
+
browser_exe=browser_exe,
|
|
86
|
+
browser_name_in_system=browser_name_in_system,
|
|
87
|
+
use_browser_exe=use_browser_exe,
|
|
88
|
+
webdriver_path=webdriver_path,
|
|
89
|
+
architecture=architecture,
|
|
90
|
+
flags_manager_type=flags_manager_type,
|
|
91
|
+
flags=flags,
|
|
92
|
+
start_page_url=start_page_url,
|
|
93
|
+
implicitly_wait=implicitly_wait,
|
|
94
|
+
page_load_timeout=page_load_timeout,
|
|
95
|
+
script_timeout=script_timeout,
|
|
96
|
+
window_rect=window_rect,
|
|
97
|
+
capacity_limiter=capacity_limiter,
|
|
98
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
99
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
100
|
+
trio_token=trio_token,
|
|
101
|
+
bidi_buffer_size=bidi_buffer_size,
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
UnifiedYandexBaseMixin.__init__(
|
|
105
|
+
self,
|
|
106
|
+
webdriver_path=webdriver_path,
|
|
107
|
+
architecture=architecture,
|
|
108
|
+
flags_manager_type=flags_manager_type,
|
|
109
|
+
use_browser_exe=use_browser_exe,
|
|
110
|
+
browser_name_in_system=browser_name_in_system,
|
|
111
|
+
browser_exe=browser_exe,
|
|
112
|
+
flags=flags,
|
|
113
|
+
start_page_url=start_page_url,
|
|
114
|
+
implicitly_wait=implicitly_wait,
|
|
115
|
+
page_load_timeout=page_load_timeout,
|
|
116
|
+
script_timeout=script_timeout,
|
|
117
|
+
window_rect=window_rect,
|
|
118
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
119
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
120
|
+
)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.models import WindowRect
|
|
3
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
|
+
from osn_selenium.flags.models.yandex import YandexFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_bidi.chrome.lifecycle import ChromeLifecycleMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.yandex.lifecycle import (
|
|
7
|
+
UnifiedYandexLifecycleMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.yandex.lifecycle import (
|
|
10
|
+
AbstractYandexLifecycleMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["YandexLifecycleMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class YandexLifecycleMixin(
|
|
18
|
+
UnifiedYandexLifecycleMixin,
|
|
19
|
+
ChromeLifecycleMixin,
|
|
20
|
+
AbstractYandexLifecycleMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for managing the lifecycle of the Yandex WebDriver.
|
|
24
|
+
|
|
25
|
+
Handles the creation, startup, shutdown, and restarting processes of the
|
|
26
|
+
underlying browser instance, ensuring clean session management.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
async def start_webdriver(
|
|
30
|
+
self,
|
|
31
|
+
flags: Optional[YandexFlags] = None,
|
|
32
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
33
|
+
browser_name_in_system: Optional[str] = None,
|
|
34
|
+
use_browser_exe: Optional[bool] = None,
|
|
35
|
+
start_page_url: Optional[str] = None,
|
|
36
|
+
window_rect: Optional[WindowRect] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
|
|
39
|
+
flags=flags,
|
|
40
|
+
browser_exe=browser_exe,
|
|
41
|
+
browser_name_in_system=browser_name_in_system,
|
|
42
|
+
use_browser_exe=use_browser_exe,
|
|
43
|
+
start_page_url=start_page_url,
|
|
44
|
+
window_rect=window_rect,
|
|
45
|
+
)
|
|
46
|
+
await self._start_bidi_bridge()
|
|
47
|
+
|
|
48
|
+
async def __aenter__(
|
|
49
|
+
self,
|
|
50
|
+
flags: Optional[YandexFlags] = None,
|
|
51
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
52
|
+
browser_name_in_system: Optional[str] = None,
|
|
53
|
+
use_browser_exe: Optional[bool] = None,
|
|
54
|
+
start_page_url: Optional[str] = None,
|
|
55
|
+
window_rect: Optional[WindowRect] = None,
|
|
56
|
+
) -> None:
|
|
57
|
+
await self.start_webdriver(
|
|
58
|
+
flags=flags,
|
|
59
|
+
browser_exe=browser_exe,
|
|
60
|
+
browser_name_in_system=browser_name_in_system,
|
|
61
|
+
use_browser_exe=use_browser_exe,
|
|
62
|
+
start_page_url=start_page_url,
|
|
63
|
+
window_rect=window_rect,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
async def restart_webdriver(
|
|
67
|
+
self,
|
|
68
|
+
flags: Optional[YandexFlags] = None,
|
|
69
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
70
|
+
browser_name_in_system: Optional[str] = None,
|
|
71
|
+
use_browser_exe: Optional[bool] = None,
|
|
72
|
+
start_page_url: Optional[str] = None,
|
|
73
|
+
window_rect: Optional[WindowRect] = None,
|
|
74
|
+
) -> None:
|
|
75
|
+
await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
|
|
76
|
+
flags=flags,
|
|
77
|
+
browser_exe=browser_exe,
|
|
78
|
+
browser_name_in_system=browser_name_in_system,
|
|
79
|
+
use_browser_exe=use_browser_exe,
|
|
80
|
+
start_page_url=start_page_url,
|
|
81
|
+
window_rect=window_rect,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
await self._stop_bidi_bridge()
|
|
85
|
+
await self._start_bidi_bridge()
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.models import WindowRect
|
|
3
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
|
+
from osn_selenium.flags.models.yandex import YandexFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_bidi.chrome.settings import ChromeSettingsMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.yandex.settings import (
|
|
7
|
+
UnifiedYandexSettingsMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.yandex.settings import (
|
|
10
|
+
AbstractYandexSettingsMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["YandexSettingsMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class YandexSettingsMixin(
|
|
18
|
+
UnifiedYandexSettingsMixin,
|
|
19
|
+
ChromeSettingsMixin,
|
|
20
|
+
AbstractYandexSettingsMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for configuring and updating settings of the Yandex WebDriver.
|
|
24
|
+
|
|
25
|
+
Provides methods to modify browser flags, window rectangles, and other
|
|
26
|
+
configuration parameters either before startup or during a reset.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
async def reset_settings(
|
|
30
|
+
self,
|
|
31
|
+
flags: Optional[YandexFlags] = None,
|
|
32
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
33
|
+
browser_name_in_system: Optional[str] = None,
|
|
34
|
+
use_browser_exe: Optional[bool] = None,
|
|
35
|
+
start_page_url: str = "",
|
|
36
|
+
window_rect: Optional[WindowRect] = None,
|
|
37
|
+
) -> None:
|
|
38
|
+
await self.sync_to_trio(sync_function=self._reset_settings_impl)(
|
|
39
|
+
flags=flags,
|
|
40
|
+
browser_exe=browser_exe,
|
|
41
|
+
browser_name_in_system=browser_name_in_system,
|
|
42
|
+
use_browser_exe=use_browser_exe,
|
|
43
|
+
start_page_url=start_page_url,
|
|
44
|
+
window_rect=window_rect,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
async def update_settings(
|
|
48
|
+
self,
|
|
49
|
+
flags: Optional[YandexFlags] = None,
|
|
50
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
51
|
+
browser_name_in_system: Optional[str] = None,
|
|
52
|
+
use_browser_exe: Optional[bool] = None,
|
|
53
|
+
start_page_url: Optional[str] = None,
|
|
54
|
+
window_rect: Optional[WindowRect] = None,
|
|
55
|
+
) -> None:
|
|
56
|
+
await self.sync_to_trio(sync_function=self._update_settings_impl)(
|
|
57
|
+
flags=flags,
|
|
58
|
+
browser_exe=browser_exe,
|
|
59
|
+
browser_name_in_system=browser_name_in_system,
|
|
60
|
+
use_browser_exe=use_browser_exe,
|
|
61
|
+
start_page_url=start_page_url,
|
|
62
|
+
window_rect=window_rect,
|
|
63
|
+
)
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import trio
|
|
2
|
-
from typing import Optional, Type
|
|
3
2
|
from osn_selenium.models import WindowRect
|
|
3
|
+
from typing import (
|
|
4
|
+
Mapping,
|
|
5
|
+
Optional,
|
|
6
|
+
Type
|
|
7
|
+
)
|
|
4
8
|
from osn_selenium._typehints import PATH_TYPEHINT
|
|
9
|
+
from osn_selenium.dev_tools.manager import DevTools
|
|
5
10
|
from osn_selenium.flags.blink import BlinkFlagsManager
|
|
6
11
|
from osn_selenium.flags.models.blink import BlinkFlags
|
|
7
12
|
from osn_selenium.dev_tools.settings import DevToolsSettings
|
|
@@ -54,6 +59,8 @@ class BlinkWebDriver(
|
|
|
54
59
|
window_rect: Optional[WindowRect] = None,
|
|
55
60
|
devtools_settings: Optional[DevToolsSettings] = None,
|
|
56
61
|
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
62
|
+
cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
|
|
63
|
+
ignore_cdp_version_package_missing: bool = True,
|
|
57
64
|
):
|
|
58
65
|
"""
|
|
59
66
|
Initializes the BlinkWebDriver instance.
|
|
@@ -102,8 +109,9 @@ class BlinkWebDriver(
|
|
|
102
109
|
page_load_timeout=page_load_timeout,
|
|
103
110
|
script_timeout=script_timeout,
|
|
104
111
|
window_rect=window_rect,
|
|
105
|
-
devtools_settings=devtools_settings,
|
|
106
112
|
capacity_limiter=capacity_limiter,
|
|
113
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
114
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
107
115
|
)
|
|
108
116
|
|
|
109
117
|
BlinkBaseMixin.__init__(
|
|
@@ -121,4 +129,12 @@ class BlinkWebDriver(
|
|
|
121
129
|
script_timeout=script_timeout,
|
|
122
130
|
window_rect=window_rect,
|
|
123
131
|
capacity_limiter=capacity_limiter,
|
|
132
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
133
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
124
134
|
)
|
|
135
|
+
|
|
136
|
+
self._devtools = DevTools(parent_webdriver=self, devtools_settings=devtools_settings)
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def devtools(self) -> DevTools:
|
|
140
|
+
return self._devtools
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
import pathlib
|
|
3
|
-
from typing import Optional, Type
|
|
4
3
|
from osn_selenium.models import WindowRect
|
|
4
|
+
from typing import (
|
|
5
|
+
Mapping,
|
|
6
|
+
Optional,
|
|
7
|
+
Type
|
|
8
|
+
)
|
|
5
9
|
from osn_selenium.flags.blink import BlinkFlagsManager
|
|
6
10
|
from osn_selenium.flags.models.blink import BlinkFlags
|
|
11
|
+
from osn_selenium.executors.trio_threads.cdp import CDPExecutor
|
|
7
12
|
from osn_selenium.webdrivers.trio_threads.core.base import CoreBaseMixin
|
|
13
|
+
from osn_selenium.webdrivers._bridges import (
|
|
14
|
+
get_cdp_executor_bridge
|
|
15
|
+
)
|
|
8
16
|
from osn_selenium._typehints import (
|
|
9
17
|
ARCHITECTURES_TYPEHINT,
|
|
10
18
|
PATH_TYPEHINT
|
|
@@ -47,6 +55,8 @@ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixi
|
|
|
47
55
|
script_timeout: int = 5,
|
|
48
56
|
window_rect: Optional[WindowRect] = None,
|
|
49
57
|
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
58
|
+
cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
|
|
59
|
+
ignore_cdp_version_package_missing: bool = True,
|
|
50
60
|
):
|
|
51
61
|
"""
|
|
52
62
|
Initializes the BlinkWebDriver instance.
|
|
@@ -83,6 +93,8 @@ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixi
|
|
|
83
93
|
the browser's default window size will be used. Defaults to None.
|
|
84
94
|
capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
|
|
85
95
|
throttle concurrent thread-based operations. Defaults to None.
|
|
96
|
+
cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
|
|
97
|
+
ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
|
|
86
98
|
"""
|
|
87
99
|
|
|
88
100
|
CoreBaseMixin.__init__(
|
|
@@ -95,6 +107,8 @@ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixi
|
|
|
95
107
|
script_timeout=script_timeout,
|
|
96
108
|
window_rect=window_rect,
|
|
97
109
|
capacity_limiter=capacity_limiter,
|
|
110
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
111
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
98
112
|
)
|
|
99
113
|
|
|
100
114
|
UnifiedBlinkBaseMixin.__init__(
|
|
@@ -112,11 +126,21 @@ class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixi
|
|
|
112
126
|
script_timeout=script_timeout,
|
|
113
127
|
window_rect=window_rect,
|
|
114
128
|
)
|
|
129
|
+
|
|
130
|
+
self._cdp_executor = CDPExecutor(
|
|
131
|
+
execute_function=get_cdp_executor_bridge(self),
|
|
132
|
+
lock=self._lock,
|
|
133
|
+
limiter=self._capacity_limiter,
|
|
134
|
+
)
|
|
115
135
|
|
|
116
136
|
@property
|
|
117
137
|
def browser_exe(self) -> Optional[pathlib.Path]:
|
|
118
138
|
return self._browser_exe_impl
|
|
119
139
|
|
|
140
|
+
@property
|
|
141
|
+
def cdp(self) -> CDPExecutor:
|
|
142
|
+
return self._cdp_executor
|
|
143
|
+
|
|
120
144
|
@property
|
|
121
145
|
def debugging_ip(self) -> Optional[str]:
|
|
122
146
|
return self._debugging_ip_impl
|