Skip to content

Commit

Permalink
chore: Update Python dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
sebthom committed Aug 1, 2023
1 parent d2f3ad4 commit 4b68cd1
Show file tree
Hide file tree
Showing 2 changed files with 420 additions and 631 deletions.
31 changes: 17 additions & 14 deletions kleinanzeigen_bot/selenium_mixin.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, TimeoutException, WebDriverException
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service as ChromeService, DEFAULT_EXECUTABLE_PATH as DEFAULT_CHROMEDRIVER_PATH
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.chromium.options import ChromiumOptions
from selenium.webdriver.chromium.webdriver import ChromiumDriver
from selenium.webdriver.edge.service import Service as EdgeService, DEFAULT_EXECUTABLE_PATH as DEFAULT_EDGEDRIVER_PATH
from selenium.webdriver.edge.service import Service as EdgeService
from selenium.webdriver.remote.webdriver import WebDriver
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.support import expected_conditions as EC
Expand All @@ -21,7 +21,8 @@
import webdriver_manager.core
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from webdriver_manager.core.utils import ChromeType, OSType
from webdriver_manager.core.driver_cache import DriverCacheManager
from webdriver_manager.core.os_manager import ChromeType, OperationSystemManager, OSType, PATTERN as BrowserVersionPattern

from .utils import ensure, pause, T

Expand Down Expand Up @@ -99,11 +100,11 @@ def create_webdriver_session(self, *, use_preinstalled_webdriver:bool = True) ->
os.environ['WDM_LOG_LEVEL'] = '0' # silence the web driver manager

# check if a chrome driver is present already
if use_preinstalled_webdriver and shutil.which(DEFAULT_CHROMEDRIVER_PATH):
LOG.info("Using pre-installed Chrome Driver [%s]", shutil.which(DEFAULT_CHROMEDRIVER_PATH))
if use_preinstalled_webdriver and shutil.which("chromedriver"):
LOG.info("Using pre-installed Chrome Driver [%s]", shutil.which("chromedriver"))
self.webdriver = webdriver.Chrome(options = self._init_browser_options(webdriver.ChromeOptions()))
elif use_preinstalled_webdriver and shutil.which(DEFAULT_EDGEDRIVER_PATH):
LOG.info("Using pre-installed Edge Driver [%s]", shutil.which(DEFAULT_EDGEDRIVER_PATH))
elif use_preinstalled_webdriver and shutil.which("edgedriver"):
LOG.info("Using pre-installed Edge Driver [%s]", shutil.which("edgedriver"))
self.webdriver = webdriver.ChromiumEdge(options = self._init_browser_options(webdriver.EdgeOptions()))
else:
# determine browser major version
Expand All @@ -123,8 +124,10 @@ def create_webdriver_session(self, *, use_preinstalled_webdriver:bool = True) ->
webdriver_manager.core.driver.get_browser_version_from_os = lambda _: chrome_major_version

# download and install matching chrome driver
cacheMgr = DriverCacheManager(valid_range = 14)

if chrome_type == ChromeType.MSEDGE:
webdriver_mgr = EdgeChromiumDriverManager(cache_valid_range = 14)
webdriver_mgr = EdgeChromiumDriverManager(cache_manager = cacheMgr)
webdriver_path = webdriver_mgr.install()
env = os.environ.copy()
env["MSEDGEDRIVER_TELEMETRY_OPTOUT"] = "1" # https://docs.microsoft.com/en-us/microsoft-edge/privacy-whitepaper/#microsoft-edge-driver
Expand All @@ -133,7 +136,7 @@ def create_webdriver_session(self, *, use_preinstalled_webdriver:bool = True) ->
options = self._init_browser_options(webdriver.EdgeOptions())
)
else:
webdriver_mgr = ChromeDriverManager(chrome_type = chrome_type, cache_valid_range = 14)
webdriver_mgr = ChromeDriverManager(chrome_type = chrome_type, cache_manager = cacheMgr)
webdriver_path = webdriver_mgr.install()
self.webdriver = webdriver.Chrome(service = ChromeService(webdriver_path), options = self._init_browser_options(webdriver.ChromeOptions()))

Expand All @@ -149,7 +152,7 @@ def create_webdriver_session(self, *, use_preinstalled_webdriver:bool = True) ->
LOG.info("New WebDriver session is: %s %s", self.webdriver.session_id, self.webdriver.command_executor._url) # pylint: disable=protected-access

def get_browser_version(self, executable_path: str) -> tuple[ChromeType, str]:
match webdriver_manager.core.utils.os_name():
match OperationSystemManager().get_os_name():
case OSType.WIN:
import win32api # pylint: disable=import-outside-toplevel,import-error
# pylint: disable=no-member
Expand All @@ -175,20 +178,20 @@ def get_browser_version(self, executable_path: str) -> tuple[ChromeType, str]:
if "chromium" in filename:
return (
ChromeType.CHROMIUM,
webdriver_manager.core.utils.read_version_from_cmd(version_cmd, webdriver_manager.core.utils.PATTERN[ChromeType.CHROMIUM])
webdriver_manager.core.utils.read_version_from_cmd(version_cmd, BrowserVersionPattern[ChromeType.CHROMIUM])
)
if "edge" in filename:
return (
ChromeType.MSEDGE,
webdriver_manager.core.utils.read_version_from_cmd(version_cmd, webdriver_manager.core.utils.PATTERN[ChromeType.MSEDGE])
webdriver_manager.core.utils.read_version_from_cmd(version_cmd, BrowserVersionPattern[ChromeType.MSEDGE])
)
return (
ChromeType.GOOGLE,
webdriver_manager.core.utils.read_version_from_cmd(version_cmd, webdriver_manager.core.utils.PATTERN[ChromeType.GOOGLE])
webdriver_manager.core.utils.read_version_from_cmd(version_cmd, BrowserVersionPattern[ChromeType.GOOGLE])
)

def find_compatible_browser(self) -> tuple[str, ChromeType, str] | None:
match webdriver_manager.core.utils.os_name():
match OperationSystemManager().get_os_name():
case OSType.LINUX:
browser_paths = [
shutil.which("chromium"),
Expand Down
Loading

0 comments on commit 4b68cd1

Please sign in to comment.