import importlib
import logging
import os
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.41.0.202601181916"
_LAZY_IMPORTS = {
"Chrome": ("selenium.webdriver.chrome.webdriver", "WebDriver"),
"ChromeOptions": ("selenium.webdriver.chrome.options", "Options"),
"ChromeService": ("selenium.webdriver.chrome.service", "Service"),
"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": ("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": ("selenium.webdriver.ie.webdriver", "WebDriver"),
"IeOptions": ("selenium.webdriver.ie.options", "Options"),
"IeService": ("selenium.webdriver.ie.service", "Service"),
"Safari": ("selenium.webdriver.safari.webdriver", "WebDriver"),
"SafariOptions": ("selenium.webdriver.safari.options", "Options"),
"SafariService": ("selenium.webdriver.safari.service", "Service"),
"Remote": ("selenium.webdriver.remote.webdriver", "WebDriver"),
"WebKitGTK": ("selenium.webdriver.webkitgtk.webdriver", "WebDriver"),
"WebKitGTKOptions": ("selenium.webdriver.webkitgtk.options", "Options"),
"WebKitGTKService": ("selenium.webdriver.webkitgtk.service", "Service"),
"WPEWebKit": ("selenium.webdriver.wpewebkit.webdriver", "WebDriver"),
"WPEWebKitOptions": ("selenium.webdriver.wpewebkit.options", "Options"),
"WPEWebKitService": ("selenium.webdriver.wpewebkit.service", "Service"),
"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"),
}
_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())