Skip to content

Commit 74666b8

Browse files
authored
Merge pull request #2091 from seleniumbase/refactor-the-extended-driver
Refactor extended `driver` instances
2 parents 9cf8f52 + 1af01d3 commit 74666b8

File tree

4 files changed

+69
-5
lines changed

4 files changed

+69
-5
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import os
2+
import pytest
3+
from seleniumbase import BaseCase
4+
BaseCase.main(__name__, __file__)
5+
6+
7+
@pytest.mark.offline # Can be run with: "pytest -m offline"
8+
class OfflineTests(BaseCase):
9+
def test_extended_driver(self):
10+
# Load a local html file into the web browser
11+
dir_path = os.path.dirname(os.path.abspath(__file__))
12+
file_path = os.path.join(dir_path, "demo_page.html")
13+
self.load_html_file(file_path)
14+
15+
# Get the raw driver
16+
driver = self.driver
17+
18+
# Assert that an element is visible on the page
19+
driver.assert_element("tbody#tbodyId")
20+
21+
# Assert that a text substring appears in an element
22+
driver.assert_text("Demo Page", "h1")
23+
24+
# Type text into various text fields and then assert
25+
driver.type("#myTextInput", "This is Automated")
26+
driver.type("textarea.area1", "Testing Time!\n")
27+
driver.type('[name="preText2"]', "Typing Text!")
28+
driver.assert_text("This is Automated", "#myTextInput")
29+
driver.assert_text("Testing Time!\n", "textarea.area1")
30+
driver.assert_text("Typing Text!", '[name="preText2"]')
31+
32+
# Hover & click a dropdown element and assert results
33+
driver.assert_text("Automation Practice", "h3")
34+
driver.js_click("#dropOption2")
35+
driver.assert_text("Link Two Selected", "h3")
36+
37+
# Click a button and then verify the expected results
38+
driver.assert_text("This Text is Green", "#pText")
39+
driver.click('button:contains("Click Me")')
40+
driver.assert_text("This Text is Purple", "#pText")
41+
42+
# Assert that the given SVG is visible on the page
43+
driver.assert_element('svg[name="svgName"]')
44+
45+
# Assert an element located inside an iframe
46+
self.assert_false(driver.is_element_visible("img"))
47+
driver.switch_to.frame("myFrame1")
48+
self.assert_true(driver.is_element_visible("img"))
49+
driver.switch_to.default_content()
50+
51+
# Assert text located inside an iframe
52+
self.assert_false(driver.is_text_visible("iFrame Text"))
53+
driver.switch_to.frame("myFrame2")
54+
self.assert_true(driver.is_text_visible("iFrame Text"))
55+
driver.switch_to.default_content()
56+
57+
# Assert exact text
58+
driver.assert_exact_text("Demo Page", "h1")
59+
60+
# Highlight a page element (Also asserts visibility)
61+
driver.highlight("h2")

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.18.3"
2+
__version__ = "4.18.4"

seleniumbase/core/browser_launcher.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ def extend_driver(driver):
161161
driver.get_origin = DM.get_origin
162162
driver.get_user_agent = DM.get_user_agent
163163
driver.highlight = DM.highlight
164+
driver.sleep = time.sleep
164165
return driver
165166

166167

seleniumbase/fixtures/page_actions.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,15 @@ def is_element_enabled(driver, selector, by="css selector"):
107107
return False
108108

109109

110-
def is_text_visible(driver, text, selector, by="css selector", browser=None):
110+
def is_text_visible(
111+
driver, text, selector="html", by="css selector", browser=None
112+
):
111113
"""
112114
Returns whether the text substring is visible in the given selector.
113115
@Params
114116
driver - the webdriver object (required)
115117
text - the text string to search for (required)
116-
selector - the locator for identifying the page element (required)
118+
selector - the locator for identifying the page element
117119
by - the type of selector being used (Default: "css selector")
118120
@Returns
119121
Boolean (is text visible)
@@ -1640,7 +1642,7 @@ def assert_text(
16401642
):
16411643
browser = driver.capabilities["browserName"].lower()
16421644
wait_for_text_visible(
1643-
driver, text, selector, by=by, timeout=timeout, browser=browser
1645+
driver, text.strip(), selector, by=by, timeout=timeout, browser=browser
16441646
)
16451647

16461648

@@ -1649,7 +1651,7 @@ def assert_exact_text(
16491651
):
16501652
browser = driver.capabilities["browserName"].lower()
16511653
wait_for_exact_text_visible(
1652-
driver, text, selector, by=by, timeout=timeout, browser=browser
1654+
driver, text.strip(), selector, by=by, timeout=timeout, browser=browser
16531655
)
16541656

16551657

0 commit comments

Comments
 (0)