Skip to content

Upgrade Selenium to 4.12.0 #2053

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Sep 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 37 additions & 67 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,92 +1,62 @@
pip>=21.3.1;python_version<"3.7"
pip>=23.2.1;python_version>="3.7"
packaging>=21.3;python_version<"3.7"
packaging>=23.1;python_version>="3.7"
setuptools>=59.6.0;python_version<"3.7"
setuptools>=68.0.0;python_version>="3.7" and python_version<"3.8"
pip>=23.2.1
packaging>=23.1
setuptools>=68.0.0;python_version<"3.8"
setuptools>=68.1.2;python_version>="3.8"
wheel>=0.37.1;python_version<"3.7"
wheel>=0.41.2;python_version>="3.7"
attrs==22.1.0;python_version<"3.7"
attrs>=23.1.0;python_version>="3.7"
wheel>=0.41.2
attrs>=23.1.0
certifi>=2023.7.22
filelock>=3.4.1;python_version<"3.7"
filelock>=3.12.2;python_version>="3.7" and python_version<"3.8"
filelock>=3.12.2;python_version<"3.8"
filelock>=3.12.3;python_version>="3.8"
platformdirs>=2.4.0;python_version<"3.7"
platformdirs>=3.10.0;python_version>="3.7"
platformdirs>=3.10.0
parse>=1.19.1
parse-type>=0.6.2
six==1.16.0
idna==3.4
chardet==4.0.0;python_version<"3.7"
chardet==5.2.0;python_version>="3.7"
charset-normalizer==2.0.12;python_version<"3.7"
charset-normalizer==3.2.0;python_version>="3.7"
urllib3==1.26.12;python_version<"3.7"
urllib3>=1.26.16,<2;python_version>="3.7" and python_version<"3.10"
chardet==5.2.0
charset-normalizer==3.2.0
urllib3>=1.26.16,<2;python_version<"3.10"
urllib3>=1.26.16,<2.1.0;python_version>="3.10"
requests==2.27.1;python_version<"3.7"
requests==2.31.0;python_version>="3.7"
requests==2.31.0
pynose==1.4.8
sniffio==1.3.0;python_version>="3.7"
h11==0.14.0;python_version>="3.7"
outcome==1.2.0;python_version>="3.7"
trio==0.22.2;python_version>="3.7"
trio-websocket==0.10.3;python_version>="3.7"
wsproto==1.2.0;python_version>="3.7"
selenium==3.141.0;python_version<"3.7"
selenium==4.11.2;python_version>="3.7"
msedge-selenium-tools==3.141.3;python_version<"3.7"
cssselect==1.1.0;python_version<"3.7"
cssselect==1.2.0;python_version>="3.7"
sniffio==1.3.0
h11==0.14.0
outcome==1.2.0
trio==0.22.2
trio-websocket==0.10.3
wsproto==1.2.0
selenium==4.11.2;python_version<"3.8"
selenium==4.12.0;python_version>="3.8"
cssselect==1.2.0
sortedcontainers==2.4.0
fasteners==0.17.3;python_version<"3.7"
fasteners==0.18;python_version>="3.7"
execnet==1.9.0;python_version<"3.7"
execnet==2.0.2;python_version>="3.7"
iniconfig==1.1.1;python_version<"3.7"
iniconfig==2.0.0;python_version>="3.7"
pluggy==1.0.0;python_version<"3.7"
pluggy==1.2.0;python_version>="3.7" and python_version<"3.8"
fasteners==0.18
execnet==2.0.2
iniconfig==2.0.0
pluggy==1.2.0;python_version<"3.8"
pluggy==1.3.0;python_version>="3.8"
py==1.11.0
pytest==7.0.1;python_version<"3.7"
pytest==7.4.0;python_version>="3.7"
pytest-forked==1.4.0;python_version<"3.7"
pytest==7.4.0
pytest-html==2.0.1
pytest-metadata==1.11.0;python_version<"3.7"
pytest-metadata==3.0.0;python_version>="3.7"
pytest-metadata==3.0.0
pytest-ordering==0.6
pytest-rerunfailures==10.3;python_version<"3.7"
pytest-rerunfailures==12.0;python_version>="3.7"
pytest-xdist==2.5.0;python_version<"3.7"
pytest-xdist==3.3.1;python_version>="3.7"
parameterized==0.8.1;python_version<"3.7"
parameterized==0.9.0;python_version>="3.7"
pytest-rerunfailures==12.0
pytest-xdist==3.3.1
parameterized==0.9.0
sbvirtualdisplay==1.2.0
behave==1.2.6
soupsieve==2.3.2.post1;python_version<"3.7"
soupsieve==2.4.1;python_version>="3.7"
soupsieve==2.4.1
beautifulsoup4==4.12.2
pygments==2.14.0;python_version<"3.7"
pygments==2.16.1;python_version>="3.7"
pygments==2.16.1
pyreadline3==3.4.1;platform_system=="Windows"
tabcompleter==1.2.1
pdbp==1.4.6
colorama==0.4.5;python_version<"3.7"
colorama==0.4.6;python_version>="3.7"
exceptiongroup==1.1.3;python_version>="3.7"
future-breakpoint==2.0.0;python_version<"3.7"
colorama==0.4.6
exceptiongroup==1.1.3
importlib-metadata==4.2.0;python_version<"3.8"
pyotp==2.7.0;python_version<"3.7"
pyotp==2.9.0;python_version>="3.7"
typing-extensions==4.1.1;python_version<"3.7"
commonmark==0.9.1;python_version<"3.7"
pyotp==2.9.0
markdown-it-py==2.2.0;python_version<"3.8"
markdown-it-py==3.0.0;python_version>="3.8"
mdurl==0.1.2;python_version>="3.7"
rich==12.6.0;python_version<"3.7"
rich==13.5.2;python_version>="3.7"
mdurl==0.1.2
rich==13.5.2

# --- Testing Requirements --- #
# ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
Expand Down
2 changes: 1 addition & 1 deletion seleniumbase/__version__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# seleniumbase package
__version__ = "4.17.14"
__version__ = "4.18.0"
2 changes: 1 addition & 1 deletion seleniumbase/console_scripts/ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ sbase get chromedriver -p
```

(Drivers: ``chromedriver``, ``geckodriver``, ``edgedriver``,
``iedriver``, ``operadriver``, ``uc_driver``)
``iedriver``, ``uc_driver``)

(Options: A specific driver version or major version integer.
If not set, the driver version matches the browser.
Expand Down
2 changes: 1 addition & 1 deletion seleniumbase/console_scripts/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def show_install_usage():
print(" OR: sbase install [DRIVER_NAME] [OPTIONS]")
print(" OR: sbase get [DRIVER_NAME] [OPTIONS]")
print(" (Drivers: chromedriver, geckodriver, edgedriver")
print(" iedriver, operadriver, uc_driver)")
print(" iedriver, uc_driver)")
print(" Options:")
print(" VERSION Specify the version to download.")
print(" Tries to detect the needed version.")
Expand Down
129 changes: 5 additions & 124 deletions seleniumbase/console_scripts/sb_install.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

Usage:
sbase get {chromedriver|geckodriver|edgedriver|
iedriver|operadriver} [OPTIONS]
iedriver|uc_driver} [OPTIONS]
Options:
VERSION Specify the version.
Tries to detect the needed version.
Expand All @@ -16,6 +16,8 @@
sbase get edgedriver
sbase get chromedriver 114
sbase get chromedriver 114.0.5735.90
sbase get chromedriver stable
sbase get chromedriver beta
sbase get chromedriver -p
Output:
Downloads the webdriver to seleniumbase/drivers/
Expand Down Expand Up @@ -50,7 +52,6 @@
DEFAULT_CHROMEDRIVER_VERSION = "114.0.5735.90" # (If can't find LATEST_STABLE)
DEFAULT_GECKODRIVER_VERSION = "v0.33.0"
DEFAULT_EDGEDRIVER_VERSION = "115.0.1901.183" # (If can't find LATEST_STABLE)
DEFAULT_OPERADRIVER_VERSION = "v.96.0.4664.45"


def invalid_run_command():
Expand All @@ -61,7 +62,7 @@ def invalid_run_command():
exp += " OR seleniumbase get [DRIVER] [OPTIONS]\n"
exp += " OR sbase get [DRIVER] [OPTIONS]\n"
exp += " (Drivers: chromedriver, geckodriver, edgedriver,\n"
exp += " iedriver, operadriver, uc_driver)\n"
exp += " iedriver, uc_driver)\n"
exp += " Options:\n"
exp += " VERSION Specify the version.\n"
exp += " Tries to detect the needed version.\n"
Expand Down Expand Up @@ -287,7 +288,6 @@ def main(override=None, intel_for_uc=None, force_uc=None):
downloads_folder = DRIVER_DIR
expected_contents = None
platform_code = None
inner_folder = None
copy_to_path = False
latest_version = ""
use_version = ""
Expand Down Expand Up @@ -717,7 +717,7 @@ def main(override=None, intel_for_uc=None, force_uc=None):
else:
raise Exception(
"Sorry! IEDriver is only for "
"Windows-based operating systems!"
"Windows-based systems!"
)
download_url = (
"https://selenium-release.storage.googleapis.com/"
Expand All @@ -736,71 +736,6 @@ def main(override=None, intel_for_uc=None, force_uc=None):
msg = c2 + "HeadlessIEDriver to download" + cr
p_version = c3 + headless_ie_version + cr
log_d("\n*** %s = %s" % (msg, p_version))
elif name == "operadriver" or name == "operachromiumdriver":
name = "operadriver"
use_version = DEFAULT_OPERADRIVER_VERSION
get_latest = False
if num_args == 4 or num_args == 5:
if "-p" not in sys.argv[3].lower():
use_version = sys.argv[3]
if use_version.lower() == "latest":
use_version = DEFAULT_OPERADRIVER_VERSION
else:
copy_to_path = True
if num_args == 5:
if "-p" in sys.argv[4].lower():
copy_to_path = True
else:
invalid_run_command()
if IS_MAC:
file_name = "operadriver_mac64.zip"
platform_code = "mac64"
inner_folder = "operadriver_%s/" % platform_code
expected_contents = [
"operadriver_mac64/",
"operadriver_mac64/operadriver",
"operadriver_mac64/sha512_sum",
]
elif IS_LINUX:
file_name = "operadriver_linux64.zip"
platform_code = "linux64"
inner_folder = "operadriver_%s/" % platform_code
expected_contents = [
"operadriver_linux64/",
"operadriver_linux64/operadriver",
"operadriver_linux64/sha512_sum",
]
elif IS_WINDOWS and "64" in ARCH:
file_name = "operadriver_win64.zip"
platform_code = "win64"
inner_folder = "operadriver_%s/" % platform_code
expected_contents = [
"operadriver_win64/",
"operadriver_win64/operadriver.exe",
"operadriver_win64/sha512_sum",
]
elif IS_WINDOWS:
file_name = "operadriver_win32.zip"
platform_code = "win32"
inner_folder = "operadriver_%s/" % platform_code
expected_contents = [
"operadriver_win32/",
"operadriver_win32/operadriver.exe",
"operadriver_win32/sha512_sum",
]
else:
raise Exception(
"Cannot determine which version of Operadriver to download!"
)

download_url = (
"https://github.com/operasoftware/operachromiumdriver/"
"releases/download/"
"%s/%s" % (use_version, file_name)
)
msg = c2 + "operadriver to download" + cr
p_version = c3 + use_version + cr
log_d("\n*** %s = %s" % (msg, p_version))
else:
invalid_run_command()

Expand Down Expand Up @@ -1095,60 +1030,6 @@ def main(override=None, intel_for_uc=None, force_uc=None):
make_executable(path_file)
log_d("Also copied to: %s%s%s" % (c3, path_file, cr))
log_d("")
elif name == "operadriver":
if len(contents) > 3:
raise Exception("Unexpected content in OperaDriver Zip file!")
# Zip file is valid. Proceed.
driver_path = None
driver_file = None
for f_name in contents:
# Remove existing version if exists
str_name = str(f_name).split(inner_folder)[1]
new_file = os.path.join(downloads_folder, str_name)
if str_name == "operadriver" or str_name == "operadriver.exe":
driver_file = str_name
driver_path = new_file
if os.path.exists(new_file):
os.remove(new_file)
if not driver_file or not driver_path:
raise Exception("Operadriver missing from Zip file!")
log_d("Extracting %s from %s ..." % (contents, file_name))
zip_ref.extractall(downloads_folder)
zip_ref.close()
os.remove(zip_file_path)
log_d("%sUnzip Complete!%s\n" % (c2, cr))
inner_driver = os.path.join(
downloads_folder, inner_folder, driver_file
)
inner_sha = os.path.join(
downloads_folder, inner_folder, "sha512_sum"
)
shutil.copyfile(inner_driver, driver_path)
pr_driver_path = c3 + driver_path + cr
log_d(
"The file [%s] was saved to:\n%s\n"
% (driver_file, pr_driver_path)
)
log_d("Making [%s %s] executable ..." % (driver_file, use_version))
make_executable(driver_path)
log_d(
"%s[%s %s] is now ready for use!%s"
% (c1, driver_file, use_version, cr)
)
if copy_to_path and os.path.exists(LOCAL_PATH):
path_file = LOCAL_PATH + driver_file
shutil.copyfile(driver_path, path_file)
make_executable(path_file)
log_d("Also copied to: %s%s%s" % (c3, path_file, cr))
# Clean up extra files
if os.path.exists(inner_driver):
os.remove(inner_driver)
if os.path.exists(inner_sha):
os.remove(inner_sha)
if os.path.exists(os.path.join(downloads_folder, inner_folder)):
# Only works if the directory is empty
os.rmdir(os.path.join(downloads_folder, inner_folder))
log_d("")
elif len(contents) == 0:
raise Exception("Zip file %s is empty!" % zip_file_path)
else:
Expand Down
Loading