initial commit
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
# Licensed to the Software Freedom Conservancy (SFC) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The SFC licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import importlib
|
||||
import logging
|
||||
import os
|
||||
|
||||
# Enable debug logging if SE_DEBUG environment variable is set
|
||||
if os.environ.get("SE_DEBUG"):
|
||||
logger = logging.getLogger("selenium")
|
||||
logger.setLevel(logging.DEBUG)
|
||||
if not logger.handlers:
|
||||
logger.addHandler(logging.StreamHandler())
|
||||
logger.warning(
|
||||
"Environment Variable `SE_DEBUG` is set; "
|
||||
"Selenium is forcing verbose logging which may override user-specified settings."
|
||||
)
|
||||
|
||||
__version__ = "4.43.0"
|
||||
|
||||
# Lazy import mapping: name -> (module_path, attribute_name)
|
||||
_LAZY_IMPORTS = {
|
||||
# Chrome
|
||||
"Chrome": ("selenium.webdriver.chrome.webdriver", "WebDriver"),
|
||||
"ChromeOptions": ("selenium.webdriver.chrome.options", "Options"),
|
||||
"ChromeService": ("selenium.webdriver.chrome.service", "Service"),
|
||||
# Edge
|
||||
"Edge": ("selenium.webdriver.edge.webdriver", "WebDriver"),
|
||||
"ChromiumEdge": ("selenium.webdriver.edge.webdriver", "WebDriver"),
|
||||
"EdgeOptions": ("selenium.webdriver.edge.options", "Options"),
|
||||
"EdgeService": ("selenium.webdriver.edge.service", "Service"),
|
||||
# Firefox
|
||||
"Firefox": ("selenium.webdriver.firefox.webdriver", "WebDriver"),
|
||||
"FirefoxOptions": ("selenium.webdriver.firefox.options", "Options"),
|
||||
"FirefoxProfile": ("selenium.webdriver.firefox.firefox_profile", "FirefoxProfile"),
|
||||
"FirefoxService": ("selenium.webdriver.firefox.service", "Service"),
|
||||
# IE
|
||||
"Ie": ("selenium.webdriver.ie.webdriver", "WebDriver"),
|
||||
"IeOptions": ("selenium.webdriver.ie.options", "Options"),
|
||||
"IeService": ("selenium.webdriver.ie.service", "Service"),
|
||||
# Safari
|
||||
"Safari": ("selenium.webdriver.safari.webdriver", "WebDriver"),
|
||||
"SafariOptions": ("selenium.webdriver.safari.options", "Options"),
|
||||
"SafariService": ("selenium.webdriver.safari.service", "Service"),
|
||||
# Remote
|
||||
"Remote": ("selenium.webdriver.remote.webdriver", "WebDriver"),
|
||||
# WebKitGTK
|
||||
"WebKitGTK": ("selenium.webdriver.webkitgtk.webdriver", "WebDriver"),
|
||||
"WebKitGTKOptions": ("selenium.webdriver.webkitgtk.options", "Options"),
|
||||
"WebKitGTKService": ("selenium.webdriver.webkitgtk.service", "Service"),
|
||||
# WPEWebKit
|
||||
"WPEWebKit": ("selenium.webdriver.wpewebkit.webdriver", "WebDriver"),
|
||||
"WPEWebKitOptions": ("selenium.webdriver.wpewebkit.options", "Options"),
|
||||
"WPEWebKitService": ("selenium.webdriver.wpewebkit.service", "Service"),
|
||||
# Common utilities
|
||||
"ActionChains": ("selenium.webdriver.common.action_chains", "ActionChains"),
|
||||
"DesiredCapabilities": ("selenium.webdriver.common.desired_capabilities", "DesiredCapabilities"),
|
||||
"Keys": ("selenium.webdriver.common.keys", "Keys"),
|
||||
"Proxy": ("selenium.webdriver.common.proxy", "Proxy"),
|
||||
}
|
||||
|
||||
# Submodules that can be lazily imported as modules
|
||||
_LAZY_SUBMODULES = {
|
||||
"chrome": "selenium.webdriver.chrome",
|
||||
"chromium": "selenium.webdriver.chromium",
|
||||
"common": "selenium.webdriver.common",
|
||||
"edge": "selenium.webdriver.edge",
|
||||
"firefox": "selenium.webdriver.firefox",
|
||||
"ie": "selenium.webdriver.ie",
|
||||
"remote": "selenium.webdriver.remote",
|
||||
"safari": "selenium.webdriver.safari",
|
||||
"support": "selenium.webdriver.support",
|
||||
"webkitgtk": "selenium.webdriver.webkitgtk",
|
||||
"wpewebkit": "selenium.webdriver.wpewebkit",
|
||||
}
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
if name in _LAZY_IMPORTS:
|
||||
module_path, attr_name = _LAZY_IMPORTS[name]
|
||||
module = importlib.import_module(module_path)
|
||||
value = getattr(module, attr_name)
|
||||
globals()[name] = value
|
||||
return value
|
||||
if name in _LAZY_SUBMODULES:
|
||||
module = importlib.import_module(_LAZY_SUBMODULES[name])
|
||||
globals()[name] = module
|
||||
return module
|
||||
raise AttributeError(f"module 'selenium.webdriver' has no attribute {name!r}")
|
||||
|
||||
|
||||
def __dir__():
|
||||
return sorted(set(__all__) | set(_LAZY_SUBMODULES.keys()))
|
||||
|
||||
|
||||
__all__ = sorted(_LAZY_IMPORTS.keys())
|
||||
Reference in New Issue
Block a user