Skip to content

Commit 70b05ff

Browse files
authored
Merge pull request #3079 from seleniumbase/uc-mode-upgrades
UC Mode upgrades
2 parents 119ec4b + 4182bd8 commit 70b05ff

File tree

8 files changed

+63
-26
lines changed

8 files changed

+63
-26
lines changed

mkdocs_build/requirements.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ pathspec==0.12.1
1717
Babel==2.16.0
1818
paginate==0.5.7
1919
lxml==5.3.0
20-
pyquery==2.0.0
20+
pyquery==2.0.1
2121
readtime==3.0.0
22-
mkdocs==1.6.0
22+
mkdocs==1.6.1
2323
mkdocs-material==9.5.33
2424
mkdocs-exclude-search==0.6.6
2525
mkdocs-simple-hooks==0.1.5

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ setuptools>=70.2.0;python_version>="3.10"
88
wheel>=0.42.0;python_version<"3.8"
99
wheel>=0.44.0;python_version>="3.8"
1010
attrs>=24.2.0
11-
certifi>=2024.7.4
11+
certifi>=2024.8.30
1212
exceptiongroup>=1.2.2
1313
filelock>=3.12.2;python_version<"3.8"
1414
filelock>=3.15.4;python_version>="3.8"

seleniumbase/__version__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.30.0"
2+
__version__ = "4.30.1"

seleniumbase/console_scripts/ReadMe.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -350,9 +350,10 @@ sbase mkfile new_test.py
350350
351351
* Options:
352352
353+
``--uc`` (UC Mode boilerplate using SB context manager)
353354
`-b` / `--basic` (Basic boilerplate / single-line test)
354-
`-r` / `--rec` (adds Pdb+ breakpoint for Recorder Mode)
355-
``--url=URL`` (makes the test start on a specific page)
355+
`-r` / `--rec` (Adds Pdb+ breakpoint for Recorder Mode)
356+
``--url=URL`` (Makes the test start on a specific page)
356357
357358
* Language Options:
358359
@@ -381,6 +382,7 @@ methods: "open", "type", "click", "assert_element",
381382
and "assert_text". If using the basic boilerplate
382383
option, only the "open" method is included. Only the
383384
BaseCase format supports Languages or Recorder Mode.
385+
UC Mode automatically uses English with SB() format.
384386
385387
<h3>mkrec / record / codegen</h3>
386388

seleniumbase/console_scripts/run.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -264,9 +264,10 @@ def show_mkfile_usage():
264264
print(" Example:")
265265
print(" sbase mkfile new_test.py")
266266
print(" Options:")
267+
print(" --uc (UC Mode boilerplate using SB context manager)")
267268
print(" -b / --basic (Basic boilerplate / single-line test)")
268-
print(" -r / --rec (adds Pdb+ breakpoint for Recorder Mode)")
269-
print(" --url=URL (makes the test start on a specific page)")
269+
print(" -r / --rec (Adds Pdb+ breakpoint for Recorder Mode)")
270+
print(" --url=URL (Makes the test start on a specific page)")
270271
print(" Language Options:")
271272
print(" --en / --English | --zh / --Chinese")
272273
print(" --nl / --Dutch | --fr / --French")
@@ -289,6 +290,7 @@ def show_mkfile_usage():
289290
print(' and "assert_text". If using the basic boilerplate')
290291
print(' option, only the "open" method is included. Only the')
291292
print(" BaseCase format supports Languages or Recorder Mode.")
293+
print(" UC Mode automatically uses English with SB() format.")
292294
print("")
293295

294296

seleniumbase/console_scripts/sb_mkfile.py

+46-13
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
sbase mkfile new_test.py
1010
1111
Options:
12+
--uc (UC Mode boilerplate using SB context manager)
1213
-b / --basic (Basic boilerplate / single-line test)
13-
-r / --rec (adds Pdb+ breakpoint for Recorder Mode)
14-
--url=URL (makes the test start on a specific page)
14+
-r / --rec (Adds Pdb+ breakpoint for Recorder Mode)
15+
--url=URL (Makes the test start on a specific page)
1516
1617
Language Options:
1718
--en / --English | --zh / --Chinese
@@ -37,6 +38,7 @@
3738
and "assert_text". If using the basic boilerplate
3839
option, only the "open" method is included. Only the
3940
BaseCase format supports Languages or Recorder Mode.
41+
UC Mode automatically uses English with SB() format.
4042
"""
4143
import codecs
4244
import colorama
@@ -52,9 +54,10 @@ def invalid_run_command(msg=None):
5254
exp += " Example:\n"
5355
exp += " sbase mkfile new_test.py\n"
5456
exp += " Options:\n"
57+
exp += " --uc (UC Mode boilerplate using SB context manager)\n"
5558
exp += " -b / --basic (Basic boilerplate / single-line test)\n"
56-
exp += " -r / --rec (adds Pdb+ breakpoint for Recorder Mode)\n"
57-
exp += " --url=URL (makes the test start on a specific page)\n"
59+
exp += " -r / --rec (Adds Pdb+ breakpoint for Recorder Mode)\n"
60+
exp += " --url=URL (Makes the test start on a specific page)\n"
5861
exp += " Language Options:\n"
5962
exp += " --en / --English | --zh / --Chinese\n"
6063
exp += " --nl / --Dutch | --fr / --French\n"
@@ -77,6 +80,7 @@ def invalid_run_command(msg=None):
7780
exp += ' and "assert_text". If using the basic boilerplate\n'
7881
exp += ' option, only the "open" method is included. Only the\n'
7982
exp += " BaseCase format supports Languages or Recorder Mode.\n"
83+
exp += " UC Mode automatically uses English with SB() format.\n"
8084
if not msg:
8185
raise Exception("INVALID RUN COMMAND!\n\n%s" % exp)
8286
elif msg == "help":
@@ -105,6 +109,7 @@ def main():
105109
cr = colorama.Style.RESET_ALL
106110

107111
basic = False
112+
use_uc = False
108113
help_me = False
109114
recorder = False
110115
error_msg = None
@@ -152,6 +157,9 @@ def main():
152157
recorder = True
153158
elif option == "--record" or option == "--recorder":
154159
recorder = True
160+
elif use_uc:
161+
# UC must use English & ContextManager formats
162+
continue
155163
elif option == "--en" or option == "--english":
156164
language = "English"
157165
elif option == "--zh" or option == "--chinese":
@@ -184,6 +192,11 @@ def main():
184192
syntax = "DriverContext"
185193
elif option == "--dm" or option == "--driver-manager":
186194
syntax = "DriverManager"
195+
elif option == "--uc":
196+
basic = True
197+
language = "English"
198+
syntax = "ContextManager"
199+
use_uc = True
187200
else:
188201
invalid_cmd = "\n===> INVALID OPTION: >> %s <<\n" % option
189202
invalid_cmd = invalid_cmd.replace(">> ", ">>" + c5 + " ")
@@ -319,16 +332,22 @@ def main():
319332
data = []
320333
data.append("from seleniumbase import SB")
321334
data.append("")
322-
data.append('with SB(browser="chrome") as sb:')
323-
data.append(
324-
' sb.open("data:text/html,<div>Hello<br><input></div>")'
325-
)
335+
if use_uc:
336+
data.append('with SB(uc=True) as sb:')
337+
else:
338+
data.append('with SB(browser="chrome") as sb:')
339+
if use_uc:
340+
data.append(' url = "%s"' % url)
341+
data.append(" sb.uc_open_with_reconnect(url, 4)")
342+
data.append(" sb.uc_gui_click_captcha()")
343+
else:
344+
data.append(' sb.open("%s")' % url)
326345
if not basic:
327346
data.append(' sb.type("input", "Goodbye") # selector, text')
328-
data.append(' sb.click("html body > div") # selector')
347+
data.append(' sb.click("html body > p") # selector')
329348
data.append(' sb.assert_element("input") # selector')
330-
data.append(' sb.assert_text("Hello", "div") # text, selector')
331-
data.append(' sb.highlight("div") # selector')
349+
data.append(' sb.assert_text("Hello", "p") # text, selector')
350+
data.append(' sb.highlight("p") # selector')
332351
data.append(" sb.sleep(0.5) # seconds")
333352
data.append("")
334353
new_data = data
@@ -337,7 +356,14 @@ def main():
337356
data.append("from seleniumbase import DriverContext")
338357
data.append("")
339358
data.append('with DriverContext(browser="chrome") as driver:')
340-
data.append(' driver.get("data:text/html,<p>Hello<br><input>")')
359+
data.append(' driver.get("%s")' % url)
360+
if not basic:
361+
data.append(' driver.type("input", "Goodbye") # sel, text')
362+
data.append(' driver.click("html body > p") # selector')
363+
data.append(' driver.assert_element("input") # selector')
364+
data.append(' driver.assert_text("Hello", "p") # text, sel')
365+
data.append(' driver.highlight("p") # selector')
366+
data.append(" driver.sleep(0.5) # seconds")
341367
data.append("")
342368
new_data = data
343369
elif language == "English" and syntax == "DriverManager":
@@ -346,7 +372,14 @@ def main():
346372
data.append("")
347373
data.append('driver = Driver(browser="chrome")')
348374
data.append("try:")
349-
data.append(' driver.get("data:text/html,<p>Hello<br><input>")')
375+
data.append(' driver.get("%s")' % url)
376+
if not basic:
377+
data.append(' driver.type("input", "Goodbye") # sel, text')
378+
data.append(' driver.click("html body > p") # selector')
379+
data.append(' driver.assert_element("input") # selector')
380+
data.append(' driver.assert_text("Hello", "p") # text, sel')
381+
data.append(' driver.highlight("p") # selector')
382+
data.append(" driver.sleep(0.5) # seconds")
350383
data.append("finally:")
351384
data.append(" driver.quit()")
352385
data.append("")

seleniumbase/core/browser_launcher.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -863,9 +863,9 @@ def _uc_gui_click_captcha(
863863
frame = "%s div[style]" % frame
864864
elif (
865865
driver.is_element_present('[name*="cf-turnstile-"]')
866-
and driver.is_element_present("div.spacer div[style]")
866+
and driver.is_element_present("div.spacer div")
867867
):
868-
frame = "div.spacer div[style]"
868+
frame = "div.spacer div"
869869
elif (
870870
(
871871
driver.is_element_present('[name*="cf-turnstile-"]')
@@ -1099,9 +1099,9 @@ def _uc_gui_handle_captcha(
10991099
frame = '[data-callback="onCaptchaSuccess"]'
11001100
elif (
11011101
driver.is_element_present('[name*="cf-turnstile-"]')
1102-
and driver.is_element_present("div.spacer div[style]")
1102+
and driver.is_element_present("div.spacer div")
11031103
):
1104-
frame = "div.spacer div[style]"
1104+
frame = "div.spacer div"
11051105
elif (
11061106
(
11071107
driver.is_element_present('[name*="cf-turnstile-"]')

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@
156156
'wheel>=0.42.0;python_version<"3.8"',
157157
'wheel>=0.44.0;python_version>="3.8"',
158158
'attrs>=24.2.0',
159-
"certifi>=2024.7.4",
159+
"certifi>=2024.8.30",
160160
"exceptiongroup>=1.2.2",
161161
'filelock>=3.12.2;python_version<"3.8"',
162162
'filelock>=3.15.4;python_version>="3.8"',

0 commit comments

Comments
 (0)