Skip to content

Commit 6cbaaf3

Browse files
authored
Merge pull request #1187 from seleniumbase/improve-logging-and-shadow-dom-support-3
Improve Logging, Shadow DOM support, and more
2 parents d03a64c + 7a3158d commit 6cbaaf3

File tree

16 files changed

+308
-116
lines changed

16 files changed

+308
-116
lines changed

.github/workflows/python-package.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ jobs:
1414
runs-on: ubuntu-18.04
1515
strategy:
1616
fail-fast: false
17-
max-parallel: 7
17+
max-parallel: 6
1818
matrix:
19-
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10"]
19+
python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10"]
2020

2121
steps:
2222
- uses: actions/checkout@v1

azure-pipelines.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ jobs:
1111
vmImage: 'Ubuntu-20.04'
1212
strategy:
1313
matrix:
14-
Python3_5:
15-
python.version: '3.5'
1614
Python3_6:
1715
python.version: '3.6'
1816
Python3_7:
@@ -21,6 +19,8 @@ jobs:
2119
python.version: '3.8'
2220
Python3_9:
2321
python.version: '3.9'
22+
Python3_10:
23+
python.version: '3.10'
2424
maxParallel: 5
2525

2626
steps:

examples/dialog_boxes/dialog_box_tour.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def test_dialog_boxes(self):
7272
message = "<b>This is the SeleniumBase Docs website!</b><br /><br />"
7373
message += "What would you like to search for?<br />"
7474
text = self.get_jqc_text_input(message, ["Search"])
75-
self.update_text('input[aria-label="Search"]', text + "\n")
75+
self.type('input[aria-label="Search"]', text + "\n")
7676
self.wait_for_ready_state_complete()
7777
self.set_jqc_theme("bootstrap", color="red", width="32%")
7878
if self.is_text_visible("No matching documents", ".md-search-result"):
@@ -103,7 +103,7 @@ def test_dialog_boxes(self):
103103
self.open("https://store.xkcd.com/search")
104104
else:
105105
self.open("https://en.wikipedia.org/wiki/Special:Search")
106-
self.highlight_update_text('input[id*="search"]', text + "\n")
106+
self.highlight_type('input[id*="search"]', text + "\n")
107107
self.wait_for_ready_state_complete()
108108
self.sleep(1)
109109
self.highlight("body")

examples/raw_browser_launcher.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"""
2+
This script can be run with pure "python". (pytest not needed).
3+
"get_driver()" is from [seleniumbase/core/browser_launcher.py].
4+
"""
5+
from seleniumbase import get_driver
6+
from seleniumbase import js_utils
7+
from seleniumbase import page_actions
8+
9+
success = False
10+
try:
11+
driver = get_driver("chrome", headless=False)
12+
driver.get('data:text/html,<h1 class="top">Data URL</h2>')
13+
source = driver.page_source
14+
assert "Data URL" in source
15+
# An example of "is_element_visible()" from "page_actions"
16+
assert page_actions.is_element_visible(driver, "h1.top")
17+
# Extra fun with Javascript
18+
js_utils.highlight_with_js(driver, "h1.top", 8, "")
19+
success = True # No errors
20+
finally:
21+
driver.quit()
22+
assert success

examples/setup.cfg

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
[flake8]
2-
# W503,W504 (line break before or after binary operators)
2+
# W503 (line break before binary operator) can be ignored.
33
exclude=recordings,temp
4-
ignore=W503,W504
4+
ignore=W503
55

66
[nosetests]
7-
# nocapture=1 displays print statements from output. Undo this by using: --nologcapture
8-
# logging-level=INFO keeps the logs much cleaner than using DEBUG
7+
# nocapture=1 (Display print statements from output)
8+
# (Undo this by using: "--nologcapture")
9+
# logging-level=INFO (Shorter logs than using DEBUG)
910
nocapture=1
1011
logging-level=INFO
1112

examples/unit_tests/verify_framework.py

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def test_failing(self):
1616
self.assert_equal('yes', 'no')
1717
"""
1818
)
19-
result = testdir.inline_run("--headless", "--rs")
19+
result = testdir.inline_run("--headless", "--rs", "-v")
2020
assert result.matchreport("test_passing").passed
2121
assert result.matchreport("test_failing").skipped
2222

@@ -34,10 +34,29 @@ def test_basecase(self):
3434
self.click("body p") # selector
3535
"""
3636
)
37-
result = testdir.inline_run("--headless")
37+
result = testdir.inline_run("--headless", "-v")
3838
assert result.matchreport("test_basecase").passed
3939

4040

41+
def test_run_with_dashboard(testdir):
42+
testdir.makepyfile(
43+
"""
44+
from seleniumbase import BaseCase
45+
class MyTestCase(BaseCase):
46+
def test_1_passing(self):
47+
self.assert_equal('yes', 'yes')
48+
def test_2_failing(self):
49+
self.assert_equal('yes', 'no')
50+
def test_3_skipped(self):
51+
self.skip("Skip!")
52+
"""
53+
)
54+
result = testdir.inline_run("--headless", "--rs", "--dashboard", "-v")
55+
assert result.matchreport("test_1_passing").passed
56+
assert result.matchreport("test_2_failing").failed
57+
assert result.matchreport("test_3_skipped").skipped
58+
59+
4160
def test_sb_fixture(testdir):
4261
testdir.makepyfile(
4362
"""
@@ -49,7 +68,7 @@ def test_sb_fixture(sb):
4968
sb.click("body p") # selector
5069
"""
5170
)
52-
result = testdir.inline_run("--headless")
71+
result = testdir.inline_run("--headless", "-v")
5372
assert result.matchreport("test_sb_fixture").passed
5473

5574

@@ -66,5 +85,51 @@ def test_request_sb_fixture(request):
6685
sb.tearDown()
6786
"""
6887
)
69-
result = testdir.inline_run("--headless")
88+
result = testdir.inline_run("--headless", "-v")
7089
assert result.matchreport("test_request_sb_fixture").passed
90+
91+
92+
def test_browser_launcher(testdir):
93+
testdir.makepyfile(
94+
"""
95+
from seleniumbase import get_driver
96+
def test_browser_launcher():
97+
success = False
98+
try:
99+
driver = get_driver("chrome", headless=True)
100+
driver.get("data:text/html,<p>Data URL</p>")
101+
source = driver.page_source
102+
assert "Data URL" in source
103+
success = True # No errors
104+
finally:
105+
driver.quit()
106+
assert success
107+
"""
108+
)
109+
result = testdir.inline_run("--headless", "-v")
110+
assert result.matchreport("test_browser_launcher").passed
111+
112+
113+
def test_framework_components(testdir):
114+
testdir.makepyfile(
115+
"""
116+
from seleniumbase import get_driver
117+
from seleniumbase import js_utils
118+
from seleniumbase import page_actions
119+
def test_framework_components():
120+
success = False
121+
try:
122+
driver = get_driver("chrome", headless=True)
123+
driver.get('data:text/html,<h1 class="top">Data URL</h2>')
124+
source = driver.page_source
125+
assert "Data URL" in source
126+
assert page_actions.is_element_visible(driver, "h1.top")
127+
js_utils.highlight_with_js(driver, "h1.top", 2, "")
128+
success = True # No errors
129+
finally:
130+
driver.quit()
131+
assert success
132+
"""
133+
)
134+
result = testdir.inline_run("--headless", "-v")
135+
assert result.matchreport("test_framework_components").passed

examples/wordle_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ def skip_if_incorrect_env(self):
5555
print(message)
5656
self.skip(message)
5757
version = [int(i) for i in __version__.split(".") if i.isdigit()]
58-
if version < [2, 4, 2]:
59-
message = "This test requires SeleniumBase 2.4.2 or newer!"
58+
if version < [2, 4, 3]:
59+
message = "This test requires SeleniumBase 2.4.3 or newer!"
6060
print(message)
6161
self.skip(message)
6262

help_docs/method_summary.md

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -218,15 +218,44 @@ self.switch_to_newest_window()
218218
# Duplicates: self.switch_to_newest_tab()
219219

220220
self.get_new_driver(
221-
browser=None, headless=None, locale_code=None, protocol=None,
222-
servername=None, port=None, proxy=None, agent=None, switch_to=True,
223-
cap_file=None, cap_string=None, disable_csp=None, enable_ws=None,
224-
enable_sync=None, use_auto_ext=None, no_sandbox=None, disable_gpu=None,
225-
incognito=None, guest_mode=None, devtools=None, remote_debug=None,
226-
swiftshader=None, block_images=None,
227-
chromium_arg=None, firefox_arg=None, firefox_pref=None,
228-
user_data_dir=None, extension_zip=None, extension_dir=None,
229-
is_mobile=None, d_width=None, d_height=None, d_p_r=None)
221+
browser=None,
222+
headless=None,
223+
locale_code=None,
224+
protocol=None,
225+
servername=None,
226+
port=None,
227+
proxy=None,
228+
proxy_bypass_list=None,
229+
agent=None,
230+
switch_to=True,
231+
cap_file=None,
232+
cap_string=None,
233+
recorder_ext=None,
234+
disable_csp=None,
235+
enable_ws=None,
236+
enable_sync=None,
237+
use_auto_ext=None,
238+
no_sandbox=None,
239+
disable_gpu=None,
240+
incognito=None,
241+
guest_mode=None,
242+
devtools=None,
243+
remote_debug=None,
244+
swiftshader=None,
245+
ad_block_on=None,
246+
block_images=None,
247+
chromium_arg=None,
248+
firefox_arg=None,
249+
firefox_pref=None,
250+
user_data_dir=None,
251+
extension_zip=None,
252+
extension_dir=None,
253+
external_pdf=None,
254+
is_mobile=None,
255+
d_width=None,
256+
d_height=None,
257+
d_p_r=None,
258+
)
230259

231260
self.switch_to_driver(driver)
232261

@@ -275,8 +304,9 @@ self.bring_to_front(selector, by=By.CSS_SELECTOR)
275304

276305
self.highlight_click(selector, by=By.CSS_SELECTOR, loops=3, scroll=True)
277306

278-
self.highlight_update_text(
279-
selector, text, by=By.CSS_SELECTOR, loops=3, scroll=True)
307+
self.highlight_type(selector, text, by=By.CSS_SELECTOR, loops=3, scroll=True)
308+
# Duplicates:
309+
# self.highlight_update_text(selector, text, by=By.CSS_SELECTOR, loops=3, scroll=True)
280310

281311
self.highlight(selector, by=By.CSS_SELECTOR, loops=4, scroll=True)
282312

@@ -584,8 +614,7 @@ self.post_success_message(message, duration=None, pause=True)
584614

585615
self.post_error_message(message, duration=None, pause=True)
586616

587-
self.set_messenger_theme(theme="default", location="default",
588-
max_messages="default")
617+
self.set_messenger_theme(theme="default", location="default", max_messages="default")
589618

590619
############
591620

seleniumbase/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from seleniumbase.__version__ import __version__ # noqa
22
from seleniumbase.core.browser_launcher import get_driver # noqa
3+
from seleniumbase.fixtures import js_utils # noqa
4+
from seleniumbase.fixtures import page_actions # noqa
35
from seleniumbase.fixtures.base_case import BaseCase # noqa
46
from seleniumbase.masterqa.master_qa import MasterQA # noqa
57
from seleniumbase.common import decorators # 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__ = "2.4.2"
2+
__version__ = "2.4.3"

0 commit comments

Comments
 (0)