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