osn-selenium 1.1.0__py3-none-any.whl → 1.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- osn_selenium/_decorators.py +57 -0
- osn_selenium/_trio_threads_helpers.py +157 -0
- osn_selenium/_typehints.py +1 -1
- osn_selenium/abstract/webdriver/blink/base.py +14 -0
- osn_selenium/abstract/webdriver/blink/lifecycle.py +8 -8
- osn_selenium/abstract/webdriver/core/base.py +0 -14
- osn_selenium/abstract/webdriver/core/capture.py +4 -3
- osn_selenium/abstract/webdriver/core/lifecycle.py +8 -8
- osn_selenium/abstract/webdriver/core/script.py +5 -4
- osn_selenium/abstract/webdriver/core/window.py +11 -11
- osn_selenium/dev_tools/_decorators.py +1 -42
- osn_selenium/dev_tools/_functions.py +2 -4
- osn_selenium/dev_tools/domains/__init__.py +1 -1
- osn_selenium/dev_tools/domains/fetch.py +5 -7
- osn_selenium/dev_tools/domains_default/fetch.py +1 -1
- osn_selenium/dev_tools/logger/main.py +9 -9
- osn_selenium/dev_tools/logger/target.py +7 -7
- osn_selenium/dev_tools/manager/base.py +10 -19
- osn_selenium/dev_tools/manager/lifecycle.py +83 -74
- osn_selenium/dev_tools/manager/logging.py +1 -1
- osn_selenium/dev_tools/manager/targets.py +13 -5
- osn_selenium/dev_tools/settings.py +4 -4
- osn_selenium/dev_tools/target/base.py +18 -11
- osn_selenium/dev_tools/target/discovery.py +1 -1
- osn_selenium/dev_tools/target/events.py +2 -2
- osn_selenium/dev_tools/target/fingerprint.py +1 -1
- osn_selenium/dev_tools/target/lifecycle.py +103 -43
- osn_selenium/dev_tools/target/logging.py +1 -1
- osn_selenium/exceptions/__init__.py +0 -1
- osn_selenium/exceptions/base.py +28 -1
- osn_selenium/exceptions/bidi_bridge.py +59 -0
- osn_selenium/exceptions/configuration.py +1 -8
- osn_selenium/exceptions/dependencies.py +2 -2
- osn_selenium/exceptions/devtools.py +9 -39
- osn_selenium/exceptions/experimental.py +26 -0
- osn_selenium/exceptions/flags.py +0 -2
- osn_selenium/exceptions/instance.py +1 -9
- osn_selenium/exceptions/javascript.py +0 -2
- osn_selenium/exceptions/logic.py +0 -2
- osn_selenium/exceptions/path.py +1 -9
- osn_selenium/exceptions/platform.py +0 -2
- osn_selenium/exceptions/protocol.py +0 -3
- osn_selenium/exceptions/webdriver.py +1 -7
- osn_selenium/exceptions/window.py +1 -8
- osn_selenium/executors/sync/cdp.py +0 -5
- osn_selenium/executors/trio_bidi/cdp.py +101 -0
- osn_selenium/executors/trio_bidi/javascript.py +101 -0
- osn_selenium/executors/trio_threads/cdp.py +0 -5
- osn_selenium/flags/base.py +6 -4
- osn_selenium/flags/blink.py +2 -2
- osn_selenium/flags/chrome.py +6 -6
- osn_selenium/flags/edge.py +6 -6
- osn_selenium/instances/convert.py +44 -3
- osn_selenium/instances/protocols.py +47 -1
- osn_selenium/instances/sync/browsing_context.py +2 -2
- osn_selenium/instances/sync/script.py +7 -2
- osn_selenium/instances/sync/web_element.py +1 -1
- osn_selenium/instances/trio_bidi/__init__.py +1 -0
- osn_selenium/instances/trio_bidi/shadow_root.py +180 -0
- osn_selenium/instances/trio_bidi/switch_to.py +143 -0
- osn_selenium/instances/trio_bidi/web_driver_wait.py +124 -0
- osn_selenium/instances/trio_bidi/web_element.py +239 -0
- osn_selenium/instances/trio_threads/browsing_context.py +2 -2
- osn_selenium/instances/trio_threads/fedcm.py +1 -1
- osn_selenium/instances/trio_threads/network.py +1 -1
- osn_selenium/instances/trio_threads/script.py +7 -2
- osn_selenium/instances/trio_threads/web_extension.py +1 -1
- osn_selenium/instances/unified/browsing_context.py +2 -2
- osn_selenium/instances/unified/script.py +2 -2
- osn_selenium/instances/unified/web_element.py +3 -5
- osn_selenium/javascript/fingerprint/__init__.py +2 -1
- osn_selenium/trio_bidi/__init__.py +1 -0
- osn_selenium/trio_bidi/_context_vars.py +12 -0
- osn_selenium/trio_bidi/_error_mappings.py +123 -0
- osn_selenium/trio_bidi/_error_redirects.py +194 -0
- osn_selenium/trio_bidi/_file_functions.py +28 -0
- osn_selenium/trio_bidi/_internal_mappings.py +10 -0
- osn_selenium/trio_bidi/_models.py +199 -0
- osn_selenium/trio_bidi/_typehints.py +20 -0
- osn_selenium/trio_bidi/connection_pool.py +587 -0
- osn_selenium/trio_bidi/mapping/__init__.py +1 -0
- osn_selenium/trio_bidi/mapping/_constants.py +14 -0
- osn_selenium/trio_bidi/mapping/_js_snippets.py +285 -0
- osn_selenium/trio_bidi/mapping/_utils.py +4 -0
- osn_selenium/trio_bidi/mapping/request_functions/__init__.py +87 -0
- osn_selenium/trio_bidi/mapping/request_functions/_alert.py +102 -0
- osn_selenium/trio_bidi/mapping/request_functions/_args_helpers.py +225 -0
- osn_selenium/trio_bidi/mapping/request_functions/_capture.py +71 -0
- osn_selenium/trio_bidi/mapping/request_functions/_cdp.py +40 -0
- osn_selenium/trio_bidi/mapping/request_functions/_element.py +55 -0
- osn_selenium/trio_bidi/mapping/request_functions/_file.py +32 -0
- osn_selenium/trio_bidi/mapping/request_functions/_navigation.py +147 -0
- osn_selenium/trio_bidi/mapping/request_functions/_script.py +85 -0
- osn_selenium/trio_bidi/mapping/request_functions/_shadow_root.py +65 -0
- osn_selenium/trio_bidi/mapping/request_functions/_switch_to.py +59 -0
- osn_selenium/trio_bidi/mapping/request_functions/_web_element.py +448 -0
- osn_selenium/trio_bidi/mapping/request_functions/_window.py +125 -0
- osn_selenium/trio_bidi/mapping/response_functions/__init__.py +86 -0
- osn_selenium/trio_bidi/mapping/response_functions/_alert.py +81 -0
- osn_selenium/trio_bidi/mapping/response_functions/_args_helpers.py +183 -0
- osn_selenium/trio_bidi/mapping/response_functions/_args_validators.py +153 -0
- osn_selenium/trio_bidi/mapping/response_functions/_capture.py +71 -0
- osn_selenium/trio_bidi/mapping/response_functions/_cdp.py +26 -0
- osn_selenium/trio_bidi/mapping/response_functions/_element.py +58 -0
- osn_selenium/trio_bidi/mapping/response_functions/_file.py +30 -0
- osn_selenium/trio_bidi/mapping/response_functions/_navigation.py +120 -0
- osn_selenium/trio_bidi/mapping/response_functions/_script.py +57 -0
- osn_selenium/trio_bidi/mapping/response_functions/_shadow_root.py +58 -0
- osn_selenium/trio_bidi/mapping/response_functions/_switch_to.py +57 -0
- osn_selenium/trio_bidi/mapping/response_functions/_web_element.py +368 -0
- osn_selenium/trio_bidi/mapping/response_functions/_window.py +119 -0
- osn_selenium/trio_bidi/mixin.py +186 -0
- osn_selenium/trio_bidi/remote_connection.py +164 -0
- osn_selenium/trio_threads_mixin.py +22 -68
- osn_selenium/webdrivers/_args_helpers.py +118 -5
- osn_selenium/webdrivers/_typehints.py +9 -3
- osn_selenium/webdrivers/protocols.py +81 -1
- osn_selenium/webdrivers/sync/blink/base.py +10 -0
- osn_selenium/webdrivers/sync/blink/lifecycle.py +26 -8
- osn_selenium/webdrivers/sync/chrome/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/chrome/settings.py +6 -1
- osn_selenium/webdrivers/sync/core/base.py +3 -11
- osn_selenium/webdrivers/sync/core/capture.py +3 -2
- osn_selenium/webdrivers/sync/core/file.py +3 -2
- osn_selenium/webdrivers/sync/core/lifecycle.py +44 -10
- osn_selenium/webdrivers/sync/core/script.py +3 -2
- osn_selenium/webdrivers/sync/core/window.py +3 -3
- osn_selenium/webdrivers/sync/edge/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/edge/settings.py +6 -1
- osn_selenium/webdrivers/sync/yandex/lifecycle.py +23 -5
- osn_selenium/webdrivers/sync/yandex/settings.py +6 -1
- osn_selenium/webdrivers/trio_bidi/__init__.py +1 -0
- osn_selenium/webdrivers/trio_bidi/blink/__init__.py +132 -0
- osn_selenium/webdrivers/trio_bidi/blink/base.py +167 -0
- osn_selenium/webdrivers/trio_bidi/blink/lifecycle.py +89 -0
- osn_selenium/webdrivers/trio_bidi/blink/settings.py +63 -0
- osn_selenium/webdrivers/trio_bidi/chrome/__init__.py +114 -0
- osn_selenium/webdrivers/trio_bidi/chrome/base.py +127 -0
- osn_selenium/webdrivers/trio_bidi/chrome/lifecycle.py +85 -0
- osn_selenium/webdrivers/trio_bidi/chrome/settings.py +63 -0
- osn_selenium/webdrivers/trio_bidi/core/__init__.py +95 -0
- osn_selenium/webdrivers/trio_bidi/core/actions.py +70 -0
- osn_selenium/webdrivers/trio_bidi/core/base.py +200 -0
- osn_selenium/webdrivers/trio_bidi/core/capture.py +39 -0
- osn_selenium/webdrivers/trio_bidi/core/devtools.py +49 -0
- osn_selenium/webdrivers/trio_bidi/core/element.py +64 -0
- osn_selenium/webdrivers/trio_bidi/core/lifecycle.py +135 -0
- osn_selenium/webdrivers/trio_bidi/core/navigation.py +37 -0
- osn_selenium/webdrivers/trio_bidi/core/script.py +56 -0
- osn_selenium/webdrivers/trio_bidi/core/settings.py +36 -0
- osn_selenium/webdrivers/trio_bidi/core/window.py +134 -0
- osn_selenium/webdrivers/trio_bidi/edge/__init__.py +114 -0
- osn_selenium/webdrivers/trio_bidi/edge/base.py +123 -0
- osn_selenium/webdrivers/trio_bidi/edge/lifecycle.py +85 -0
- osn_selenium/webdrivers/trio_bidi/edge/settings.py +63 -0
- osn_selenium/webdrivers/trio_bidi/yandex/__init__.py +114 -0
- osn_selenium/webdrivers/trio_bidi/yandex/base.py +120 -0
- osn_selenium/webdrivers/trio_bidi/yandex/lifecycle.py +85 -0
- osn_selenium/webdrivers/trio_bidi/yandex/settings.py +63 -0
- osn_selenium/webdrivers/trio_threads/blink/__init__.py +7 -1
- osn_selenium/webdrivers/trio_threads/blink/base.py +14 -0
- osn_selenium/webdrivers/trio_threads/blink/lifecycle.py +26 -8
- osn_selenium/webdrivers/trio_threads/chrome/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/chrome/settings.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/__init__.py +0 -10
- osn_selenium/webdrivers/trio_threads/core/actions.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/auth.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/base.py +4 -16
- osn_selenium/webdrivers/trio_threads/core/capture.py +3 -2
- osn_selenium/webdrivers/trio_threads/core/file.py +3 -2
- osn_selenium/webdrivers/trio_threads/core/lifecycle.py +44 -10
- osn_selenium/webdrivers/trio_threads/core/script.py +3 -2
- osn_selenium/webdrivers/trio_threads/core/settings.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/storage.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/timeouts.py +1 -1
- osn_selenium/webdrivers/trio_threads/core/window.py +4 -4
- osn_selenium/webdrivers/trio_threads/edge/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/edge/settings.py +1 -1
- osn_selenium/webdrivers/trio_threads/yandex/lifecycle.py +23 -5
- osn_selenium/webdrivers/trio_threads/yandex/settings.py +1 -1
- osn_selenium/webdrivers/unified/blink/base.py +5 -1
- osn_selenium/webdrivers/unified/blink/lifecycle.py +4 -2
- osn_selenium/webdrivers/unified/chrome/base.py +5 -1
- osn_selenium/webdrivers/unified/core/auth.py +4 -2
- osn_selenium/webdrivers/unified/core/base.py +16 -10
- osn_selenium/webdrivers/unified/core/capture.py +3 -2
- osn_selenium/webdrivers/unified/core/components.py +12 -7
- osn_selenium/webdrivers/unified/core/devtools.py +2 -1
- osn_selenium/webdrivers/unified/core/file.py +3 -2
- osn_selenium/webdrivers/unified/core/lifecycle.py +5 -3
- osn_selenium/webdrivers/unified/core/script.py +5 -3
- osn_selenium/webdrivers/unified/core/storage.py +2 -1
- osn_selenium/webdrivers/unified/core/window.py +9 -8
- osn_selenium/webdrivers/unified/edge/base.py +5 -1
- osn_selenium/webdrivers/unified/yandex/base.py +5 -1
- {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/METADATA +3 -2
- osn_selenium-1.2.0.dist-info/RECORD +480 -0
- osn_selenium/abstract/executors/cdp/__init__.py +0 -435
- osn_selenium/abstract/executors/cdp/accessibility.py +0 -62
- osn_selenium/abstract/executors/cdp/animation.py +0 -47
- osn_selenium/abstract/executors/cdp/audits.py +0 -39
- osn_selenium/abstract/executors/cdp/autofill.py +0 -34
- osn_selenium/abstract/executors/cdp/background_service.py +0 -22
- osn_selenium/abstract/executors/cdp/bluetooth_emulation.py +0 -95
- osn_selenium/abstract/executors/cdp/browser.py +0 -122
- osn_selenium/abstract/executors/cdp/cache_storage.py +0 -49
- osn_selenium/abstract/executors/cdp/cast.py +0 -31
- osn_selenium/abstract/executors/cdp/console.py +0 -18
- osn_selenium/abstract/executors/cdp/css.py +0 -197
- osn_selenium/abstract/executors/cdp/debugger.py +0 -198
- osn_selenium/abstract/executors/cdp/device_access.py +0 -22
- osn_selenium/abstract/executors/cdp/device_orientation.py +0 -14
- osn_selenium/abstract/executors/cdp/dom.py +0 -305
- osn_selenium/abstract/executors/cdp/dom_debugger.py +0 -57
- osn_selenium/abstract/executors/cdp/dom_snapshot.py +0 -42
- osn_selenium/abstract/executors/cdp/dom_storage.py +0 -31
- osn_selenium/abstract/executors/cdp/emulation.py +0 -259
- osn_selenium/abstract/executors/cdp/event_breakpoints.py +0 -18
- osn_selenium/abstract/executors/cdp/extensions.py +0 -31
- osn_selenium/abstract/executors/cdp/fed_cm.py +0 -35
- osn_selenium/abstract/executors/cdp/fetch.py +0 -76
- osn_selenium/abstract/executors/cdp/file_system.py +0 -11
- osn_selenium/abstract/executors/cdp/headless_experimental.py +0 -30
- osn_selenium/abstract/executors/cdp/heap_profiler.py +0 -73
- osn_selenium/abstract/executors/cdp/indexed_db.py +0 -99
- osn_selenium/abstract/executors/cdp/input.py +0 -158
- osn_selenium/abstract/executors/cdp/inspector.py +0 -14
- osn_selenium/abstract/executors/cdp/io.py +0 -24
- osn_selenium/abstract/executors/cdp/layer_tree.py +0 -61
- osn_selenium/abstract/executors/cdp/log.py +0 -27
- osn_selenium/abstract/executors/cdp/media.py +0 -14
- osn_selenium/abstract/executors/cdp/memory.py +0 -61
- osn_selenium/abstract/executors/cdp/network.py +0 -252
- osn_selenium/abstract/executors/cdp/overlay.py +0 -166
- osn_selenium/abstract/executors/cdp/page.py +0 -347
- osn_selenium/abstract/executors/cdp/performance.py +0 -28
- osn_selenium/abstract/executors/cdp/performance_timeline.py +0 -11
- osn_selenium/abstract/executors/cdp/preload.py +0 -14
- osn_selenium/abstract/executors/cdp/profiler.py +0 -54
- osn_selenium/abstract/executors/cdp/pwa.py +0 -46
- osn_selenium/abstract/executors/cdp/runtime.py +0 -176
- osn_selenium/abstract/executors/cdp/schema.py +0 -11
- osn_selenium/abstract/executors/cdp/security.py +0 -26
- osn_selenium/abstract/executors/cdp/service_worker.py +0 -54
- osn_selenium/abstract/executors/cdp/storage.py +0 -175
- osn_selenium/abstract/executors/cdp/system_info.py +0 -24
- osn_selenium/abstract/executors/cdp/target.py +0 -125
- osn_selenium/abstract/executors/cdp/tethering.py +0 -14
- osn_selenium/abstract/executors/cdp/tracing.py +0 -48
- osn_selenium/abstract/executors/cdp/web_audio.py +0 -19
- osn_selenium/abstract/executors/cdp/web_authn.py +0 -76
- osn_selenium/base_mixin.py +0 -122
- osn_selenium/executors/sync/cdp/__init__.py +0 -550
- osn_selenium/executors/sync/cdp/accessibility.py +0 -74
- osn_selenium/executors/sync/cdp/animation.py +0 -50
- osn_selenium/executors/sync/cdp/audits.py +0 -48
- osn_selenium/executors/sync/cdp/autofill.py +0 -39
- osn_selenium/executors/sync/cdp/background_service.py +0 -30
- osn_selenium/executors/sync/cdp/bluetooth_emulation.py +0 -101
- osn_selenium/executors/sync/cdp/browser.py +0 -131
- osn_selenium/executors/sync/cdp/cache_storage.py +0 -66
- osn_selenium/executors/sync/cdp/cast.py +0 -38
- osn_selenium/executors/sync/cdp/console.py +0 -24
- osn_selenium/executors/sync/cdp/css.py +0 -187
- osn_selenium/executors/sync/cdp/debugger.py +0 -206
- osn_selenium/executors/sync/cdp/device_access.py +0 -27
- osn_selenium/executors/sync/cdp/device_orientation.py +0 -24
- osn_selenium/executors/sync/cdp/dom.py +0 -310
- osn_selenium/executors/sync/cdp/dom_debugger.py +0 -56
- osn_selenium/executors/sync/cdp/dom_snapshot.py +0 -58
- osn_selenium/executors/sync/cdp/dom_storage.py +0 -38
- osn_selenium/executors/sync/cdp/emulation.py +0 -270
- osn_selenium/executors/sync/cdp/event_breakpoints.py +0 -27
- osn_selenium/executors/sync/cdp/extensions.py +0 -39
- osn_selenium/executors/sync/cdp/fed_cm.py +0 -45
- osn_selenium/executors/sync/cdp/fetch.py +0 -96
- osn_selenium/executors/sync/cdp/file_system.py +0 -18
- osn_selenium/executors/sync/cdp/headless_experimental.py +0 -44
- osn_selenium/executors/sync/cdp/heap_profiler.py +0 -89
- osn_selenium/executors/sync/cdp/indexed_db.py +0 -142
- osn_selenium/executors/sync/cdp/input.py +0 -233
- osn_selenium/executors/sync/cdp/inspector.py +0 -21
- osn_selenium/executors/sync/cdp/io.py +0 -33
- osn_selenium/executors/sync/cdp/layer_tree.py +0 -71
- osn_selenium/executors/sync/cdp/log.py +0 -35
- osn_selenium/executors/sync/cdp/media.py +0 -21
- osn_selenium/executors/sync/cdp/memory.py +0 -62
- osn_selenium/executors/sync/cdp/network.py +0 -287
- osn_selenium/executors/sync/cdp/overlay.py +0 -174
- osn_selenium/executors/sync/cdp/page.py +0 -365
- osn_selenium/executors/sync/cdp/performance.py +0 -33
- osn_selenium/executors/sync/cdp/performance_timeline.py +0 -26
- osn_selenium/executors/sync/cdp/preload.py +0 -21
- osn_selenium/executors/sync/cdp/profiler.py +0 -58
- osn_selenium/executors/sync/cdp/pwa.py +0 -55
- osn_selenium/executors/sync/cdp/runtime.py +0 -221
- osn_selenium/executors/sync/cdp/schema.py +0 -23
- osn_selenium/executors/sync/cdp/security.py +0 -30
- osn_selenium/executors/sync/cdp/service_worker.py +0 -56
- osn_selenium/executors/sync/cdp/storage.py +0 -151
- osn_selenium/executors/sync/cdp/system_info.py +0 -30
- osn_selenium/executors/sync/cdp/target.py +0 -147
- osn_selenium/executors/sync/cdp/tethering.py +0 -21
- osn_selenium/executors/sync/cdp/tracing.py +0 -62
- osn_selenium/executors/sync/cdp/web_audio.py +0 -24
- osn_selenium/executors/sync/cdp/web_authn.py +0 -82
- osn_selenium/executors/trio_threads/cdp/__init__.py +0 -771
- osn_selenium/executors/trio_threads/cdp/accessibility.py +0 -87
- osn_selenium/executors/trio_threads/cdp/animation.py +0 -63
- osn_selenium/executors/trio_threads/cdp/audits.py +0 -57
- osn_selenium/executors/trio_threads/cdp/autofill.py +0 -52
- osn_selenium/executors/trio_threads/cdp/background_service.py +0 -40
- osn_selenium/executors/trio_threads/cdp/bluetooth_emulation.py +0 -111
- osn_selenium/executors/trio_threads/cdp/browser.py +0 -140
- osn_selenium/executors/trio_threads/cdp/cache_storage.py +0 -79
- osn_selenium/executors/trio_threads/cdp/cast.py +0 -47
- osn_selenium/executors/trio_threads/cdp/console.py +0 -33
- osn_selenium/executors/trio_threads/cdp/css.py +0 -196
- osn_selenium/executors/trio_threads/cdp/debugger.py +0 -219
- osn_selenium/executors/trio_threads/cdp/device_access.py +0 -40
- osn_selenium/executors/trio_threads/cdp/device_orientation.py +0 -34
- osn_selenium/executors/trio_threads/cdp/dom.py +0 -319
- osn_selenium/executors/trio_threads/cdp/dom_debugger.py +0 -69
- osn_selenium/executors/trio_threads/cdp/dom_snapshot.py +0 -71
- osn_selenium/executors/trio_threads/cdp/dom_storage.py +0 -51
- osn_selenium/executors/trio_threads/cdp/emulation.py +0 -283
- osn_selenium/executors/trio_threads/cdp/event_breakpoints.py +0 -37
- osn_selenium/executors/trio_threads/cdp/extensions.py +0 -52
- osn_selenium/executors/trio_threads/cdp/fed_cm.py +0 -54
- osn_selenium/executors/trio_threads/cdp/fetch.py +0 -105
- osn_selenium/executors/trio_threads/cdp/file_system.py +0 -31
- osn_selenium/executors/trio_threads/cdp/headless_experimental.py +0 -54
- osn_selenium/executors/trio_threads/cdp/heap_profiler.py +0 -102
- osn_selenium/executors/trio_threads/cdp/indexed_db.py +0 -155
- osn_selenium/executors/trio_threads/cdp/input.py +0 -242
- osn_selenium/executors/trio_threads/cdp/inspector.py +0 -34
- osn_selenium/executors/trio_threads/cdp/io.py +0 -42
- osn_selenium/executors/trio_threads/cdp/layer_tree.py +0 -84
- osn_selenium/executors/trio_threads/cdp/log.py +0 -44
- osn_selenium/executors/trio_threads/cdp/media.py +0 -30
- osn_selenium/executors/trio_threads/cdp/memory.py +0 -71
- osn_selenium/executors/trio_threads/cdp/network.py +0 -296
- osn_selenium/executors/trio_threads/cdp/overlay.py +0 -183
- osn_selenium/executors/trio_threads/cdp/page.py +0 -374
- osn_selenium/executors/trio_threads/cdp/performance.py +0 -46
- osn_selenium/executors/trio_threads/cdp/performance_timeline.py +0 -36
- osn_selenium/executors/trio_threads/cdp/preload.py +0 -30
- osn_selenium/executors/trio_threads/cdp/profiler.py +0 -71
- osn_selenium/executors/trio_threads/cdp/pwa.py +0 -64
- osn_selenium/executors/trio_threads/cdp/runtime.py +0 -230
- osn_selenium/executors/trio_threads/cdp/schema.py +0 -32
- osn_selenium/executors/trio_threads/cdp/security.py +0 -43
- osn_selenium/executors/trio_threads/cdp/service_worker.py +0 -69
- osn_selenium/executors/trio_threads/cdp/storage.py +0 -162
- osn_selenium/executors/trio_threads/cdp/system_info.py +0 -43
- osn_selenium/executors/trio_threads/cdp/target.py +0 -156
- osn_selenium/executors/trio_threads/cdp/tethering.py +0 -34
- osn_selenium/executors/trio_threads/cdp/tracing.py +0 -71
- osn_selenium/executors/trio_threads/cdp/web_audio.py +0 -37
- osn_selenium/executors/trio_threads/cdp/web_authn.py +0 -95
- osn_selenium/executors/unified/cdp/accessibility.py +0 -81
- osn_selenium/executors/unified/cdp/animation.py +0 -50
- osn_selenium/executors/unified/cdp/audits.py +0 -45
- osn_selenium/executors/unified/cdp/autofill.py +0 -41
- osn_selenium/executors/unified/cdp/background_service.py +0 -24
- osn_selenium/executors/unified/cdp/bluetooth_emulation.py +0 -132
- osn_selenium/executors/unified/cdp/browser.py +0 -143
- osn_selenium/executors/unified/cdp/cache_storage.py +0 -69
- osn_selenium/executors/unified/cdp/cast.py +0 -32
- osn_selenium/executors/unified/cdp/console.py +0 -18
- osn_selenium/executors/unified/cdp/css.py +0 -237
- osn_selenium/executors/unified/cdp/debugger.py +0 -243
- osn_selenium/executors/unified/cdp/device_access.py +0 -21
- osn_selenium/executors/unified/cdp/device_orientation.py +0 -18
- osn_selenium/executors/unified/cdp/dom.py +0 -380
- osn_selenium/executors/unified/cdp/dom_debugger.py +0 -65
- osn_selenium/executors/unified/cdp/dom_snapshot.py +0 -58
- osn_selenium/executors/unified/cdp/dom_storage.py +0 -38
- osn_selenium/executors/unified/cdp/emulation.py +0 -312
- osn_selenium/executors/unified/cdp/event_breakpoints.py +0 -24
- osn_selenium/executors/unified/cdp/extensions.py +0 -45
- osn_selenium/executors/unified/cdp/fed_cm.py +0 -51
- osn_selenium/executors/unified/cdp/fetch.py +0 -111
- osn_selenium/executors/unified/cdp/file_system.py +0 -15
- osn_selenium/executors/unified/cdp/headless_experimental.py +0 -38
- osn_selenium/executors/unified/cdp/heap_profiler.py +0 -101
- osn_selenium/executors/unified/cdp/indexed_db.py +0 -157
- osn_selenium/executors/unified/cdp/input.py +0 -254
- osn_selenium/executors/unified/cdp/inspector.py +0 -15
- osn_selenium/executors/unified/cdp/io.py +0 -29
- osn_selenium/executors/unified/cdp/layer_tree.py +0 -71
- osn_selenium/executors/unified/cdp/log.py +0 -29
- osn_selenium/executors/unified/cdp/media.py +0 -15
- osn_selenium/executors/unified/cdp/memory.py +0 -59
- osn_selenium/executors/unified/cdp/network.py +0 -323
- osn_selenium/executors/unified/cdp/overlay.py +0 -209
- osn_selenium/executors/unified/cdp/page.py +0 -410
- osn_selenium/executors/unified/cdp/performance.py +0 -27
- osn_selenium/executors/unified/cdp/performance_timeline.py +0 -17
- osn_selenium/executors/unified/cdp/preload.py +0 -15
- osn_selenium/executors/unified/cdp/profiler.py +0 -55
- osn_selenium/executors/unified/cdp/pwa.py +0 -55
- osn_selenium/executors/unified/cdp/runtime.py +0 -245
- osn_selenium/executors/unified/cdp/schema.py +0 -17
- osn_selenium/executors/unified/cdp/security.py +0 -27
- osn_selenium/executors/unified/cdp/service_worker.py +0 -62
- osn_selenium/executors/unified/cdp/storage.py +0 -178
- osn_selenium/executors/unified/cdp/system_info.py +0 -24
- osn_selenium/executors/unified/cdp/target.py +0 -165
- osn_selenium/executors/unified/cdp/tethering.py +0 -15
- osn_selenium/executors/unified/cdp/tracing.py +0 -62
- osn_selenium/executors/unified/cdp/web_audio.py +0 -18
- osn_selenium/executors/unified/cdp/web_authn.py +0 -103
- osn_selenium-1.1.0.dist-info/RECORD +0 -615
- /osn_selenium/{dev_tools/_exception_helpers.py → _exception_helpers.py} +0 -0
- /osn_selenium/executors/{unified/cdp → trio_bidi}/__init__.py +0 -0
- {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/WHEEL +0 -0
- {osn_selenium-1.1.0.dist-info → osn_selenium-1.2.0.dist-info}/top_level.txt +0 -0
|
@@ -2,7 +2,7 @@ from typing import Optional
|
|
|
2
2
|
from osn_selenium.models import WindowRect
|
|
3
3
|
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
4
|
from osn_selenium.flags.models.edge import EdgeFlags
|
|
5
|
-
from osn_selenium.webdrivers.sync.blink import BlinkLifecycleMixin
|
|
5
|
+
from osn_selenium.webdrivers.sync.blink.lifecycle import BlinkLifecycleMixin
|
|
6
6
|
from osn_selenium.webdrivers.unified.edge.lifecycle import (
|
|
7
7
|
UnifiedEdgeLifecycleMixin
|
|
8
8
|
)
|
|
@@ -26,7 +26,7 @@ class EdgeLifecycleMixin(
|
|
|
26
26
|
underlying browser instance, ensuring clean session management.
|
|
27
27
|
"""
|
|
28
28
|
|
|
29
|
-
def
|
|
29
|
+
def start_webdriver(
|
|
30
30
|
self,
|
|
31
31
|
flags: Optional[EdgeFlags] = None,
|
|
32
32
|
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
@@ -35,7 +35,7 @@ class EdgeLifecycleMixin(
|
|
|
35
35
|
start_page_url: Optional[str] = None,
|
|
36
36
|
window_rect: Optional[WindowRect] = None,
|
|
37
37
|
) -> None:
|
|
38
|
-
self.
|
|
38
|
+
self._start_webdriver_impl(
|
|
39
39
|
flags=flags,
|
|
40
40
|
browser_exe=browser_exe,
|
|
41
41
|
browser_name_in_system=browser_name_in_system,
|
|
@@ -44,7 +44,7 @@ class EdgeLifecycleMixin(
|
|
|
44
44
|
window_rect=window_rect,
|
|
45
45
|
)
|
|
46
46
|
|
|
47
|
-
def
|
|
47
|
+
def __enter__(
|
|
48
48
|
self,
|
|
49
49
|
flags: Optional[EdgeFlags] = None,
|
|
50
50
|
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
@@ -53,7 +53,25 @@ class EdgeLifecycleMixin(
|
|
|
53
53
|
start_page_url: Optional[str] = None,
|
|
54
54
|
window_rect: Optional[WindowRect] = None,
|
|
55
55
|
) -> None:
|
|
56
|
-
self.
|
|
56
|
+
self.start_webdriver(
|
|
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
|
+
)
|
|
64
|
+
|
|
65
|
+
def restart_webdriver(
|
|
66
|
+
self,
|
|
67
|
+
flags: Optional[EdgeFlags] = None,
|
|
68
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
69
|
+
browser_name_in_system: Optional[str] = None,
|
|
70
|
+
use_browser_exe: Optional[bool] = None,
|
|
71
|
+
start_page_url: Optional[str] = None,
|
|
72
|
+
window_rect: Optional[WindowRect] = None,
|
|
73
|
+
) -> None:
|
|
74
|
+
self._restart_webdriver_impl(
|
|
57
75
|
flags=flags,
|
|
58
76
|
browser_exe=browser_exe,
|
|
59
77
|
browser_name_in_system=browser_name_in_system,
|
|
@@ -2,6 +2,7 @@ from typing import Optional
|
|
|
2
2
|
from osn_selenium.models import WindowRect
|
|
3
3
|
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
4
|
from osn_selenium.flags.models.edge import EdgeFlags
|
|
5
|
+
from osn_selenium.webdrivers.sync.blink.settings import BlinkSettingsMixin
|
|
5
6
|
from osn_selenium.webdrivers.unified.edge.settings import (
|
|
6
7
|
UnifiedEdgeSettingsMixin
|
|
7
8
|
)
|
|
@@ -13,7 +14,11 @@ from osn_selenium.abstract.webdriver.edge.settings import (
|
|
|
13
14
|
__all__ = ["EdgeSettingsMixin"]
|
|
14
15
|
|
|
15
16
|
|
|
16
|
-
class EdgeSettingsMixin(
|
|
17
|
+
class EdgeSettingsMixin(
|
|
18
|
+
UnifiedEdgeSettingsMixin,
|
|
19
|
+
BlinkSettingsMixin,
|
|
20
|
+
AbstractEdgeSettingsMixin
|
|
21
|
+
):
|
|
17
22
|
"""
|
|
18
23
|
Mixin for configuring and updating settings of the Edge WebDriver.
|
|
19
24
|
|
|
@@ -2,7 +2,7 @@ from typing import Optional
|
|
|
2
2
|
from osn_selenium.models import WindowRect
|
|
3
3
|
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
4
|
from osn_selenium.flags.models.yandex import YandexFlags
|
|
5
|
-
from osn_selenium.webdrivers.sync.chrome import ChromeLifecycleMixin
|
|
5
|
+
from osn_selenium.webdrivers.sync.chrome.lifecycle import ChromeLifecycleMixin
|
|
6
6
|
from osn_selenium.webdrivers.unified.yandex.lifecycle import (
|
|
7
7
|
UnifiedYandexLifecycleMixin
|
|
8
8
|
)
|
|
@@ -26,7 +26,7 @@ class YandexLifecycleMixin(
|
|
|
26
26
|
underlying browser instance, ensuring clean session management.
|
|
27
27
|
"""
|
|
28
28
|
|
|
29
|
-
def
|
|
29
|
+
def start_webdriver(
|
|
30
30
|
self,
|
|
31
31
|
flags: Optional[YandexFlags] = None,
|
|
32
32
|
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
@@ -35,7 +35,7 @@ class YandexLifecycleMixin(
|
|
|
35
35
|
start_page_url: Optional[str] = None,
|
|
36
36
|
window_rect: Optional[WindowRect] = None,
|
|
37
37
|
) -> None:
|
|
38
|
-
self.
|
|
38
|
+
self._start_webdriver_impl(
|
|
39
39
|
flags=flags,
|
|
40
40
|
browser_exe=browser_exe,
|
|
41
41
|
browser_name_in_system=browser_name_in_system,
|
|
@@ -44,7 +44,7 @@ class YandexLifecycleMixin(
|
|
|
44
44
|
window_rect=window_rect,
|
|
45
45
|
)
|
|
46
46
|
|
|
47
|
-
def
|
|
47
|
+
def __enter__(
|
|
48
48
|
self,
|
|
49
49
|
flags: Optional[YandexFlags] = None,
|
|
50
50
|
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
@@ -53,7 +53,25 @@ class YandexLifecycleMixin(
|
|
|
53
53
|
start_page_url: Optional[str] = None,
|
|
54
54
|
window_rect: Optional[WindowRect] = None,
|
|
55
55
|
) -> None:
|
|
56
|
-
self.
|
|
56
|
+
self.start_webdriver(
|
|
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
|
+
)
|
|
64
|
+
|
|
65
|
+
def restart_webdriver(
|
|
66
|
+
self,
|
|
67
|
+
flags: Optional[YandexFlags] = None,
|
|
68
|
+
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
69
|
+
browser_name_in_system: Optional[str] = None,
|
|
70
|
+
use_browser_exe: Optional[bool] = None,
|
|
71
|
+
start_page_url: Optional[str] = None,
|
|
72
|
+
window_rect: Optional[WindowRect] = None,
|
|
73
|
+
) -> None:
|
|
74
|
+
self._restart_webdriver_impl(
|
|
57
75
|
flags=flags,
|
|
58
76
|
browser_exe=browser_exe,
|
|
59
77
|
browser_name_in_system=browser_name_in_system,
|
|
@@ -2,6 +2,7 @@ from typing import Optional
|
|
|
2
2
|
from osn_selenium.models import WindowRect
|
|
3
3
|
from osn_selenium._typehints import PATH_TYPEHINT
|
|
4
4
|
from osn_selenium.flags.models.yandex import YandexFlags
|
|
5
|
+
from osn_selenium.webdrivers.sync.chrome.settings import ChromeSettingsMixin
|
|
5
6
|
from osn_selenium.webdrivers.unified.yandex.settings import (
|
|
6
7
|
UnifiedYandexSettingsMixin
|
|
7
8
|
)
|
|
@@ -13,7 +14,11 @@ from osn_selenium.abstract.webdriver.yandex.settings import (
|
|
|
13
14
|
__all__ = ["YandexSettingsMixin"]
|
|
14
15
|
|
|
15
16
|
|
|
16
|
-
class YandexSettingsMixin(
|
|
17
|
+
class YandexSettingsMixin(
|
|
18
|
+
UnifiedYandexSettingsMixin,
|
|
19
|
+
ChromeSettingsMixin,
|
|
20
|
+
AbstractYandexSettingsMixin
|
|
21
|
+
):
|
|
17
22
|
"""
|
|
18
23
|
Mixin for configuring and updating settings of the Yandex WebDriver.
|
|
19
24
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,132 @@
|
|
|
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.dev_tools.manager import DevTools
|
|
10
|
+
from osn_selenium.flags.blink import BlinkFlagsManager
|
|
11
|
+
from osn_selenium.flags.models.blink import BlinkFlags
|
|
12
|
+
from osn_selenium.dev_tools.settings import DevToolsSettings
|
|
13
|
+
from osn_selenium.webdrivers.trio_bidi.core import CoreWebDriver
|
|
14
|
+
from osn_selenium.webdrivers.trio_bidi.blink.base import BlinkBaseMixin
|
|
15
|
+
from osn_selenium.abstract.webdriver.blink import (
|
|
16
|
+
AbstractBlinkWebDriver
|
|
17
|
+
)
|
|
18
|
+
from osn_selenium.webdrivers.trio_bidi.blink.settings import BlinkSettingsMixin
|
|
19
|
+
from osn_selenium.webdrivers.trio_bidi.blink.lifecycle import BlinkLifecycleMixin
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
__all__ = ["BlinkWebDriver"]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class BlinkWebDriver(
|
|
26
|
+
BlinkBaseMixin,
|
|
27
|
+
BlinkLifecycleMixin,
|
|
28
|
+
BlinkSettingsMixin,
|
|
29
|
+
CoreWebDriver,
|
|
30
|
+
AbstractBlinkWebDriver,
|
|
31
|
+
):
|
|
32
|
+
"""
|
|
33
|
+
Concrete Blink WebDriver implementation combining all functional mixins.
|
|
34
|
+
|
|
35
|
+
This class aggregates lifecycle management, element interaction, navigation,
|
|
36
|
+
and browser-specific features into a single usable driver instance.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(
|
|
40
|
+
self,
|
|
41
|
+
browser_exe: Optional[PATH_TYPEHINT],
|
|
42
|
+
browser_name_in_system: str,
|
|
43
|
+
webdriver_path: str,
|
|
44
|
+
use_browser_exe: bool = True,
|
|
45
|
+
flags_manager_type: Type[BlinkFlagsManager] = BlinkFlagsManager,
|
|
46
|
+
flags: Optional[BlinkFlags] = None,
|
|
47
|
+
start_page_url: str = "",
|
|
48
|
+
implicitly_wait: int = 5,
|
|
49
|
+
page_load_timeout: int = 5,
|
|
50
|
+
script_timeout: int = 5,
|
|
51
|
+
window_rect: Optional[WindowRect] = None,
|
|
52
|
+
devtools_settings: Optional[DevToolsSettings] = None,
|
|
53
|
+
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
54
|
+
cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
|
|
55
|
+
ignore_cdp_version_package_missing: bool = True,
|
|
56
|
+
):
|
|
57
|
+
"""
|
|
58
|
+
Initializes the BlinkWebDriver instance.
|
|
59
|
+
|
|
60
|
+
This constructor sets up the necessary components for controlling a Blink-based browser,
|
|
61
|
+
including paths, flag managers, timeouts, and integration with DevTools and Trio.
|
|
62
|
+
It also initializes properties related to console encoding and IP pattern matching
|
|
63
|
+
for managing browser processes.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
browser_exe (Optional[PATH_TYPEHINT]): The path to the browser executable
|
|
67
|
+
(e.g., `chrome.exe` or `msedge.exe`). If None, the browser executable will not be
|
|
68
|
+
managed directly by this class (e.g., for remote WebDriver connections where the
|
|
69
|
+
browser is already running).
|
|
70
|
+
browser_name_in_system (str): The common name of the browser executable in the system
|
|
71
|
+
(e.g., "Chrome", "Edge"). Used to auto-detect `browser_exe` if `use_browser_exe` is True.
|
|
72
|
+
webdriver_path (str): The file path to the WebDriver executable (e.g., `chromedriver.exe`).
|
|
73
|
+
use_browser_exe (bool): If True, the browser executable path will be
|
|
74
|
+
automatically determined based on `browser_name_in_system` if `browser_exe`
|
|
75
|
+
is not explicitly provided. If False, `browser_exe` must be None.
|
|
76
|
+
Defaults to True.
|
|
77
|
+
flags_manager_type (Type[BlinkFlagsManager]): The type of flags manager to use.
|
|
78
|
+
Defaults to `BlinkFlagsManager`, which is suitable for Chrome/Edge.
|
|
79
|
+
flags (Optional[BlinkFlags]): Initial browser flags or options
|
|
80
|
+
specific to Blink-based browsers. Can be a `BlinkFlags` object or a generic mapping.
|
|
81
|
+
Defaults to None.
|
|
82
|
+
start_page_url (str): The URL that the browser will attempt to navigate to
|
|
83
|
+
immediately after starting. Defaults to an empty string.
|
|
84
|
+
implicitly_wait (int): The default implicit wait time in seconds for element searches.
|
|
85
|
+
Defaults to 5.
|
|
86
|
+
page_load_timeout (int): The default page load timeout in seconds. Defaults to 5.
|
|
87
|
+
script_timeout (int): The default asynchronous script timeout in seconds. Defaults to 5.
|
|
88
|
+
window_rect (Optional[WindowRect]): The initial window size and position. If None,
|
|
89
|
+
the browser's default window size will be used. Defaults to None.
|
|
90
|
+
devtools_settings (Optional[DevToolsSettings]): Configuration for Chrome DevTools Protocol.
|
|
91
|
+
capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
|
|
92
|
+
throttle concurrent thread-based operations. Defaults to None.
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
CoreWebDriver.__init__(
|
|
96
|
+
self,
|
|
97
|
+
webdriver_path=webdriver_path,
|
|
98
|
+
flags_manager_type=flags_manager_type,
|
|
99
|
+
flags=flags,
|
|
100
|
+
implicitly_wait=implicitly_wait,
|
|
101
|
+
page_load_timeout=page_load_timeout,
|
|
102
|
+
script_timeout=script_timeout,
|
|
103
|
+
window_rect=window_rect,
|
|
104
|
+
capacity_limiter=capacity_limiter,
|
|
105
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
106
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
BlinkBaseMixin.__init__(
|
|
110
|
+
self,
|
|
111
|
+
browser_exe=browser_exe,
|
|
112
|
+
browser_name_in_system=browser_name_in_system,
|
|
113
|
+
use_browser_exe=use_browser_exe,
|
|
114
|
+
webdriver_path=webdriver_path,
|
|
115
|
+
architecture="trio_bidi",
|
|
116
|
+
flags_manager_type=flags_manager_type,
|
|
117
|
+
flags=flags,
|
|
118
|
+
start_page_url=start_page_url,
|
|
119
|
+
implicitly_wait=implicitly_wait,
|
|
120
|
+
page_load_timeout=page_load_timeout,
|
|
121
|
+
script_timeout=script_timeout,
|
|
122
|
+
window_rect=window_rect,
|
|
123
|
+
capacity_limiter=capacity_limiter,
|
|
124
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
125
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
self._devtools = DevTools(parent_webdriver=self, devtools_settings=devtools_settings)
|
|
129
|
+
|
|
130
|
+
@property
|
|
131
|
+
def devtools(self) -> DevTools:
|
|
132
|
+
return self._devtools
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import math
|
|
2
|
+
import trio
|
|
3
|
+
import pathlib
|
|
4
|
+
from osn_selenium.models import WindowRect
|
|
5
|
+
from osn_selenium.flags.blink import BlinkFlagsManager
|
|
6
|
+
from osn_selenium.flags.models.blink import BlinkFlags
|
|
7
|
+
from typing import (
|
|
8
|
+
Mapping,
|
|
9
|
+
Optional,
|
|
10
|
+
Type,
|
|
11
|
+
Union
|
|
12
|
+
)
|
|
13
|
+
from osn_selenium.executors.trio_bidi.cdp import CDPExecutor
|
|
14
|
+
from osn_selenium.webdrivers.trio_bidi.core.base import CoreBaseMixin
|
|
15
|
+
from osn_selenium.webdrivers._bridges import (
|
|
16
|
+
get_cdp_executor_bridge
|
|
17
|
+
)
|
|
18
|
+
from osn_selenium._typehints import (
|
|
19
|
+
ARCHITECTURES_TYPEHINT,
|
|
20
|
+
PATH_TYPEHINT
|
|
21
|
+
)
|
|
22
|
+
from osn_selenium.webdrivers.unified.blink.base import (
|
|
23
|
+
UnifiedBlinkBaseMixin
|
|
24
|
+
)
|
|
25
|
+
from osn_selenium.abstract.webdriver.blink.base import (
|
|
26
|
+
AbstractBlinkBaseMixin
|
|
27
|
+
)
|
|
28
|
+
from selenium.webdriver.chromium.webdriver import (
|
|
29
|
+
ChromiumDriver as legacyWebDriver
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
__all__ = ["BlinkBaseMixin"]
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class BlinkBaseMixin(UnifiedBlinkBaseMixin, CoreBaseMixin, AbstractBlinkBaseMixin):
|
|
37
|
+
"""
|
|
38
|
+
Base mixin for Blink WebDrivers handling core initialization and state management.
|
|
39
|
+
|
|
40
|
+
This class serves as the foundation for browser-specific implementations, managing
|
|
41
|
+
the WebDriver executable path, configuration flags, timeouts, and the active
|
|
42
|
+
driver instance.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
def __init__(
|
|
46
|
+
self,
|
|
47
|
+
browser_exe: Optional[PATH_TYPEHINT],
|
|
48
|
+
browser_name_in_system: str,
|
|
49
|
+
webdriver_path: str,
|
|
50
|
+
architecture: ARCHITECTURES_TYPEHINT,
|
|
51
|
+
use_browser_exe: bool = True,
|
|
52
|
+
flags_manager_type: Type[BlinkFlagsManager] = BlinkFlagsManager,
|
|
53
|
+
flags: Optional[BlinkFlags] = None,
|
|
54
|
+
start_page_url: str = "",
|
|
55
|
+
implicitly_wait: int = 5,
|
|
56
|
+
page_load_timeout: int = 5,
|
|
57
|
+
script_timeout: int = 5,
|
|
58
|
+
window_rect: Optional[WindowRect] = None,
|
|
59
|
+
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
60
|
+
cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
|
|
61
|
+
ignore_cdp_version_package_missing: bool = True,
|
|
62
|
+
trio_token: Optional[trio.lowlevel.TrioToken] = None,
|
|
63
|
+
bidi_buffer_size: Union[int, float] = math.inf,
|
|
64
|
+
):
|
|
65
|
+
"""
|
|
66
|
+
Initializes the BlinkWebDriver instance.
|
|
67
|
+
|
|
68
|
+
This constructor sets up the necessary components for controlling a Blink-based browser,
|
|
69
|
+
including paths, flag managers, timeouts, and integration with DevTools and Trio.
|
|
70
|
+
It also initializes properties related to console encoding and IP pattern matching
|
|
71
|
+
for managing browser processes.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
browser_exe (Optional[PATH_TYPEHINT]): The path to the browser executable
|
|
75
|
+
(e.g., `chrome.exe` or `msedge.exe`). If None, the browser executable will not be
|
|
76
|
+
managed directly by this class (e.g., for remote WebDriver connections where the
|
|
77
|
+
browser is already running).
|
|
78
|
+
browser_name_in_system (str): The common name of the browser executable in the system
|
|
79
|
+
(e.g., "Chrome", "Edge"). Used to auto-detect `browser_exe` if `use_browser_exe` is True.
|
|
80
|
+
webdriver_path (str): The file path to the WebDriver executable (e.g., `chromedriver.exe`).
|
|
81
|
+
use_browser_exe (bool): If True, the browser executable path will be
|
|
82
|
+
automatically determined based on `browser_name_in_system` if `browser_exe`
|
|
83
|
+
is not explicitly provided. If False, `browser_exe` must be None.
|
|
84
|
+
Defaults to True.
|
|
85
|
+
flags_manager_type (Type[BlinkFlagsManager]): The type of flags manager to use.
|
|
86
|
+
Defaults to `BlinkFlagsManager`, which is suitable for Chrome/Edge.
|
|
87
|
+
flags (Optional[BlinkFlags]): Initial browser flags or options
|
|
88
|
+
specific to Blink-based browsers. Can be a `BlinkFlags` object or a generic mapping.
|
|
89
|
+
Defaults to None.
|
|
90
|
+
start_page_url (str): The URL that the browser will attempt to navigate to
|
|
91
|
+
immediately after starting. Defaults to an empty string.
|
|
92
|
+
implicitly_wait (int): The default implicit wait time in seconds for element searches.
|
|
93
|
+
Defaults to 5.
|
|
94
|
+
page_load_timeout (int): The default page load timeout in seconds. Defaults to 5.
|
|
95
|
+
script_timeout (int): The default asynchronous script timeout in seconds. Defaults to 5.
|
|
96
|
+
window_rect (Optional[WindowRect]): The initial window size and position. If None,
|
|
97
|
+
the browser's default window size will be used. Defaults to None.
|
|
98
|
+
capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
|
|
99
|
+
throttle concurrent thread-based operations. Defaults to None.
|
|
100
|
+
cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
|
|
101
|
+
ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
|
|
102
|
+
trio_token (Optional[trio.lowlevel.TrioToken]): The Trio token for the current event loop.
|
|
103
|
+
bidi_buffer_size (Union[int, float]): Buffer size for the BiDi task channel.
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
CoreBaseMixin.__init__(
|
|
107
|
+
self,
|
|
108
|
+
webdriver_path=webdriver_path,
|
|
109
|
+
flags_manager_type=flags_manager_type,
|
|
110
|
+
flags=flags,
|
|
111
|
+
implicitly_wait=implicitly_wait,
|
|
112
|
+
page_load_timeout=page_load_timeout,
|
|
113
|
+
script_timeout=script_timeout,
|
|
114
|
+
window_rect=window_rect,
|
|
115
|
+
capacity_limiter=capacity_limiter,
|
|
116
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
117
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
118
|
+
trio_token=trio_token,
|
|
119
|
+
bidi_buffer_size=bidi_buffer_size,
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
UnifiedBlinkBaseMixin.__init__(
|
|
123
|
+
self,
|
|
124
|
+
browser_exe=browser_exe,
|
|
125
|
+
browser_name_in_system=browser_name_in_system,
|
|
126
|
+
webdriver_path=webdriver_path,
|
|
127
|
+
architecture=architecture,
|
|
128
|
+
use_browser_exe=use_browser_exe,
|
|
129
|
+
flags_manager_type=flags_manager_type,
|
|
130
|
+
flags=flags,
|
|
131
|
+
start_page_url=start_page_url,
|
|
132
|
+
implicitly_wait=implicitly_wait,
|
|
133
|
+
page_load_timeout=page_load_timeout,
|
|
134
|
+
script_timeout=script_timeout,
|
|
135
|
+
window_rect=window_rect,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
self._cdp_executor = CDPExecutor(
|
|
139
|
+
execute_function=get_cdp_executor_bridge(self),
|
|
140
|
+
lock=self._lock,
|
|
141
|
+
limiter=self._capacity_limiter,
|
|
142
|
+
token=self._trio_token,
|
|
143
|
+
buffer_size=self._trio_bidi_buffer_size
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def browser_exe(self) -> Optional[pathlib.Path]:
|
|
148
|
+
return self._browser_exe_impl
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def cdp(self) -> CDPExecutor:
|
|
152
|
+
return self._cdp_executor
|
|
153
|
+
|
|
154
|
+
@property
|
|
155
|
+
def debugging_ip(self) -> Optional[str]:
|
|
156
|
+
return self._debugging_ip_impl
|
|
157
|
+
|
|
158
|
+
@property
|
|
159
|
+
def debugging_port(self) -> Optional[int]:
|
|
160
|
+
return self._debugging_port_impl
|
|
161
|
+
|
|
162
|
+
@property
|
|
163
|
+
def driver(self) -> Optional[legacyWebDriver]:
|
|
164
|
+
return self._driver_impl
|
|
165
|
+
|
|
166
|
+
def set_start_page_url(self, start_page_url: str) -> None:
|
|
167
|
+
self._webdriver_flags_manager.start_page_url = start_page_url
|
|
@@ -0,0 +1,89 @@
|
|
|
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.blink import BlinkFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_bidi.core.lifecycle import CoreLifecycleMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.blink.lifecycle import (
|
|
7
|
+
UnifiedBlinkLifecycleMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.blink.lifecycle import (
|
|
10
|
+
AbstractBlinkLifecycleMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["BlinkLifecycleMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class BlinkLifecycleMixin(
|
|
18
|
+
UnifiedBlinkLifecycleMixin,
|
|
19
|
+
CoreLifecycleMixin,
|
|
20
|
+
AbstractBlinkLifecycleMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for managing the lifecycle of the Blink 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[BlinkFlags] = 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[BlinkFlags] = 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[BlinkFlags] = 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()
|
|
86
|
+
|
|
87
|
+
async def stop_webdriver(self) -> None:
|
|
88
|
+
await self.sync_to_trio(sync_function=self._stop_webdriver_impl)()
|
|
89
|
+
await self._stop_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.blink import BlinkFlags
|
|
5
|
+
from osn_selenium.webdrivers.trio_bidi.core.settings import CoreSettingsMixin
|
|
6
|
+
from osn_selenium.webdrivers.unified.blink.settings import (
|
|
7
|
+
UnifiedBlinkSettingsMixin
|
|
8
|
+
)
|
|
9
|
+
from osn_selenium.abstract.webdriver.blink.settings import (
|
|
10
|
+
AbstractBlinkSettingsMixin
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["BlinkSettingsMixin"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class BlinkSettingsMixin(
|
|
18
|
+
UnifiedBlinkSettingsMixin,
|
|
19
|
+
CoreSettingsMixin,
|
|
20
|
+
AbstractBlinkSettingsMixin
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Mixin for configuring and updating settings of the Blink 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[BlinkFlags] = 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[BlinkFlags] = 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
|
+
)
|