Skip to content

Commit 122ea92

Browse files
authored
Merge pull request #842 from seleniumbase/reliability-and-other-improvements
Reliability and other improvements
2 parents 15c54f4 + 86dd680 commit 122ea92

File tree

11 files changed

+65
-39
lines changed

11 files changed

+65
-39
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,14 @@ nosetests test_suite.py --report
565565
566566
See: [https://docs.qameta.io/allure/](https://docs.qameta.io/allure/#_pytest)
567567
568+
SeleniumBase no longer includes ``allure-pytest`` as part of installed dependencies. If you want to use it, install it first:
569+
570+
```bash
571+
pip install allure-pytest
572+
```
573+
574+
Now your tests can create Allure results files, which can be processed by Allure Reports.
575+
568576
```bash
569577
pytest test_suite.py --alluredir=allure_results
570578
```

azure-pipelines.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ jobs:
1111
vmImage: 'Ubuntu-20.04'
1212
strategy:
1313
matrix:
14-
Python2.7:
15-
python.version: '2.7'
1614
Python3.5:
1715
python.version: '3.5'
1816
Python3.6:
@@ -23,7 +21,7 @@ jobs:
2321
python.version: '3.8'
2422
Python3.9:
2523
python.version: '3.9'
26-
maxParallel: 6
24+
maxParallel: 5
2725

2826
steps:
2927
- task: UsePythonVersion@0

docs/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
regex>=2020.11.13
1+
regex>=2021.3.17
22
tqdm>=4.59.0
33
livereload==2.6.3;python_version>="3.6"
44
joblib==1.0.1;python_version>="3.6"

examples/edge_test.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""
22
This test is only for Microsoft Edge (Chromium)!
3+
(Tested on Edge Version 89.0.774.54)
34
"""
45
from seleniumbase import BaseCase
56

@@ -12,10 +13,10 @@ def test_edge(self):
1213
print(' (Run this test using "--edge" or "--browser=edge")')
1314
self.skip('Use "--edge" or "--browser=edge"')
1415
self.open("edge://settings/help")
15-
self.assert_element('img[alt="Edge logo"] + span')
16-
self.highlight('#section_about div + div')
17-
self.highlight('#section_about div + div > div')
18-
self.highlight('img[alt="Edge logo"]')
19-
self.highlight('img[alt="Edge logo"] + span')
20-
self.highlight('#section_about div + div > div + div')
21-
self.highlight('#section_about div + div > div + div + div > div')
16+
self.highlight('div[role="main"]')
17+
self.highlight('img[srcset*="logo"]')
18+
self.assert_text("Microsoft Edge", 'img[srcset*="logo"] + div')
19+
self.highlight('img[srcset*="logo"] + div span:nth-of-type(1)')
20+
self.highlight('img[srcset*="logo"] + div span:nth-of-type(2)')
21+
self.highlight('span[aria-live="assertive"]')
22+
self.highlight('a[href*="chromium"]')

requirements.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ packaging>=20.9
44
setuptools>=44.1.1;python_version<"3.5"
55
setuptools>=50.3.2;python_version>="3.5" and python_version<"3.6"
66
setuptools>=54.1.2;python_version>="3.6"
7-
setuptools-scm>=5.0.2
7+
setuptools-scm==5.0.2;python_version<"3.6"
8+
setuptools-scm>=6.0.1;python_version>="3.6"
89
wheel>=0.36.2
910
attrs>=20.3.0
1011
PyYAML>=5.4.1;python_version>="3.6"
@@ -80,8 +81,6 @@ Pillow==8.1.2;python_version>="3.6"
8081
rich==9.13.0;python_version>="3.6" and python_version<"4.0"
8182
tornado==5.1.1;python_version<"3.5"
8283
tornado==6.1;python_version>="3.5"
83-
allure-pytest==2.8.22;python_version<"3.5"
84-
allure-pytest==2.8.36;python_version>="3.5"
8584
pdfminer.six==20191110;python_version<"3.5"
8685
pdfminer.six==20201018;python_version>="3.5"
8786

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__ = "1.58.1"
2+
__version__ = "1.58.2"

seleniumbase/console_scripts/run.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,12 @@ def show_install_usage():
116116
print(" sbase install chromedriver")
117117
print(" sbase install geckodriver")
118118
print(" sbase install edgedriver")
119-
print(" sbase install chromedriver 88")
120-
print(" sbase install chromedriver 88.0.4324.96")
119+
print(" sbase install chromedriver 89")
120+
print(" sbase install chromedriver 89.0.4389.23")
121121
print(" sbase install chromedriver latest")
122122
print(" sbase install chromedriver -p")
123123
print(" sbase install chromedriver latest -p")
124-
print(" sbase install edgedriver 88.0.705.74")
124+
print(" sbase install edgedriver 89.0.774.54")
125125
print(" Output:")
126126
print(" Installs the chosen webdriver to seleniumbase/drivers/")
127127
print(" (chromedriver is required for Chrome automation)")

seleniumbase/console_scripts/sb_install.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
sbase install chromedriver
1414
sbase install geckodriver
1515
sbase install edgedriver
16-
sbase install chromedriver 88.0.4324.96
17-
sbase install chromedriver 88
16+
sbase install chromedriver 89.0.4389.23
17+
sbase install chromedriver 89
1818
sbase install chromedriver latest
1919
sbase install chromedriver -p
2020
sbase install chromedriver latest -p
21-
sbase install edgedriver 88.0.705.63
21+
sbase install edgedriver 89.0.774.54
2222
Output:
2323
Installs the chosen webdriver to seleniumbase/drivers/
2424
(chromedriver is required for Chrome automation)
@@ -43,8 +43,8 @@
4343
LOCAL_PATH = "/usr/local/bin/" # On Mac and Linux systems
4444
DEFAULT_CHROMEDRIVER_VERSION = "2.44" # (Specify "latest" to get the latest)
4545
DEFAULT_GECKODRIVER_VERSION = "v0.29.0"
46-
DEFAULT_EDGEDRIVER_VERSION = "88.0.705.63" # (Looks for LATEST_STABLE first)
47-
DEFAULT_OPERADRIVER_VERSION = "v.84.0.4147.89"
46+
DEFAULT_EDGEDRIVER_VERSION = "89.0.774.54" # (Looks for LATEST_STABLE first)
47+
DEFAULT_OPERADRIVER_VERSION = "v.88.0.4324.104"
4848

4949

5050
def invalid_run_command():
@@ -61,7 +61,8 @@ def invalid_run_command():
6161
exp += " Example:\n"
6262
exp += " seleniumbase install chromedriver\n"
6363
exp += " seleniumbase install geckodriver\n"
64-
exp += " seleniumbase install chromedriver 76.0.3809.126\n"
64+
exp += " seleniumbase install chromedriver 89\n"
65+
exp += " seleniumbase install chromedriver 89.0.4389.23\n"
6566
exp += " seleniumbase install chromedriver latest\n"
6667
exp += " seleniumbase install chromedriver -p\n"
6768
exp += " seleniumbase install chromedriver latest -p\n"

seleniumbase/fixtures/base_case.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1865,6 +1865,9 @@ def open_new_window(self, switch_to=True):
18651865
time.sleep(0.01)
18661866
if switch_to:
18671867
self.switch_to_window(len(self.driver.window_handles) - 1)
1868+
time.sleep(0.01)
1869+
if self.browser == "safari":
1870+
self.wait_for_ready_state_complete()
18681871

18691872
def switch_to_window(self, window, timeout=None):
18701873
self.__check_scope()
@@ -3149,33 +3152,35 @@ def assert_downloaded_file(self, file, timeout=None, browser=False):
31493152
start_ms = time.time() * 1000.0
31503153
stop_ms = start_ms + (timeout * 1000.0)
31513154
downloaded_file_path = self.get_path_of_downloaded_file(file, browser)
3155+
found = False
31523156
for x in range(int(timeout)):
31533157
shared_utils.check_if_time_limit_exceeded()
31543158
try:
31553159
self.assertTrue(
31563160
os.path.exists(downloaded_file_path),
31573161
"File [%s] was not found in the downloads folder [%s]!"
31583162
"" % (file, self.get_downloads_folder()))
3159-
if self.demo_mode:
3160-
messenger_post = ("ASSERT DOWNLOADED FILE: [%s]" % file)
3161-
js_utils.post_messenger_success_message(
3162-
self.driver, messenger_post, self.message_duration)
3163-
return
3163+
found = True
3164+
break
31643165
except Exception:
31653166
now_ms = time.time() * 1000.0
31663167
if now_ms >= stop_ms:
31673168
break
31683169
time.sleep(1)
3169-
if not os.path.exists(downloaded_file_path):
3170+
if not found and not os.path.exists(downloaded_file_path):
31703171
message = (
31713172
"File {%s} was not found in the downloads folder {%s} "
31723173
"after %s seconds! (Or the download didn't complete!)"
31733174
"" % (file, self.get_downloads_folder(), timeout))
31743175
page_actions.timeout_exception("NoSuchFileException", message)
31753176
if self.demo_mode:
31763177
messenger_post = ("ASSERT DOWNLOADED FILE: [%s]" % file)
3177-
js_utils.post_messenger_success_message(
3178-
self.driver, messenger_post, self.message_duration)
3178+
try:
3179+
js_utils.activate_jquery(self.driver)
3180+
js_utils.post_messenger_success_message(
3181+
self.driver, messenger_post, self.message_duration)
3182+
except Exception:
3183+
pass
31793184

31803185
def assert_true(self, expr, msg=None):
31813186
""" Asserts that the expression is True.
@@ -6920,6 +6925,12 @@ def setUp(self, masterqa_mode=False):
69206925
url = self.get_current_url()
69216926
if url is not None:
69226927
has_url = True
6928+
if (len(self.driver.window_handles) > 1):
6929+
while (len(self.driver.window_handles) > 1):
6930+
self.switch_to_window(
6931+
len(self.driver.window_handles) - 1)
6932+
self.driver.close()
6933+
self.switch_to_window(0)
69236934
if self._crumbs:
69246935
self.driver.delete_all_cookies()
69256936
except Exception:

seleniumbase/fixtures/js_utils.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -634,10 +634,15 @@ def highlight_with_js_2(driver, message, selector, o_bs, msg_dur):
634634
driver.execute_script(script)
635635
time.sleep(0.0181)
636636

637-
post_messenger_success_message(driver, message, msg_dur)
637+
try:
638+
activate_jquery(driver)
639+
post_messenger_success_message(driver, message, msg_dur)
640+
except Exception:
641+
pass
638642

639-
script = ("""document.querySelector('%s').style.boxShadow =
640-
'%s';""" % (selector, o_bs))
643+
script = (
644+
"""document.querySelector('%s').style.boxShadow = '%s';""" % (
645+
selector, o_bs))
641646
driver.execute_script(script)
642647

643648

@@ -668,7 +673,11 @@ def highlight_with_jquery_2(driver, message, selector, o_bs, msg_dur):
668673
driver.execute_script(script)
669674
time.sleep(0.0181)
670675

671-
post_messenger_success_message(driver, message, msg_dur)
676+
try:
677+
activate_jquery(driver)
678+
post_messenger_success_message(driver, message, msg_dur)
679+
except Exception:
680+
pass
672681

673682
script = """jQuery('%s').css('box-shadow', '%s');""" % (selector, o_bs)
674683
driver.execute_script(script)

0 commit comments

Comments
 (0)