Skip to content

Commit bdaea12

Browse files
authored
Merge pull request #1522 from seleniumbase/new-methods-and-refactoring
New methods and refactoring
2 parents 88d7ff6 + 61e7b73 commit bdaea12

18 files changed

+300
-89
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta property="og:image" content="https://seleniumbase.github.io/cdn/img/mac_sb_logo_5b.png" />
66
<link rel="icon" href="https://seleniumbase.github.io/img/green_logo2.png" />
77

8-
<p align="center"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/mac_sb_logo_bg2.png" alt="SeleniumBase" title="SeleniumBase" width="408" /></a></p>
8+
<p align="center"><a href="https://github.com/seleniumbase/SeleniumBase/"><img src="https://seleniumbase.github.io/cdn/img/mac_sb_logo_bw.png" alt="SeleniumBase" title="SeleniumBase" width="408" /></a></p>
99

1010
<p align="center"><b>A framework for web automation and testing with <a href="https://www.python.org/about/" target="_blank">Python</a>.</b><br />SeleniumBase extends <a href="https://www.selenium.dev/documentation/webdriver/" target="_blank">Selenium WebDriver</a> as a <a href="https://docs.pytest.org/en/latest/how-to/usage.html" target="_blank">pytest</a> plugin.</p>
1111

examples/raw_parameter_script.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
sb.variables = {}
4848
sb.account = None
4949
sb.environment = "test"
50+
sb.env = "test" # should match sb.environment
5051
sb.user_agent = None
5152
sb.incognito = False
5253
sb.guest_mode = False
@@ -56,7 +57,7 @@
5657
sb.extension_zip = None
5758
sb.extension_dir = None
5859
sb.database_env = "test"
59-
sb.log_path = "latest_logs/"
60+
sb.log_path = "latest_logs"
6061
sb.archive_logs = False
6162
sb.disable_csp = False
6263
sb.disable_ws = False

examples/swag_labs_suite.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,8 @@ def tearDown(self):
8181
self.save_teardown_screenshot()
8282
# Reset App State and Logout if the controls are present
8383
try:
84-
if self.is_element_present("a#reset_sidebar_link"):
85-
self.js_click("a#reset_sidebar_link")
86-
if self.is_element_present("a#logout_sidebar_link"):
87-
self.js_click("a#logout_sidebar_link")
84+
self.js_click_if_present("a#reset_sidebar_link")
85+
self.js_click_if_present("a#logout_sidebar_link")
8886
except Exception:
8987
pass
9088
super(SwagLabsTests, self).tearDown()

examples/test_image_saving.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ def test_1_save_element_as_image_file(self):
2626
file_name = "comic.png"
2727
folder = "images_exported"
2828
self.save_element_as_image_file(selector, file_name, folder)
29-
self.assert_true(os.path.exists("%s/%s" % (folder, file_name)))
30-
print('\n"%s/%s" was saved!' % (folder, file_name))
29+
file_path = os.path.join(folder, file_name)
30+
self.assert_true(os.path.exists(file_path))
31+
print('\n"%s" was saved!' % file_path)
3132

3233
# @pytest.mark.run(order=2)
3334
def test_2_add_text_overlay_to_image(self):
@@ -40,8 +41,9 @@ def test_2_add_text_overlay_to_image(self):
4041
self.save_element_as_image_file(
4142
selector, file_name, folder, overlay_text
4243
)
43-
self.assert_true(os.path.exists("%s/%s" % (folder, file_name)))
44-
print('\n"%s/%s" was saved!' % (folder, file_name))
44+
file_path = os.path.join(folder, file_name)
45+
self.assert_true(os.path.exists(file_path))
46+
print('\n"%s" was saved!' % file_path)
4547

4648
# @pytest.mark.run(order=3)
4749
def test_3_add_text_overlay_to_page_section(self):
@@ -59,8 +61,9 @@ def test_3_add_text_overlay_to_page_section(self):
5961
self.save_element_as_image_file(
6062
selector, file_name, folder, overlay_text
6163
)
62-
self.assert_true(os.path.exists("%s/%s" % (folder, file_name)))
63-
print('\n"%s/%s" was saved!' % (folder, file_name))
64+
file_path = os.path.join(folder, file_name)
65+
self.assert_true(os.path.exists(file_path))
66+
print('\n"%s" was saved!' % file_path)
6467

6568
# @pytest.mark.run(order=4)
6669
def test_4_add_text_overlay_to_full_page(self):
@@ -74,5 +77,6 @@ def test_4_add_text_overlay_to_full_page(self):
7477
self.save_element_as_image_file(
7578
selector, file_name, folder, overlay_text
7679
)
77-
self.assert_true(os.path.exists("%s/%s" % (folder, file_name)))
78-
print('\n"%s/%s" was saved!' % (folder, file_name))
80+
file_path = os.path.join(folder, file_name)
81+
self.assert_true(os.path.exists(file_path))
82+
print('\n"%s" was saved!' % file_path)

examples/test_swag_labs.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,8 @@ def tearDown(self):
6969
self.save_teardown_screenshot()
7070
# Reset App State and Logout if the controls are present
7171
try:
72-
if self.is_element_present("a#reset_sidebar_link"):
73-
self.js_click("a#reset_sidebar_link")
74-
if self.is_element_present("a#logout_sidebar_link"):
75-
self.js_click("a#logout_sidebar_link")
72+
self.js_click_if_present("a#reset_sidebar_link")
73+
self.js_click_if_present("a#logout_sidebar_link")
7674
except Exception:
7775
pass
7876
super(SwagLabsTests, self).tearDown()

help_docs/method_summary.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,10 @@ self.click_xpath(xpath)
356356

357357
self.js_click(selector, by="css selector", all_matches=False, scroll=True)
358358

359+
self.js_click_if_present(selector, by="css selector")
360+
361+
self.js_click_if_visible(selector, by="css selector")
362+
359363
self.js_click_all(selector, by="css selector")
360364

361365
self.jquery_click(selector, by="css selector")
@@ -454,6 +458,8 @@ self.assert_attribute(
454458

455459
self.assert_title(title)
456460

461+
self.assert_title_contains(substring)
462+
457463
self.assert_no_js_errors()
458464

459465
self.inspect_html()

sbase/steps.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,3 +604,11 @@ def assert_text_not_visible(context, text):
604604
sb = context.sb
605605
text = normalize_text(text)
606606
sb.assert_text_not_visible(text)
607+
608+
609+
@step("Assert title contains '{substring}'")
610+
@step('Assert title contains "{substring}"')
611+
def assert_title_contains(context, substring):
612+
sb = context.sb
613+
substring = normalize_text(substring)
614+
sb.assert_title_contains(substring)

seleniumbase/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@
2020
del sys # Undo "import sys" / Simplify "dir(seleniumbase)"
2121
del webdriver # Undo "import webdriver" / Simplify "dir(seleniumbase)"
2222

23-
version_info = [int(i) for i in __version__.split(".") if i.isdigit()]
24-
version_tuple = tuple(version_info) # noqa
23+
version_list = [int(i) for i in __version__.split(".") if i.isdigit()]
24+
version_tuple = tuple(version_list)
25+
version_info = version_tuple # noqa

seleniumbase/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.4.2"
2+
__version__ = "4.4.3"

seleniumbase/behave/behave_helper.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,12 @@ def generate_gherkin(srt_actions):
244244
sb_actions.append('%s "%s"' % (method, action[1]))
245245
else:
246246
sb_actions.append("%s '%s'" % (method, action[1]))
247+
elif action[0] == "as_tc":
248+
method = "Assert title contains"
249+
if '"' not in action[1]:
250+
sb_actions.append('%s "%s"' % (method, action[1]))
251+
else:
252+
sb_actions.append("%s '%s'" % (method, action[1]))
247253
elif action[0] == "as_df":
248254
method = "Assert downloaded file"
249255
if '"' not in action[1]:

0 commit comments

Comments
 (0)