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
|
@@ -26,10 +26,7 @@ class BlinkLifecycleMixin(
|
|
|
26
26
|
underlying browser instance, ensuring clean session management.
|
|
27
27
|
"""
|
|
28
28
|
|
|
29
|
-
async def
|
|
30
|
-
await self.sync_to_trio(sync_function=self._close_webdriver_impl)()
|
|
31
|
-
|
|
32
|
-
async def restart_webdriver(
|
|
29
|
+
async def start_webdriver(
|
|
33
30
|
self,
|
|
34
31
|
flags: Optional[BlinkFlags] = None,
|
|
35
32
|
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
@@ -38,16 +35,16 @@ class BlinkLifecycleMixin(
|
|
|
38
35
|
start_page_url: Optional[str] = None,
|
|
39
36
|
window_rect: Optional[WindowRect] = None,
|
|
40
37
|
) -> None:
|
|
41
|
-
await self.sync_to_trio(sync_function=self.
|
|
38
|
+
await self.sync_to_trio(sync_function=self._start_webdriver_impl)(
|
|
42
39
|
flags=flags,
|
|
43
40
|
browser_exe=browser_exe,
|
|
44
41
|
browser_name_in_system=browser_name_in_system,
|
|
45
42
|
use_browser_exe=use_browser_exe,
|
|
46
43
|
start_page_url=start_page_url,
|
|
47
|
-
window_rect=window_rect
|
|
44
|
+
window_rect=window_rect,
|
|
48
45
|
)
|
|
49
46
|
|
|
50
|
-
async def
|
|
47
|
+
async def __aenter__(
|
|
51
48
|
self,
|
|
52
49
|
flags: Optional[BlinkFlags] = None,
|
|
53
50
|
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
@@ -56,7 +53,7 @@ class BlinkLifecycleMixin(
|
|
|
56
53
|
start_page_url: Optional[str] = None,
|
|
57
54
|
window_rect: Optional[WindowRect] = None,
|
|
58
55
|
) -> None:
|
|
59
|
-
await self.
|
|
56
|
+
await self.start_webdriver(
|
|
60
57
|
flags=flags,
|
|
61
58
|
browser_exe=browser_exe,
|
|
62
59
|
browser_name_in_system=browser_name_in_system,
|
|
@@ -64,3 +61,24 @@ class BlinkLifecycleMixin(
|
|
|
64
61
|
start_page_url=start_page_url,
|
|
65
62
|
window_rect=window_rect,
|
|
66
63
|
)
|
|
64
|
+
|
|
65
|
+
async def restart_webdriver(
|
|
66
|
+
self,
|
|
67
|
+
flags: Optional[BlinkFlags] = 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
|
+
await self.sync_to_trio(sync_function=self._restart_webdriver_impl)(
|
|
75
|
+
flags=flags,
|
|
76
|
+
browser_exe=browser_exe,
|
|
77
|
+
browser_name_in_system=browser_name_in_system,
|
|
78
|
+
use_browser_exe=use_browser_exe,
|
|
79
|
+
start_page_url=start_page_url,
|
|
80
|
+
window_rect=window_rect
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
async def stop_webdriver(self) -> None:
|
|
84
|
+
await self.sync_to_trio(sync_function=self._stop_webdriver_impl)()
|
|
@@ -1,6 +1,10 @@
|
|
|
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
|
|
5
9
|
from osn_selenium.flags.chrome import ChromeFlagsManager
|
|
6
10
|
from osn_selenium.flags.models.chrome import ChromeFlags
|
|
@@ -46,7 +50,32 @@ class ChromeWebDriver(
|
|
|
46
50
|
window_rect: Optional[WindowRect] = None,
|
|
47
51
|
devtools_settings: Optional[DevToolsSettings] = None,
|
|
48
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,
|
|
49
55
|
):
|
|
56
|
+
"""
|
|
57
|
+
Initializes the Trio-based Chrome WebDriver with specified configuration.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
webdriver_path (str): Path to the ChromeDriver executable.
|
|
61
|
+
flags_manager_type (Type[ChromeFlagsManager]): The class type used for managing Chrome flags.
|
|
62
|
+
Defaults to ChromeFlagsManager.
|
|
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 "Google Chrome".
|
|
67
|
+
browser_exe (Optional[PATH_TYPEHINT]): Explicit path to the Chrome browser executable.
|
|
68
|
+
flags (Optional[ChromeFlags]): 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
|
+
|
|
50
79
|
BlinkWebDriver.__init__(
|
|
51
80
|
self,
|
|
52
81
|
browser_exe=browser_exe,
|
|
@@ -61,6 +90,8 @@ class ChromeWebDriver(
|
|
|
61
90
|
window_rect=window_rect,
|
|
62
91
|
devtools_settings=devtools_settings,
|
|
63
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,
|
|
64
95
|
)
|
|
65
96
|
|
|
66
97
|
ChromeBaseMixin.__init__(
|
|
@@ -78,4 +109,6 @@ class ChromeWebDriver(
|
|
|
78
109
|
script_timeout=script_timeout,
|
|
79
110
|
window_rect=window_rect,
|
|
80
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,
|
|
81
114
|
)
|
|
@@ -1,6 +1,10 @@
|
|
|
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.flags.chrome import ChromeFlagsManager
|
|
5
9
|
from osn_selenium.flags.models.chrome import ChromeFlags
|
|
6
10
|
from selenium.webdriver import (
|
|
@@ -46,9 +50,11 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
|
|
|
46
50
|
script_timeout: int = 5,
|
|
47
51
|
window_rect: Optional[WindowRect] = None,
|
|
48
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,
|
|
49
55
|
):
|
|
50
56
|
"""
|
|
51
|
-
Initializes the Trio-based Chrome WebDriver mixin.
|
|
57
|
+
Initializes the Trio-based Chrome WebDriver mixin with specified configuration.
|
|
52
58
|
|
|
53
59
|
Args:
|
|
54
60
|
webdriver_path (str): Path to the ChromeDriver executable.
|
|
@@ -67,6 +73,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
|
|
|
67
73
|
script_timeout (int): Default script timeout.
|
|
68
74
|
window_rect (Optional[WindowRect]): Initial window dimensions.
|
|
69
75
|
capacity_limiter (Optional[trio.CapacityLimiter]): Trio capacity limiter.
|
|
76
|
+
cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
|
|
77
|
+
ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
|
|
70
78
|
"""
|
|
71
79
|
|
|
72
80
|
BlinkBaseMixin.__init__(
|
|
@@ -84,6 +92,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
|
|
|
84
92
|
script_timeout=script_timeout,
|
|
85
93
|
window_rect=window_rect,
|
|
86
94
|
capacity_limiter=capacity_limiter,
|
|
95
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
96
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
87
97
|
)
|
|
88
98
|
|
|
89
99
|
UnifiedChromeBaseMixin.__init__(
|
|
@@ -100,6 +110,8 @@ class ChromeBaseMixin(UnifiedChromeBaseMixin, BlinkBaseMixin, AbstractChromeBase
|
|
|
100
110
|
page_load_timeout=page_load_timeout,
|
|
101
111
|
script_timeout=script_timeout,
|
|
102
112
|
window_rect=window_rect,
|
|
113
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
114
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
103
115
|
)
|
|
104
116
|
|
|
105
117
|
@property
|
|
@@ -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.chrome import ChromeFlags
|
|
5
|
-
from osn_selenium.webdrivers.trio_threads.blink import BlinkLifecycleMixin
|
|
5
|
+
from osn_selenium.webdrivers.trio_threads.blink.lifecycle import BlinkLifecycleMixin
|
|
6
6
|
from osn_selenium.webdrivers.unified.chrome.lifecycle import (
|
|
7
7
|
UnifiedChromeLifecycleMixin
|
|
8
8
|
)
|
|
@@ -26,7 +26,7 @@ class ChromeLifecycleMixin(
|
|
|
26
26
|
underlying browser instance, ensuring clean session management.
|
|
27
27
|
"""
|
|
28
28
|
|
|
29
|
-
async def
|
|
29
|
+
async def start_webdriver(
|
|
30
30
|
self,
|
|
31
31
|
flags: Optional[ChromeFlags] = None,
|
|
32
32
|
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
@@ -35,7 +35,7 @@ class ChromeLifecycleMixin(
|
|
|
35
35
|
start_page_url: Optional[str] = None,
|
|
36
36
|
window_rect: Optional[WindowRect] = None,
|
|
37
37
|
) -> None:
|
|
38
|
-
await self.sync_to_trio(sync_function=self.
|
|
38
|
+
await self.sync_to_trio(sync_function=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 ChromeLifecycleMixin(
|
|
|
44
44
|
window_rect=window_rect,
|
|
45
45
|
)
|
|
46
46
|
|
|
47
|
-
async def
|
|
47
|
+
async def __aenter__(
|
|
48
48
|
self,
|
|
49
49
|
flags: Optional[ChromeFlags] = None,
|
|
50
50
|
browser_exe: Optional[PATH_TYPEHINT] = None,
|
|
@@ -53,7 +53,25 @@ class ChromeLifecycleMixin(
|
|
|
53
53
|
start_page_url: Optional[str] = None,
|
|
54
54
|
window_rect: Optional[WindowRect] = None,
|
|
55
55
|
) -> None:
|
|
56
|
-
await self.
|
|
56
|
+
await 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
|
+
async def restart_webdriver(
|
|
66
|
+
self,
|
|
67
|
+
flags: Optional[ChromeFlags] = 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
|
+
await self.sync_to_trio(sync_function=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,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.chrome import ChromeFlags
|
|
5
|
-
from osn_selenium.webdrivers.trio_threads.blink import BlinkSettingsMixin
|
|
5
|
+
from osn_selenium.webdrivers.trio_threads.blink.settings import BlinkSettingsMixin
|
|
6
6
|
from osn_selenium.webdrivers.unified.chrome.settings import (
|
|
7
7
|
UnifiedChromeSettingsMixin
|
|
8
8
|
)
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import trio
|
|
2
|
-
from typing import Optional, Type
|
|
3
2
|
from osn_selenium.models import WindowRect
|
|
4
|
-
from
|
|
3
|
+
from typing import (
|
|
4
|
+
Mapping,
|
|
5
|
+
Optional,
|
|
6
|
+
Type
|
|
7
|
+
)
|
|
8
|
+
from osn_selenium._typehints import PATH_TYPEHINT
|
|
5
9
|
from osn_selenium.flags.base import BrowserFlagsManager
|
|
6
10
|
from osn_selenium.flags.models.base import BrowserFlags
|
|
7
|
-
from osn_selenium.dev_tools.settings import DevToolsSettings
|
|
8
11
|
from osn_selenium.webdrivers.trio_threads.core.auth import CoreAuthMixin
|
|
9
12
|
from osn_selenium.webdrivers.trio_threads.core.base import CoreBaseMixin
|
|
10
13
|
from osn_selenium.webdrivers.trio_threads.core.file import CoreFileMixin
|
|
@@ -62,15 +65,13 @@ class CoreWebDriver(
|
|
|
62
65
|
page_load_timeout: int = 5,
|
|
63
66
|
script_timeout: int = 5,
|
|
64
67
|
window_rect: Optional[WindowRect] = None,
|
|
65
|
-
devtools_settings: Optional[DevToolsSettings] = None,
|
|
66
68
|
capacity_limiter: Optional[trio.CapacityLimiter] = None,
|
|
69
|
+
cdp_versioned_packages_paths: Optional[Mapping[int, PATH_TYPEHINT]] = None,
|
|
70
|
+
ignore_cdp_version_package_missing: bool = True,
|
|
67
71
|
) -> None:
|
|
68
72
|
"""
|
|
69
73
|
Initializes the main WebDriver instance with Trio thread support.
|
|
70
74
|
|
|
71
|
-
Combines multiple functional mixins and initializes the JavaScript executor
|
|
72
|
-
along with base configuration components.
|
|
73
|
-
|
|
74
75
|
Args:
|
|
75
76
|
webdriver_path (str): The file path to the WebDriver executable.
|
|
76
77
|
flags_manager_type (Type[BrowserFlagsManager]): The class type used to manage
|
|
@@ -85,7 +86,6 @@ class CoreWebDriver(
|
|
|
85
86
|
asynchronous script to finish execution. Defaults to 5.
|
|
86
87
|
window_rect (Optional[WindowRect]): The initial size and position of the
|
|
87
88
|
browser window. Defaults to None.
|
|
88
|
-
devtools_settings (Optional[DevToolsSettings]): Configuration for Chrome DevTools Protocol.
|
|
89
89
|
capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
|
|
90
90
|
throttle concurrent thread-based operations. Defaults to None.
|
|
91
91
|
"""
|
|
@@ -100,10 +100,6 @@ class CoreWebDriver(
|
|
|
100
100
|
script_timeout=script_timeout,
|
|
101
101
|
window_rect=window_rect,
|
|
102
102
|
capacity_limiter=capacity_limiter,
|
|
103
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
104
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
103
105
|
)
|
|
104
|
-
|
|
105
|
-
self._devtools = DevTools(parent_webdriver=self, devtools_settings=devtools_settings)
|
|
106
|
-
|
|
107
|
-
@property
|
|
108
|
-
def devtools(self) -> DevTools:
|
|
109
|
-
return self._devtools
|
|
@@ -3,8 +3,8 @@ from typing import (
|
|
|
3
3
|
List,
|
|
4
4
|
Optional
|
|
5
5
|
)
|
|
6
|
-
from osn_selenium.base_mixin import TrioThreadMixin
|
|
7
6
|
from osn_selenium._typehints import DEVICES_TYPEHINT
|
|
7
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
8
8
|
from osn_selenium.webdrivers._bridges import (
|
|
9
9
|
get_js_executor_bridge
|
|
10
10
|
)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
from osn_selenium.base_mixin import TrioThreadMixin
|
|
2
1
|
from typing import (
|
|
3
2
|
Any,
|
|
4
3
|
List,
|
|
5
4
|
Optional,
|
|
6
5
|
Union
|
|
7
6
|
)
|
|
7
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
8
8
|
from osn_selenium.instances.trio_threads.fedcm import FedCM
|
|
9
9
|
from osn_selenium.instances.trio_threads.dialog import Dialog
|
|
10
10
|
from osn_selenium.webdrivers.unified.core.auth import UnifiedCoreAuthMixin
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
import trio
|
|
2
2
|
from osn_selenium.models import WindowRect
|
|
3
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium.flags.base import BrowserFlagsManager
|
|
4
|
+
from osn_selenium.flags.models.base import BrowserFlags
|
|
5
|
+
from selenium.webdriver.common.bidi.session import Session
|
|
6
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
7
|
from typing import (
|
|
5
8
|
Any,
|
|
6
9
|
Dict,
|
|
10
|
+
Mapping,
|
|
7
11
|
Optional,
|
|
8
12
|
Type
|
|
9
13
|
)
|
|
10
|
-
from osn_selenium.flags.base import BrowserFlagsManager
|
|
11
|
-
from osn_selenium.flags.models.base import BrowserFlags
|
|
12
|
-
from selenium.webdriver.common.bidi.session import Session
|
|
13
|
-
from osn_selenium._typehints import (
|
|
14
|
-
ARCHITECTURES_TYPEHINT
|
|
15
|
-
)
|
|
16
14
|
from selenium.webdriver.remote.errorhandler import ErrorHandler
|
|
17
|
-
from osn_selenium.executors.trio_threads.cdp import CDPExecutor
|
|
18
15
|
from osn_selenium.executors.trio_threads.javascript import JSExecutor
|
|
19
16
|
from selenium.webdriver.remote.locator_converter import LocatorConverter
|
|
20
17
|
from selenium.webdriver.remote.remote_connection import RemoteConnection
|
|
18
|
+
from osn_selenium.webdrivers._bridges import (
|
|
19
|
+
get_js_executor_bridge
|
|
20
|
+
)
|
|
21
21
|
from osn_selenium.webdrivers.unified.core.base import UnifiedCoreBaseMixin
|
|
22
|
+
from osn_selenium._typehints import (
|
|
23
|
+
ARCHITECTURES_TYPEHINT,
|
|
24
|
+
PATH_TYPEHINT
|
|
25
|
+
)
|
|
22
26
|
from osn_selenium.abstract.webdriver.core.base import (
|
|
23
27
|
AbstractCoreBaseMixin
|
|
24
28
|
)
|
|
25
29
|
from selenium.webdriver.remote.webdriver import (
|
|
26
30
|
WebDriver as legacyWebDriver
|
|
27
31
|
)
|
|
28
|
-
from osn_selenium.webdrivers._bridges import (
|
|
29
|
-
get_cdp_executor_bridge,
|
|
30
|
-
get_js_executor_bridge
|
|
31
|
-
)
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
__all__ = ["CoreBaseMixin"]
|
|
@@ -51,6 +51,8 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
|
|
|
51
51
|
script_timeout: int = 5,
|
|
52
52
|
window_rect: Optional[WindowRect] = None,
|
|
53
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,
|
|
54
56
|
) -> None:
|
|
55
57
|
"""
|
|
56
58
|
Initializes the base mixin for Trio-based WebDrivers.
|
|
@@ -74,6 +76,8 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
|
|
|
74
76
|
browser window. Defaults to None.
|
|
75
77
|
capacity_limiter (Optional[trio.CapacityLimiter]): A Trio capacity limiter used to
|
|
76
78
|
throttle concurrent thread-based operations. Defaults to None.
|
|
79
|
+
cdp_versioned_packages_paths (Optional[Mapping[int, PATH_TYPEHINT]]): Custom local paths for specific CDP versions packages.
|
|
80
|
+
ignore_cdp_version_package_missing (bool): Whether to ignore missing CDP package errors.
|
|
77
81
|
"""
|
|
78
82
|
|
|
79
83
|
UnifiedCoreBaseMixin.__init__(
|
|
@@ -86,6 +90,8 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
|
|
|
86
90
|
page_load_timeout=page_load_timeout,
|
|
87
91
|
script_timeout=script_timeout,
|
|
88
92
|
window_rect=window_rect,
|
|
93
|
+
cdp_versioned_packages_paths=cdp_versioned_packages_paths,
|
|
94
|
+
ignore_cdp_version_package_missing=ignore_cdp_version_package_missing,
|
|
89
95
|
)
|
|
90
96
|
|
|
91
97
|
TrioThreadMixin.__init__(
|
|
@@ -96,12 +102,6 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
|
|
|
96
102
|
else trio.CapacityLimiter(100),
|
|
97
103
|
)
|
|
98
104
|
|
|
99
|
-
self._cdp_executor = CDPExecutor(
|
|
100
|
-
execute_function=get_cdp_executor_bridge(self),
|
|
101
|
-
lock=self._lock,
|
|
102
|
-
limiter=self._capacity_limiter,
|
|
103
|
-
)
|
|
104
|
-
|
|
105
105
|
self._js_executor = JSExecutor(
|
|
106
106
|
execute_function=get_js_executor_bridge(self),
|
|
107
107
|
lock=self._lock,
|
|
@@ -124,10 +124,6 @@ class CoreBaseMixin(UnifiedCoreBaseMixin, TrioThreadMixin, AbstractCoreBaseMixin
|
|
|
124
124
|
def caps(self, value: Dict[str, Any]) -> None:
|
|
125
125
|
self._caps_set_impl(value=value)
|
|
126
126
|
|
|
127
|
-
@property
|
|
128
|
-
def cdp(self) -> CDPExecutor:
|
|
129
|
-
return self._cdp_executor
|
|
130
|
-
|
|
131
127
|
@property
|
|
132
128
|
def command_executor(self) -> RemoteConnection:
|
|
133
129
|
return self._command_executor_get_impl()
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
from typing import
|
|
2
|
-
from osn_selenium.
|
|
1
|
+
from typing import Optional
|
|
2
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
3
|
+
from selenium.webdriver.common.print_page_options import PrintOptions
|
|
3
4
|
from osn_selenium.webdrivers.unified.core.capture import (
|
|
4
5
|
UnifiedCoreCaptureMixin
|
|
5
6
|
)
|
|
@@ -31,7 +32,7 @@ class CoreCaptureMixin(UnifiedCoreCaptureMixin, TrioThreadMixin, AbstractCoreCap
|
|
|
31
32
|
async def page_source(self) -> str:
|
|
32
33
|
return await self.sync_to_trio(sync_function=self._page_source_impl)()
|
|
33
34
|
|
|
34
|
-
async def print_page(self, print_options: Optional[
|
|
35
|
+
async def print_page(self, print_options: Optional[PrintOptions] = None) -> str:
|
|
35
36
|
return await self.sync_to_trio(sync_function=self._print_page_impl)(print_options=print_options)
|
|
36
37
|
|
|
37
38
|
async def save_screenshot(self, filename: str) -> bool:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from osn_selenium.
|
|
1
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
2
2
|
from osn_selenium.instances.trio_threads.dialog import Dialog
|
|
3
3
|
from osn_selenium.instances.trio_threads.mobile import Mobile
|
|
4
4
|
from osn_selenium.instances.trio_threads.browser import Browser
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import List, Optional
|
|
2
2
|
from selenium.webdriver.common.by import By
|
|
3
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
4
|
from osn_selenium.instances.trio_threads.web_element import WebElement
|
|
5
5
|
from osn_selenium.instances.convert import (
|
|
6
6
|
get_trio_thread_instance_wrapper
|
|
@@ -4,7 +4,8 @@ from typing import (
|
|
|
4
4
|
AsyncGenerator,
|
|
5
5
|
List
|
|
6
6
|
)
|
|
7
|
-
from osn_selenium.
|
|
7
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
8
|
+
from selenium.webdriver.remote.file_detector import FileDetector
|
|
8
9
|
from osn_selenium.webdrivers.unified.core.file import UnifiedCoreFileMixin
|
|
9
10
|
from osn_selenium.abstract.webdriver.core.file import (
|
|
10
11
|
AbstractCoreFileMixin
|
|
@@ -29,16 +30,16 @@ class CoreFileMixin(UnifiedCoreFileMixin, TrioThreadMixin, AbstractCoreFileMixin
|
|
|
29
30
|
await self.sync_to_trio(sync_function=self._download_file_impl)(file_name=file_name, target_directory=target_directory)
|
|
30
31
|
|
|
31
32
|
@property
|
|
32
|
-
async def file_detector(self) ->
|
|
33
|
+
async def file_detector(self) -> FileDetector:
|
|
33
34
|
return await self.sync_to_trio(sync_function=self._file_detector_get_impl)()
|
|
34
35
|
|
|
35
36
|
@file_detector.setter
|
|
36
|
-
async def file_detector(self, value:
|
|
37
|
+
async def file_detector(self, value: FileDetector) -> None:
|
|
37
38
|
await self.sync_to_trio(sync_function=self._file_detector_set_impl)(value=value)
|
|
38
39
|
|
|
39
40
|
@asynccontextmanager
|
|
40
41
|
async def file_detector_context(self, file_detector_class: Any, *args: Any, **kwargs: Any) -> AsyncGenerator[Any, Any]:
|
|
41
|
-
async with self.sync_to_trio_context(context_manager_factory=self.
|
|
42
|
+
async with self.sync_to_trio_context(context_manager_factory=self._file_detector_context_impl)(file_detector_class, *args, **kwargs) as file_detector:
|
|
42
43
|
yield file_detector
|
|
43
44
|
|
|
44
45
|
async def get_downloadable_files(self) -> List[str]:
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
from types import TracebackType
|
|
1
2
|
from osn_selenium.models import WindowRect
|
|
2
|
-
from osn_selenium.
|
|
3
|
+
from osn_selenium.flags.models.base import BrowserFlags
|
|
4
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
3
5
|
from typing import (
|
|
4
6
|
Any,
|
|
5
7
|
Dict,
|
|
6
8
|
Optional,
|
|
9
|
+
Type,
|
|
7
10
|
Union
|
|
8
11
|
)
|
|
9
|
-
from osn_selenium.flags.models.base import BrowserFlags
|
|
10
12
|
from selenium.webdriver.remote.remote_connection import RemoteConnection
|
|
11
13
|
from osn_selenium.webdrivers.unified.core.lifecycle import (
|
|
12
14
|
UnifiedCoreLifecycleMixin
|
|
@@ -27,8 +29,47 @@ class CoreLifecycleMixin(UnifiedCoreLifecycleMixin, TrioThreadMixin, AbstractCor
|
|
|
27
29
|
underlying browser instance, ensuring clean session management.
|
|
28
30
|
"""
|
|
29
31
|
|
|
30
|
-
async def
|
|
31
|
-
|
|
32
|
+
async def start_webdriver(
|
|
33
|
+
self,
|
|
34
|
+
flags: Optional[BrowserFlags] = None,
|
|
35
|
+
window_rect: Optional[WindowRect] = None,
|
|
36
|
+
) -> None:
|
|
37
|
+
await self.sync_to_trio(sync_function=self._start_webdriver_impl)(flags=flags, window_rect=window_rect)
|
|
38
|
+
|
|
39
|
+
async def __aenter__(
|
|
40
|
+
self,
|
|
41
|
+
flags: Optional[BrowserFlags] = None,
|
|
42
|
+
window_rect: Optional[WindowRect] = None,
|
|
43
|
+
) -> None:
|
|
44
|
+
await self.start_webdriver(flags=flags, window_rect=window_rect)
|
|
45
|
+
|
|
46
|
+
async def stop_webdriver(self) -> None:
|
|
47
|
+
await self.sync_to_trio(sync_function=self._stop_webdriver_impl)()
|
|
48
|
+
|
|
49
|
+
async def __aexit__(
|
|
50
|
+
self,
|
|
51
|
+
exc_type: Optional[Type[BaseException]],
|
|
52
|
+
exc_val: Optional[BaseException],
|
|
53
|
+
exc_tb: Optional[TracebackType],
|
|
54
|
+
) -> bool:
|
|
55
|
+
"""
|
|
56
|
+
Asynchronously exits the WebDriver context.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
exc_type (Optional[Type[BaseException]]): The exception type, if any.
|
|
60
|
+
exc_val (Optional[BaseException]): The exception value, if any.
|
|
61
|
+
exc_tb (Optional[TracebackType]): The exception traceback, if any.
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
bool: True if an exception was suppressed, False otherwise.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
await self.stop_webdriver()
|
|
68
|
+
|
|
69
|
+
if exc_type is not None and exc_val is not None and exc_tb is not None:
|
|
70
|
+
return True
|
|
71
|
+
|
|
72
|
+
return False
|
|
32
73
|
|
|
33
74
|
async def quit(self) -> None:
|
|
34
75
|
await self.sync_to_trio(sync_function=self._quit_impl)()
|
|
@@ -49,12 +90,5 @@ class CoreLifecycleMixin(UnifiedCoreLifecycleMixin, TrioThreadMixin, AbstractCor
|
|
|
49
90
|
async def start_session(self, capabilities: Dict[str, Any]) -> None:
|
|
50
91
|
await self.sync_to_trio(sync_function=self._start_session_impl)(capabilities=capabilities)
|
|
51
92
|
|
|
52
|
-
async def start_webdriver(
|
|
53
|
-
self,
|
|
54
|
-
flags: Optional[BrowserFlags] = None,
|
|
55
|
-
window_rect: Optional[WindowRect] = None,
|
|
56
|
-
) -> None:
|
|
57
|
-
await self.sync_to_trio(sync_function=self._start_webdriver_impl)(flags=flags, window_rect=window_rect)
|
|
58
|
-
|
|
59
93
|
async def stop_client(self) -> None:
|
|
60
94
|
await self.sync_to_trio(sync_function=self._stop_client_impl)()
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from typing import Any, List, Optional
|
|
2
|
-
from
|
|
2
|
+
from selenium.webdriver.remote.script_key import ScriptKey
|
|
3
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
3
4
|
from osn_selenium.instances.trio_threads.script import Script
|
|
4
5
|
from osn_selenium.instances.convert import (
|
|
5
6
|
get_trio_thread_instance_wrapper
|
|
@@ -42,7 +43,7 @@ class CoreScriptMixin(UnifiedCoreScriptMixin, TrioThreadMixin, AbstractCoreScrip
|
|
|
42
43
|
async def get_pinned_scripts(self) -> List[str]:
|
|
43
44
|
return await self.sync_to_trio(sync_function=self._get_pinned_scripts_impl)()
|
|
44
45
|
|
|
45
|
-
async def pin_script(self, script: str, script_key: Optional[Any] = None) ->
|
|
46
|
+
async def pin_script(self, script: str, script_key: Optional[Any] = None) -> ScriptKey:
|
|
46
47
|
return await self.sync_to_trio(sync_function=self._pin_script_impl)(script=script, script_key=script_key)
|
|
47
48
|
|
|
48
49
|
async def script(self) -> Script:
|
|
@@ -55,5 +56,5 @@ class CoreScriptMixin(UnifiedCoreScriptMixin, TrioThreadMixin, AbstractCoreScrip
|
|
|
55
56
|
limiter=self._capacity_limiter,
|
|
56
57
|
)
|
|
57
58
|
|
|
58
|
-
async def unpin(self, script_key:
|
|
59
|
+
async def unpin(self, script_key: ScriptKey) -> None:
|
|
59
60
|
await self.sync_to_trio(sync_function=self._unpin_impl)(script_key=script_key)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from typing import Optional
|
|
2
2
|
from osn_selenium.models import WindowRect
|
|
3
|
-
from osn_selenium.base_mixin import TrioThreadMixin
|
|
4
3
|
from osn_selenium.flags.models.base import BrowserFlags
|
|
4
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
5
5
|
from osn_selenium.webdrivers.unified.core.settings import (
|
|
6
6
|
UnifiedCoreSettingsMixin
|
|
7
7
|
)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
from osn_selenium.base_mixin import TrioThreadMixin
|
|
2
1
|
from typing import (
|
|
3
2
|
Any,
|
|
4
3
|
Dict,
|
|
5
4
|
List,
|
|
6
5
|
Optional
|
|
7
6
|
)
|
|
7
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
8
8
|
from osn_selenium.instances.trio_threads.storage import Storage
|
|
9
9
|
from osn_selenium.instances.convert import (
|
|
10
10
|
get_trio_thread_instance_wrapper
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import Optional
|
|
2
|
-
from osn_selenium.base_mixin import TrioThreadMixin
|
|
3
2
|
from selenium.webdriver.common.timeouts import Timeouts
|
|
3
|
+
from osn_selenium.trio_threads_mixin import TrioThreadMixin
|
|
4
4
|
from osn_selenium.webdrivers.unified.core.timeouts import (
|
|
5
5
|
UnifiedCoreTimeoutsMixin
|
|
6
6
|
)
|