Skip to content

Commit 5f64da2

Browse files
authored
Merge pull request #1974 from seleniumbase/refresh-methods-and-dependencies
Refresh methods, dependencies, settings, and reliability
2 parents 004010d + aba99df commit 5f64da2

31 files changed

+762
-99
lines changed

examples/behave_bdd/ReadMe.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ Feature: SeleniumBase scenarios for the RealWorld App # features/realworld.featu
1616

1717
Scenario: Verify RealWorld App (log in / sign out) # features/realworld.feature:3
1818
Given Open "seleniumbase.io/realworld/login" # ../../sbase/steps.py:10
19-
And Clear Session Storage # ../../sbase/steps.py:613
19+
And Clear Session Storage # ../../sbase/steps.py:669
2020
When Type "demo_user" into "#username" # ../../sbase/steps.py:40
2121
And Type "secret_pass" into "#password" # ../../sbase/steps.py:40
22-
And Do MFA "GAXG2MTEOR3DMMDG" into "#totpcode" # ../../sbase/steps.py:309
22+
And Do MFA "GAXG2MTEOR3DMMDG" into "#totpcode" # ../../sbase/steps.py:322
2323
Then Assert exact text "Welcome!" in "h1" # ../../sbase/steps.py:157
24-
And Highlight "img#image1" # ../../sbase/steps.py:171
24+
And Highlight "img#image1" # ../../sbase/steps.py:184
2525
And Click 'a:contains("This Page")' # ../../sbase/steps.py:27
26-
And Save screenshot to logs # ../../sbase/steps.py:226
27-
When Click link "Sign out" # ../../sbase/steps.py:182
26+
And Save screenshot to logs # ../../sbase/steps.py:239
27+
When Click link "Sign out" # ../../sbase/steps.py:195
2828
Then Assert element 'a:contains("Sign in")' # ../../sbase/steps.py:120
2929
And Assert text "You have been signed out!" # ../../sbase/steps.py:145
3030
✅ Scenario Passed!

examples/test_get_coffee.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"""Use SeleniumBase to get coffee"""
2+
from seleniumbase import BaseCase
3+
BaseCase.main(__name__, __file__)
4+
5+
6+
class GetCoffeeTest(BaseCase):
7+
def test_get_coffee(self):
8+
self.open("https://seleniumbase.io/coffee/")
9+
self.assert_title("Coffee Cart")
10+
self.assert_link_text("cart (0)")
11+
self.assert_element('[data-sb="Mocha"]')
12+
self.click('div[data-sb="Mocha"]')
13+
self.assert_link_text("cart (1)")
14+
self.click_link_text("cart (1)")
15+
self.assert_exact_text("Total: $8.00", ".pay")
16+
self.click("button.pay")
17+
self.type("input#name", "Selenium Coffee")
18+
self.type("input#email", "[email protected]")
19+
self.click("button#submit-payment")
20+
self.assert_text("Thanks", "#app div.success")

examples/uc_cdp_events.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
if __name__ == "__main__":
55
from pytest import main
6-
main([__file__, "--uc", "--uc-cdp", "--incognito", "-s"])
6+
main([__file__, "--uc", "--uc-cdp", "-s"])
77

88

99
class CDPTests(BaseCase):
@@ -23,10 +23,8 @@ def fail_me(self):
2323
self.fail('Selenium was detected! Try using: "pytest --uc"')
2424

2525
def test_display_cdp_events(self):
26-
if not (self.undetectable and self.uc_cdp_events and self.incognito):
27-
self.get_new_driver(
28-
undetectable=True, uc_cdp_events=True, incognito=True
29-
)
26+
if not (self.undetectable and self.uc_cdp_events):
27+
self.get_new_driver(undetectable=True, uc_cdp_events=True)
3028
self.open("https://nowsecure.nl/#relax")
3129
try:
3230
self.verify_success()

help_docs/method_summary.md

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ self.is_text_visible(text, selector="html", by="css selector")
8383

8484
self.is_exact_text_visible(text, selector="html", by="css selector")
8585

86+
self.is_non_empty_text_visible(selector="html", by="css selector")
87+
8688
self.is_attribute_present(selector, attribute, value=None, by="css selector")
8789

8890
self.is_link_text_visible(link_text)
@@ -109,12 +111,9 @@ self.click_partial_link(partial_link_text, timeout=None)
109111

110112
self.get_text(selector, by="css selector", timeout=None)
111113

112-
self.get_attribute(
113-
selector, attribute, by="css selector",
114-
timeout=None, hard_fail=True)
114+
self.get_attribute(selector, attribute, by="css selector", timeout=None, hard_fail=True)
115115

116-
self.set_attribute(
117-
selector, attribute, value, by="css selector", timeout=None, scroll=False)
116+
self.set_attribute(selector, attribute, value, by="css selector", timeout=None, scroll=False)
118117

119118
self.set_attributes(selector, attribute, value, by="css selector")
120119
# Duplicates:
@@ -190,23 +189,16 @@ self.drag_and_drop_with_offset(
190189
selector, x, y, by="css selector", timeout=None)
191190

192191
self.select_option_by_text(
193-
dropdown_selector, option,
194-
dropdown_by="css selector",
195-
timeout=None)
192+
dropdown_selector, option, dropdown_by="css selector", timeout=None)
196193

197194
self.select_option_by_index(
198-
dropdown_selector, option,
199-
dropdown_by="css selector",
200-
timeout=None)
195+
dropdown_selector, option, dropdown_by="css selector", timeout=None)
201196

202197
self.select_option_by_value(
203-
dropdown_selector, option,
204-
dropdown_by="css selector",
205-
timeout=None)
198+
dropdown_selector, option, dropdown_by="css selector", timeout=None)
206199

207200
self.get_select_options(
208-
dropdown_selector, attribute="text",
209-
by="css selector", timeout=None)
201+
dropdown_selector, attribute="text", by="css selector", timeout=None)
210202

211203
self.load_html_string(html_string, new_page=True)
212204

@@ -269,22 +261,28 @@ self.get_new_driver(
269261
proxy=None,
270262
proxy_bypass_list=None,
271263
proxy_pac_url=None,
264+
multi_proxy=None,
272265
agent=None,
273266
switch_to=True,
274267
cap_file=None,
275268
cap_string=None,
276269
recorder_ext=None,
270+
disable_js=None,
277271
disable_csp=None,
278272
enable_ws=None,
279273
enable_sync=None,
280274
use_auto_ext=None,
281275
undetectable=None,
276+
uc_cdp_events=None,
277+
uc_subprocess=None,
282278
no_sandbox=None,
283279
disable_gpu=None,
280+
headless2=None,
284281
incognito=None,
285282
guest_mode=None,
286283
devtools=None,
287284
remote_debug=None,
285+
enable_3d_apis=None,
288286
swiftshader=None,
289287
ad_block_on=None,
290288
block_images=None,
@@ -295,7 +293,9 @@ self.get_new_driver(
295293
user_data_dir=None,
296294
extension_zip=None,
297295
extension_dir=None,
296+
binary_location=None,
298297
page_load_strategy=None,
298+
use_wire=None,
299299
external_pdf=None,
300300
is_mobile=None,
301301
d_width=None,
@@ -442,8 +442,7 @@ self.create_folder(folder)
442442

443443
self.choose_file(selector, file_path, by="css selector", timeout=None)
444444

445-
self.save_element_as_image_file(
446-
selector, file_name, folder=None, overlay_text="")
445+
self.save_element_as_image_file(selector, file_name, folder=None, overlay_text="")
447446

448447
self.download_file(file_url, destination_folder=None)
449448

@@ -482,11 +481,9 @@ self.assert_not_in(first, second, msg=None)
482481

483482
self.assert_raises(*args, **kwargs)
484483

485-
self.wait_for_attribute(
486-
selector, attribute, value=None, by="css selector", timeout=None)
484+
self.wait_for_attribute(selector, attribute, value=None, by="css selector", timeout=None)
487485

488-
self.assert_attribute(
489-
selector, attribute, value=None, by="css selector", timeout=None)
486+
self.assert_attribute(selector, attribute, value=None, by="css selector", timeout=None)
490487

491488
self.assert_title(title)
492489

@@ -537,8 +534,7 @@ self.js_update_text(selector, text, by="css selector", timeout=None)
537534
# self.js_type(selector, text, by="css selector", timeout=None)
538535
# self.set_text(selector, text, by="css selector", timeout=None)
539536

540-
self.set_text_content(
541-
selector, text, by="css selector", timeout=None, scroll=False)
537+
self.set_text_content(selector, text, by="css selector", timeout=None, scroll=False)
542538

543539
self.jquery_update_text(selector, text, by="css selector", timeout=None)
544540
# Duplicates:
@@ -676,8 +672,7 @@ self.create_introjs_tour(name=None)
676672
self.set_introjs_colors(theme_color=None, hover_color=None)
677673

678674
self.add_tour_step(
679-
message, selector=None, name=None,
680-
title=None, theme=None, alignment=None)
675+
message, selector=None, name=None, title=None, theme=None, alignment=None)
681676

682677
self.play_tour(name=None, interval=0)
683678
# Duplicates:
@@ -763,6 +758,11 @@ self.find_exact_text(text, selector="html", by="css selector", timeout=None)
763758
# self.wait_for_exact_text(text, selector="html", by="css selector", timeout=None)
764759
# self.wait_for_exact_text_visible(text, selector="html", by="css selector", timeout=None)
765760

761+
self.find_non_empty_text(selector="html", by="css selector", timeout=None)
762+
# Duplicates:
763+
# self.wait_for_non_empty_text(selector="html", by="css selector", timeout=None)
764+
# self.wait_for_non_empty_text_visible(selector="html", by="css selector", timeout=None)
765+
766766
self.assert_text(text, selector="html", by="css selector", timeout=None)
767767
# Duplicates:
768768
# self.assert_text_visible(text, selector="html", by="css selector", timeout=None)
@@ -781,6 +781,8 @@ self.find_link_text(link_text, timeout=None)
781781
# self.wait_for_link_text_visible(link_text, timeout=None)
782782

783783
self.assert_link_text(link_text, timeout=None)
784+
# Duplicates:
785+
# self.assert_link(link_text, timeout=None)
784786

785787
############
786788

@@ -820,6 +822,8 @@ self.assert_text_not_visible(text, selector="html", by="css selector", timeout=N
820822

821823
self.assert_exact_text_not_visible(text, selector="html", by="css selector", timeout=None)
822824

825+
self.assert_non_empty_text(selector="html", by="css selector", timeout=None)
826+
823827
############
824828

825829
self.wait_for_attribute_not_present(
@@ -877,9 +881,14 @@ self.deferred_assert_exact_text(
877881
# self.delayed_assert_exact_text(
878882
# text, selector="html", by="css selector", timeout=None, fs=False)
879883

884+
self.deferred_assert_non_empty_text(
885+
selector="html", by="css selector", timeout=None, fs=False)
886+
# Duplicates:
887+
# self.delayed_assert_non_empty_text(
888+
# selector="html", by="css selector", timeout=None, fs=False)
889+
880890
self.deferred_check_window(
881-
name="default", level=0, baseline=False,
882-
check_domain=True, full_diff=False, fs=False)
891+
name="default", level=0, baseline=False, check_domain=True, full_diff=False, fs=False)
883892
# Duplicates:
884893
# self.delayed_check_window(
885894
# name="default", level=0, baseline=False,

integrations/behave/ReadMe.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ Feature: SeleniumBase scenarios for the RealWorld App # features/realworld.featu
1414

1515
Scenario: Verify RealWorld App (log in / sign out) # features/realworld.feature:3
1616
Given Open "seleniumbase.io/realworld/login" # ../../sbase/steps.py:10
17-
And Clear Session Storage # ../../sbase/steps.py:613
17+
And Clear Session Storage # ../../sbase/steps.py:669
1818
When Type "demo_user" into "#username" # ../../sbase/steps.py:40
1919
And Type "secret_pass" into "#password" # ../../sbase/steps.py:40
20-
And Do MFA "GAXG2MTEOR3DMMDG" into "#totpcode" # ../../sbase/steps.py:309
20+
And Do MFA "GAXG2MTEOR3DMMDG" into "#totpcode" # ../../sbase/steps.py:322
2121
Then Assert exact text "Welcome!" in "h1" # ../../sbase/steps.py:157
22-
And Highlight "img#image1" # ../../sbase/steps.py:171
22+
And Highlight "img#image1" # ../../sbase/steps.py:184
2323
And Click 'a:contains("This Page")' # ../../sbase/steps.py:27
24-
And Save screenshot to logs # ../../sbase/steps.py:226
25-
When Click link "Sign out" # ../../sbase/steps.py:182
24+
And Save screenshot to logs # ../../sbase/steps.py:239
25+
When Click link "Sign out" # ../../sbase/steps.py:195
2626
Then Assert element 'a:contains("Sign in")' # ../../sbase/steps.py:120
2727
And Assert text "You have been signed out!" # ../../sbase/steps.py:145
2828
✅ Scenario Passed!
File renamed without changes.

mkdocs_build/requirements.txt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ PyYAML>=6.0.1
77
readme-renderer>=40.0
88
pymdown-extensions>=10.1
99
importlib-metadata>=6.8.0
10-
pipdeptree>=2.10.2
10+
pipdeptree>=2.12.0
1111
bleach>=6.0.0
1212
docutils>=0.20.1
1313
python-dateutil>=2.8.2
1414
livereload==2.6.3
1515
joblib==1.3.1
16-
Markdown==3.3.7
16+
Markdown==3.4.4
1717
MarkupSafe==2.1.3
1818
Jinja2==3.1.2
1919
click==8.1.6
@@ -22,13 +22,14 @@ lunr==0.6.2
2222
nltk==3.8.1
2323
tornado==6.3.2
2424
watchdog==3.0.0
25-
cairocffi==1.6.0
25+
cairocffi==1.6.1
2626
cairosvg==2.7.0
2727
cssselect2==0.7.0
2828
tinycss2==1.2.1
2929
defusedxml==0.7.1
30-
mkdocs==1.4.3
31-
mkdocs-material==9.1.19
30+
pathspec==0.11.2
31+
mkdocs==1.5.1
32+
mkdocs-material==9.1.21
3233
mkdocs-exclude-search==0.6.5
3334
mkdocs-simple-hooks==0.1.5
3435
mkdocs-material-extensions==1.1.1

requirements.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
pip>=21.3.1;python_version<"3.7"
2-
pip>=23.2;python_version>="3.7"
2+
pip>=23.2.1;python_version>="3.7"
33
packaging>=21.3;python_version<"3.7"
44
packaging>=23.1;python_version>="3.7"
55
setuptools>=59.6.0;python_version<"3.7"
66
setuptools>=68.0.0;python_version>="3.7"
77
wheel>=0.37.1;python_version<"3.7"
8-
wheel>=0.40.0;python_version>="3.7"
8+
wheel>=0.41.0;python_version>="3.7"
99
attrs==22.1.0;python_version<"3.7"
1010
attrs>=23.1.0;python_version>="3.7"
11-
certifi>=2023.5.7
11+
certifi>=2023.7.22
1212
filelock>=3.4.1;python_version<"3.7"
1313
filelock>=3.12.2;python_version>="3.7"
1414
platformdirs>=2.4.0;python_version<"3.7"
15-
platformdirs>=3.9.1;python_version>="3.7"
15+
platformdirs>=3.10.0;python_version>="3.7"
1616
parse>=1.19.1
1717
parse-type>=0.6.2
1818
six==1.16.0
@@ -26,7 +26,7 @@ urllib3>=1.26.16,<2;python_version>="3.7" and python_version<"3.10"
2626
urllib3>=1.26.16,<2.1.0;python_version>="3.10"
2727
requests==2.27.1;python_version<"3.7"
2828
requests==2.31.0;python_version>="3.7"
29-
pynose==1.4.6
29+
pynose==1.4.7
3030
sniffio==1.3.0;python_version>="3.7"
3131
h11==0.14.0;python_version>="3.7"
3232
outcome==1.2.0;python_version>="3.7"
@@ -77,13 +77,13 @@ exceptiongroup==1.1.2;python_version>="3.7"
7777
future-breakpoint==2.0.0;python_version<"3.7"
7878
importlib-metadata==4.2.0;python_version<"3.8"
7979
pyotp==2.7.0;python_version<"3.7"
80-
pyotp==2.8.0;python_version>="3.7"
80+
pyotp==2.9.0;python_version>="3.7"
8181
typing-extensions==4.1.1;python_version<"3.7"
8282
commonmark==0.9.1;python_version<"3.7"
8383
markdown-it-py==3.0.0;python_version>="3.8"
8484
mdurl==0.1.2;python_version>="3.7"
8585
rich==12.6.0;python_version<"3.7"
86-
rich==13.4.2;python_version>="3.7"
86+
rich==13.5.0;python_version>="3.7"
8787

8888
# --- Testing Requirements --- #
8989
# ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
@@ -93,9 +93,9 @@ coverage==7.2.7;python_version>="3.7"
9393
pytest-cov==4.0.0;python_version<"3.7"
9494
pytest-cov==4.1.0;python_version>="3.7"
9595
flake8==5.0.4;python_version<"3.9"
96-
flake8==6.0.0;python_version>="3.9"
96+
flake8==6.1.0;python_version>="3.9"
9797
mccabe==0.7.0
9898
pyflakes==2.5.0;python_version<"3.9"
99-
pyflakes==3.0.1;python_version>="3.9"
99+
pyflakes==3.1.0;python_version>="3.9"
100100
pycodestyle==2.9.1;python_version<"3.9"
101-
pycodestyle==2.10.0;python_version>="3.9"
101+
pycodestyle==2.11.0;python_version>="3.9"

0 commit comments

Comments
 (0)