3.1.2 - some 'bug' fixes
This commit is contained in:
parent
f9e9e77218
commit
3bf4cdf7a9
6
setup.py
6
setup.py
|
@ -46,10 +46,11 @@ setup(
|
|||
description="""\
|
||||
selenium.webdriver.Chrome replacement wiht compatiblity for Brave, and other Chromium baed browsers.
|
||||
not triggered by CloudFlare/Imperva/hCaptcha and such.
|
||||
|
||||
NOTE: results may vary due to many factors. No guarantees are given, except for ongoing efforts in understanding detection algorithms.
|
||||
""",
|
||||
|
||||
long_description=open(os.path.join(dirname, "README.md"), encoding="utf-8").read(),
|
||||
|
||||
long_description_content_type="text/markdown",
|
||||
classifiers=[
|
||||
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
||||
|
@ -57,6 +58,7 @@ setup(
|
|||
"Programming Language :: Python :: 3.7",
|
||||
"Programming Language :: Python :: 3.8",
|
||||
"Programming Language :: Python :: 3.9",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.10"
|
||||
"Programming Language :: Python :: 3.11",
|
||||
],
|
||||
)
|
||||
|
|
|
@ -113,7 +113,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|||
version_main=None,
|
||||
patcher_force_close=False,
|
||||
suppress_welcome=True,
|
||||
detached_process=True,
|
||||
no_subprocess=True,
|
||||
debug=False,
|
||||
**kw
|
||||
):
|
||||
|
@ -185,6 +185,23 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|||
now, in case you are nag-fetishist, or a diagnostics data feeder to google, you can set this to False.
|
||||
Note: if you don't handle the nag screen in time, the browser loses it's connection and throws an Exception.
|
||||
|
||||
use_subprocess: bool, optional , default: False,
|
||||
|
||||
False (the default) makes sure Chrome will get it's own process (so no subprocess of chromedriver.exe or python
|
||||
This fixes a LOT of issues, like multithreaded run, but mst importantly. shutting corectly after
|
||||
program exits or using .quit()
|
||||
|
||||
unfortunately, there is always an edge case in which one would like to write an single script with the only contents being:
|
||||
--start script--
|
||||
import undetected_chromedriver as uc
|
||||
d = uc.Chrome()
|
||||
d.get('https://somesite/')
|
||||
---end script --
|
||||
|
||||
and will be greeted with an error, since the program exists before chrome has a change to launch.
|
||||
in that case you can set this to `True`. The browser will start via subprocess, and will keep running most of times.
|
||||
! setting it to True comes with NO support when being detected. !
|
||||
|
||||
"""
|
||||
self.debug = debug
|
||||
patcher = Patcher(
|
||||
|
@ -339,7 +356,9 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|||
if not desired_capabilities:
|
||||
desired_capabilities = options.to_capabilities()
|
||||
|
||||
if not detached_process:
|
||||
if not use_subprocess:
|
||||
self.browser_pid = start_detached(options.binary_location, *options.arguments)
|
||||
else:
|
||||
browser = subprocess.Popen(
|
||||
[options.binary_location, *options.arguments],
|
||||
stdin=subprocess.PIPE,
|
||||
|
@ -348,8 +367,8 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|||
close_fds=IS_POSIX,
|
||||
)
|
||||
self.browser_pid = browser.pid
|
||||
else:
|
||||
self.browser_pid = start_detached(options.binary_location, *options.arguments)
|
||||
|
||||
|
||||
|
||||
super(Chrome, self).__init__(
|
||||
executable_path=patcher.executable_path,
|
||||
|
|
Loading…
Reference in New Issue