diff --git a/undetected_chromedriver/__init__.py b/undetected_chromedriver/__init__.py index 6ac1cea..d690d3f 100644 --- a/undetected_chromedriver/__init__.py +++ b/undetected_chromedriver/__init__.py @@ -245,16 +245,16 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): options._session = self - debug_port = selenium.webdriver.common.service.utils.free_port() - debug_host = "127.0.0.1" - if not options.debugger_address: + debug_port = port if port != 0 else selenium.webdriver.common.service.utils.free_port() + debug_host = "127.0.0.1" options.debugger_address = "%s:%d" % (debug_host, debug_port) + else: + debug_host, debug_port = options.debugger_address.split(":") + debug_port = int(debug_port) if enable_cdp_events: - options.set_capability( - "goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"} - ) + options.set_capability("goog:loggingPrefs", {"performance": "ALL", "browser": "ALL"}) options.add_argument("--remote-debugging-host=%s" % debug_host) options.add_argument("--remote-debugging-port=%s" % debug_port) @@ -279,15 +279,12 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): m = re.search("(?:--)?user-data-dir(?:[ =])?(.*)", arg) try: user_data_dir = m[1] - logger.debug( - "user-data-dir found in user argument %s => %s" % (arg, m[1]) - ) + logger.debug("user-data-dir found in user argument %s => %s" % (arg, m[1])) keep_user_data_dir = True except IndexError: logger.debug( - "no user data dir could be extracted from supplied argument %s " - % arg + "no user data dir could be extracted from supplied argument %s " % arg ) if not user_data_dir: @@ -295,9 +292,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): # backward compatiblity # check if an old uc.ChromeOptions is used, and extract the user data dir - if hasattr(options, "user_data_dir") and getattr( - options, "user_data_dir", None - ): + if hasattr(options, "user_data_dir") and getattr(options, "user_data_dir", None): import warnings warnings.warn( @@ -306,9 +301,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): ) options.add_argument("--user-data-dir=%s" % options.user_data_dir) keep_user_data_dir = True - logger.debug( - "user_data_dir property found in options object: %s" % user_data_dir - ) + logger.debug("user_data_dir property found in options object: %s" % user_data_dir) else: user_data_dir = os.path.normpath(tempfile.mkdtemp()) @@ -333,9 +326,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): options.add_argument("--lang=%s" % language) if not options.binary_location: - options.binary_location = ( - browser_executable_path or find_chrome_executable() - ) + options.binary_location = browser_executable_path or find_chrome_executable() self._delay = 3 @@ -353,8 +344,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): # on linux using privileged user like root (which i don't recommend) options.add_argument( - "--log-level=%d" % log_level - or divmod(logging.getLogger().getEffectiveLevel(), 10)[0] + "--log-level=%d" % log_level or divmod(logging.getLogger().getEffectiveLevel(), 10)[0] ) if hasattr(options, "handle_prefs"): @@ -384,9 +374,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): desired_capabilities = options.to_capabilities() if not use_subprocess: - self.browser_pid = start_detached( - options.binary_location, *options.arguments - ) + self.browser_pid = start_detached(options.binary_location, *options.arguments) else: browser = subprocess.Popen( [options.binary_location, *options.arguments], @@ -411,9 +399,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): if enable_cdp_events: if logging.getLogger().getEffectiveLevel() == logging.DEBUG: - logging.getLogger( - "selenium.webdriver.remote.remote_connection" - ).setLevel(20) + logging.getLogger("selenium.webdriver.remote.remote_connection").setLevel(20) reactor = Reactor(self) reactor.start() self.reactor = reactor @@ -479,9 +465,9 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): self.execute_cdp_cmd( "Network.setUserAgentOverride", { - "userAgent": self.execute_script( - "return navigator.userAgent" - ).replace("Headless", "") + "userAgent": self.execute_script("return navigator.userAgent").replace( + "Headless", "" + ) }, ) self.execute_cdp_cmd( @@ -626,11 +612,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): return super().get(url) def add_cdp_listener(self, event_name, callback): - if ( - self.reactor - and self.reactor is not None - and isinstance(self.reactor, Reactor) - ): + if self.reactor and self.reactor is not None and isinstance(self.reactor, Reactor): self.reactor.add_event_handler(event_name, callback) return self.reactor.handlers return False @@ -728,8 +710,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver): def __del__(self): try: - super().quit() - # self.service.process.kill() + self.service.process.kill() except: # noqa pass self.quit() @@ -776,9 +757,7 @@ def find_chrome_executable(): ] ) else: - for item in map( - os.environ.get, ("PROGRAMFILES", "PROGRAMFILES(X86)", "LOCALAPPDATA") - ): + for item in map(os.environ.get, ("PROGRAMFILES", "PROGRAMFILES(X86)", "LOCALAPPDATA")): if item is not None: for subitem in ( "Google/Chrome/Application",