Merge pull request #2045 from seleniumbase/refactor-mkfile-and-uc-mode
Refactor "sbase mkfile" and UC Mode
This commit is contained in:
commit
771ff23ed0
|
@ -3,7 +3,7 @@
|
|||
|
||||
regex>=2023.8.8
|
||||
PyYAML>=6.0.1
|
||||
pymdown-extensions>=10.2
|
||||
pymdown-extensions>=10.2.1
|
||||
pipdeptree>=2.13.0
|
||||
python-dateutil>=2.8.2
|
||||
Markdown==3.4.4
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# seleniumbase package
|
||||
__version__ = "4.17.13"
|
||||
__version__ = "4.17.14"
|
||||
|
|
|
@ -349,8 +349,9 @@ sbase mkfile new_test.py
|
|||
|
||||
* Options:
|
||||
|
||||
``-b`` / ``--basic`` (Basic boilerplate / single-line test)
|
||||
``-r`` / ``--rec`` (adds Pdb+ breakpoint for Recorder Mode)
|
||||
`-b` / `--basic` (Basic boilerplate / single-line test)
|
||||
`-r` / `--rec` (adds Pdb+ breakpoint for Recorder Mode)
|
||||
``--url=URL`` (makes the test start on a specific page)
|
||||
|
||||
* Language Options:
|
||||
|
||||
|
@ -362,12 +363,12 @@ sbase mkfile new_test.py
|
|||
|
||||
* Syntax Formats:
|
||||
|
||||
``--bc`` / ``--basecase`` (BaseCase class inheritance)
|
||||
``--pf`` / ``--pytest-fixture`` (sb pytest fixture)
|
||||
``--bc`` / ``--basecase`` (BaseCase class inheritance)
|
||||
``--pf`` / ``--pytest-fixture`` (sb pytest fixture)
|
||||
``--cf`` / ``--class-fixture`` (class + sb pytest fixture)
|
||||
``--cm`` / ``--context-manager`` (SB context manager)
|
||||
``--dc`` / ``--driver-context`` (DriverContext manager)
|
||||
``--dm`` / ``--driver-manager`` (Driver manager)
|
||||
``--cm`` / ``--context-manager`` (SB context manager)
|
||||
``--dc`` / ``--driver-context`` (DriverContext manager)
|
||||
``--dm`` / ``--driver-manager`` (Driver manager)
|
||||
|
||||
* Output:
|
||||
|
||||
|
|
|
@ -258,6 +258,7 @@ def show_mkfile_usage():
|
|||
print(" Options:")
|
||||
print(" -b / --basic (Basic boilerplate / single-line test)")
|
||||
print(" -r / --rec (adds Pdb+ breakpoint for Recorder Mode)")
|
||||
print(" --url=URL (makes the test start on a specific page)")
|
||||
print(" Language Options:")
|
||||
print(" --en / --English | --zh / --Chinese")
|
||||
print(" --nl / --Dutch | --fr / --French")
|
||||
|
@ -265,12 +266,12 @@ def show_mkfile_usage():
|
|||
print(" --ko / --Korean | --pt / --Portuguese")
|
||||
print(" --ru / --Russian | --es / --Spanish")
|
||||
print(" Syntax Formats:")
|
||||
print(" --bc / --basecase (BaseCase class inheritance)")
|
||||
print(" --pf / --pytest-fixture (sb pytest fixture)")
|
||||
print(" --cf / --class-fixture (class + sb pytest fixture)")
|
||||
print(" --cm / --context-manager (SB context manager)")
|
||||
print(" --dc / --driver-context (DriverContext manager)")
|
||||
print(" --dm / --driver-manager (Driver manager)")
|
||||
print(" --bc / --basecase (BaseCase class inheritance)")
|
||||
print(" --pf / --pytest-fixture (sb pytest fixture)")
|
||||
print(" --cf / --class-fixture (class + sb pytest fixture)")
|
||||
print(" --cm / --context-manager (SB context manager)")
|
||||
print(" --dc / --driver-context (DriverContext manager)")
|
||||
print(" --dm / --driver-manager (Driver manager)")
|
||||
print(" Output:")
|
||||
print(" Creates a new SBase test file with boilerplate code.")
|
||||
print(" If the file already exists, an error is raised.")
|
||||
|
|
|
@ -11,6 +11,7 @@ Example:
|
|||
Options:
|
||||
-b / --basic (Basic boilerplate / single-line test)
|
||||
-r / --rec (adds Pdb+ breakpoint for Recorder Mode)
|
||||
--url=URL (makes the test start on a specific page)
|
||||
|
||||
Language Options:
|
||||
--en / --English | --zh / --Chinese
|
||||
|
@ -20,12 +21,12 @@ Language Options:
|
|||
--ru / --Russian | --es / --Spanish
|
||||
|
||||
Syntax Formats:
|
||||
--bc / --basecase (BaseCase class inheritance)
|
||||
--pf / --pytest-fixture (sb pytest fixture)
|
||||
--cf / --class-fixture (class + sb pytest fixture)
|
||||
--cm / --context-manager (SB context manager)
|
||||
--dc / --driver-context (DriverContext manager)
|
||||
--dm / --driver-manager (Driver manager)
|
||||
--bc / --basecase (BaseCase class inheritance)
|
||||
--pf / --pytest-fixture (sb pytest fixture)
|
||||
--cf / --class-fixture (class + sb pytest fixture)
|
||||
--cm / --context-manager (SB context manager)
|
||||
--dc / --driver-context (DriverContext manager)
|
||||
--dm / --driver-manager (Driver manager)
|
||||
|
||||
Output:
|
||||
Creates a new SBase test file with boilerplate code.
|
||||
|
@ -53,6 +54,7 @@ def invalid_run_command(msg=None):
|
|||
exp += " Options:\n"
|
||||
exp += " -b / --basic (Basic boilerplate / single-line test)\n"
|
||||
exp += " -r / --rec (adds Pdb+ breakpoint for Recorder Mode)\n"
|
||||
exp += " --url=URL (makes the test start on a specific page)\n"
|
||||
exp += " Language Options:\n"
|
||||
exp += " --en / --English | --zh / --Chinese\n"
|
||||
exp += " --nl / --Dutch | --fr / --French\n"
|
||||
|
@ -60,12 +62,12 @@ def invalid_run_command(msg=None):
|
|||
exp += " --ko / --Korean | --pt / --Portuguese\n"
|
||||
exp += " --ru / --Russian | --es / --Spanish\n"
|
||||
exp += " Syntax Formats:\n"
|
||||
exp += " --bc / --basecase (BaseCase class inheritance)\n"
|
||||
exp += " --pf / --pytest-fixture (sb pytest fixture)\n"
|
||||
exp += " --cf / --class-fixture (class + sb pytest fixture)\n"
|
||||
exp += " --cm / --context-manager (SB context manager)\n"
|
||||
exp += " --dc / --driver-context (DriverContext manager)\n"
|
||||
exp += " --dm / --driver-manager (Driver manager)\n"
|
||||
exp += " --bc / --basecase (BaseCase class inheritance)\n"
|
||||
exp += " --pf / --pytest-fixture (sb pytest fixture)\n"
|
||||
exp += " --cf / --class-fixture (class + sb pytest fixture)\n"
|
||||
exp += " --cm / --context-manager (SB context manager)\n"
|
||||
exp += " --dc / --driver-context (DriverContext manager)\n"
|
||||
exp += " --dm / --driver-manager (Driver manager)\n"
|
||||
exp += " Output:\n"
|
||||
exp += " Creates a new SBase test file with boilerplate code.\n"
|
||||
exp += " If the file already exists, an error is raised.\n"
|
||||
|
@ -100,6 +102,7 @@ def main():
|
|||
help_me = False
|
||||
recorder = False
|
||||
error_msg = None
|
||||
start_page = None
|
||||
invalid_cmd = None
|
||||
syntax = "BaseCase"
|
||||
language = "English"
|
||||
|
@ -128,6 +131,15 @@ def main():
|
|||
option = option.lower()
|
||||
if option == "-h" or option == "--help":
|
||||
help_me = True
|
||||
elif option.startswith("--url=") and len(option) > 6:
|
||||
from seleniumbase.fixtures import page_utils
|
||||
start_page = option.split("--url=")[1]
|
||||
if not page_utils.is_valid_url(start_page):
|
||||
if page_utils.is_valid_url("https://" + start_page):
|
||||
start_page = "https://" + start_page
|
||||
else:
|
||||
raise Exception("Invalid URL: %s" % start_page)
|
||||
basic = True
|
||||
elif option == "-b" or option == "--basic":
|
||||
basic = True
|
||||
elif option == "-r" or option == "--rec":
|
||||
|
@ -223,7 +235,9 @@ def main():
|
|||
goodbye = "Adiós"
|
||||
class_name = "MiClaseDePrueba"
|
||||
url = ""
|
||||
if basic:
|
||||
if start_page:
|
||||
url = start_page
|
||||
elif basic:
|
||||
url = "about:blank"
|
||||
elif language not in ["English", "Dutch", "French", "Italian"]:
|
||||
url = "data:text/html,<meta charset='utf-8'><p>%s<br><input>" % hello
|
||||
|
|
|
@ -247,7 +247,7 @@ def uc_special_open_if_cf(driver, url, proxy_string=None):
|
|||
or has_cf(req_get.text)
|
||||
):
|
||||
special = True
|
||||
if status_str == "403":
|
||||
if status_str == "403" or status_str == "429":
|
||||
time.sleep(0.06) # Forbidden / Blocked! (Wait first!)
|
||||
except Exception:
|
||||
pass
|
||||
|
@ -259,9 +259,9 @@ def uc_special_open_if_cf(driver, url, proxy_string=None):
|
|||
driver.switch_to.window(driver.window_handles[-1])
|
||||
time.sleep(0.02)
|
||||
else:
|
||||
driver.open(url) # The original one
|
||||
driver.default_get(url) # The original one
|
||||
else:
|
||||
driver.open(url) # The original one
|
||||
driver.default_get(url) # The original one
|
||||
return None
|
||||
|
||||
|
||||
|
@ -269,10 +269,10 @@ def uc_open(driver, url):
|
|||
if (url.startswith("http:") or url.startswith("https:")):
|
||||
with driver:
|
||||
time.sleep(0.18)
|
||||
driver.open(url)
|
||||
driver.default_get(url)
|
||||
time.sleep(0.02)
|
||||
else:
|
||||
driver.open(url) # The original one
|
||||
driver.default_get(url) # The original one
|
||||
return None
|
||||
|
||||
|
||||
|
@ -285,7 +285,7 @@ def uc_open_with_tab(driver, url):
|
|||
driver.switch_to.window(driver.window_handles[-1])
|
||||
time.sleep(0.02)
|
||||
else:
|
||||
driver.open(url) # The original one
|
||||
driver.default_get(url) # The original one
|
||||
return None
|
||||
|
||||
|
||||
|
@ -297,7 +297,7 @@ def uc_open_with_reconnect(driver, url):
|
|||
driver.close()
|
||||
driver.switch_to.window(driver.window_handles[-1])
|
||||
else:
|
||||
driver.open(url) # The original one
|
||||
driver.default_get(url) # The original one
|
||||
return None
|
||||
|
||||
|
||||
|
@ -3538,7 +3538,7 @@ def get_local_driver(
|
|||
service_args=["--disable-build-check"],
|
||||
options=chrome_options,
|
||||
)
|
||||
driver.open = driver.get # Save copy of original
|
||||
driver.default_get = driver.get # Save copy of original
|
||||
if uc_activated:
|
||||
driver.get = lambda url: uc_special_open_if_cf(
|
||||
driver, url, proxy_string
|
||||
|
@ -3550,6 +3550,7 @@ def get_local_driver(
|
|||
driver.uc_open_with_reconnect = (
|
||||
lambda url: uc_open_with_reconnect(driver, url)
|
||||
)
|
||||
driver.open = driver.get # Shortcut
|
||||
return driver
|
||||
else: # Running headless on Linux (and not using --uc)
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue