Skip to content

Commit 6b02b87

Browse files
Aryamanz29nemesifier
authored andcommitted
[deps] Upgraded selenium
(cherry picked from commit f950d57)
1 parent 1f604a8 commit 6b02b87

3 files changed

Lines changed: 76 additions & 75 deletions

File tree

requirements-test.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# For testing Dependency loaders
22
openwisp_controller @ https://github.com/openwisp/openwisp-controller/tarball/master
3-
selenium~=3.141.0
3+
selenium~=4.9.1

tests/test_project/tests/test_selenium.py

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ def test_addition_of_transition_effect(self):
222222
transition = 'none 0s ease 0s'
223223
# none because transition has been set to none during tests
224224
self.login()
225-
menu = self.web_driver.find_element_by_id('menu')
225+
menu = self.web_driver.find_element(By.ID, 'menu')
226226
main_content = self._get_main_content()
227227
menu_toggle = self._get_menu_toggle()
228228
self.assertEqual(menu.value_of_css_property('transition'), transition)
@@ -485,7 +485,7 @@ def test_shelf_filter(self):
485485
EC.visibility_of_element_located((By.CSS_SELECTOR, '#site-name'))
486486
)
487487
self.assertEqual(self.check_exists_by_id('changelist-filter-clear'), True)
488-
paginator = self.web_driver.find_element_by_css_selector('.paginator')
488+
paginator = self.web_driver.find_element(By.CSS_SELECTOR, '.paginator')
489489
self.assertEqual(paginator.get_attribute('innerText'), '2 shelfs')
490490

491491
with self.subTest('Test clear filter button'):
@@ -494,7 +494,7 @@ def test_shelf_filter(self):
494494
WebDriverWait(self.web_driver, 2).until(
495495
EC.visibility_of_element_located((By.CSS_SELECTOR, '#site-name'))
496496
)
497-
paginator = self.web_driver.find_element_by_css_selector('.paginator')
497+
paginator = self.web_driver.find_element(By.CSS_SELECTOR, '.paginator')
498498
self.assertEqual(paginator.get_attribute('innerText'), '4 shelfs')
499499

500500
with self.subTest('Test multiple filters'):
@@ -512,7 +512,7 @@ def test_shelf_filter(self):
512512
WebDriverWait(self.web_driver, 2).until(
513513
EC.visibility_of_element_located((By.CSS_SELECTOR, '#site-name'))
514514
)
515-
paginator = self.web_driver.find_element_by_css_selector('.paginator')
515+
paginator = self.web_driver.find_element(By.CSS_SELECTOR, '.paginator')
516516
self.assertEqual(paginator.get_attribute('innerText'), '0 shelfs')
517517

518518
def test_book_filter(self):
@@ -548,7 +548,7 @@ def test_book_filter(self):
548548
selected_option = self._get_filter_selected_option('name')
549549
self.assertNotEqual(old_value, selected_option.get_attribute('innerText'))
550550
self.assertEqual(selected_option.get_attribute('innerText'), 'horror book')
551-
paginator = self.web_driver.find_element_by_css_selector('.paginator')
551+
paginator = self.web_driver.find_element(By.CSS_SELECTOR, '.paginator')
552552
self.assertEqual(paginator.get_attribute('innerText'), '1 book')
553553

554554

@@ -584,65 +584,66 @@ def test_input_filters(self):
584584
input_field.send_keys('Horror')
585585
self._get_filter_button().click()
586586
# Horror shelf is present
587-
self.web_driver.find_element_by_xpath(horror_result_xpath)
587+
self.web_driver.find_element(By.XPATH, horror_result_xpath)
588588
with self.assertRaises(NoSuchElementException):
589589
# Factual shelf is absent
590-
self.web_driver.find_element_by_xpath(factual_result_xpath)
590+
self.web_driver.find_element(By.XPATH, factual_result_xpath)
591591
# Both shelves should be present after clearing filter
592-
self.web_driver.find_element_by_css_selector('.field-clear').click()
593-
self.web_driver.find_element_by_xpath(horror_result_xpath)
594-
self.web_driver.find_element_by_xpath(factual_result_xpath)
592+
self.web_driver.find_element(By.CSS_SELECTOR, '.field-clear').click()
593+
self.web_driver.find_element(By.XPATH, horror_result_xpath)
594+
self.web_driver.find_element(By.XPATH, factual_result_xpath)
595595

596596
with self.subTest('Test InputFilter'):
597597
self.open(url)
598598
input_field = self._get_input_filter()
599599
input_field.send_keys('HORROR')
600600
self._get_filter_button().click()
601601
# Horror shelf is present
602-
self.web_driver.find_element_by_xpath(horror_result_xpath)
602+
self.web_driver.find_element(By.XPATH, horror_result_xpath)
603603
with self.assertRaises(NoSuchElementException):
604604
# Factual shelf is absent
605-
self.web_driver.find_element_by_xpath(factual_result_xpath)
605+
self.web_driver.find_element(By.XPATH, factual_result_xpath)
606606
# Both shelves should be present after clearing filter
607-
self.web_driver.find_element_by_css_selector('.field-clear').click()
608-
self.web_driver.find_element_by_xpath(horror_result_xpath)
609-
self.web_driver.find_element_by_xpath(factual_result_xpath)
607+
self.web_driver.find_element(By.CSS_SELECTOR, '.field-clear').click()
608+
self.web_driver.find_element(By.XPATH, horror_result_xpath)
609+
self.web_driver.find_element(By.XPATH, factual_result_xpath)
610610

611611
with self.subTest('Test InputFilter: UUID'):
612612
self.open(url)
613-
input_field = self.web_driver.find_element_by_css_selector(
614-
'input[name=id__exact]'
613+
input_field = self.web_driver.find_element(
614+
By.CSS_SELECTOR, 'input[name=id__exact]'
615615
)
616616
input_field.send_keys(str(horror_shelf.id))
617617
self._get_filter_button().click()
618618
# Horror shelf is present
619-
self.web_driver.find_element_by_xpath(horror_result_xpath)
619+
self.web_driver.find_element(By.XPATH, horror_result_xpath)
620620
with self.assertRaises(NoSuchElementException):
621621
# Factual shelf is absent
622-
self.web_driver.find_element_by_xpath(factual_result_xpath)
622+
self.web_driver.find_element(By.XPATH, factual_result_xpath)
623623
# Both shelves should be present after clearing filter
624-
self.web_driver.find_element_by_css_selector('.field-clear').click()
625-
self.web_driver.find_element_by_xpath(horror_result_xpath)
626-
self.web_driver.find_element_by_xpath(factual_result_xpath)
624+
self.web_driver.find_element(By.CSS_SELECTOR, '.field-clear').click()
625+
self.web_driver.find_element(By.XPATH, horror_result_xpath)
626+
self.web_driver.find_element(By.XPATH, factual_result_xpath)
627627

628628
with self.subTest('Test InputFilter: Related field'):
629629
admin_xpath = f'//*[@id="result_list"]/tbody/tr/th/a[contains(text(), "{self.admin.username}")]'
630630
user_xpath = f'//*[@id="result_list"]/tbody/tr/th/a[contains(text(), "{user.username}")]'
631631
self.open(reverse('admin:auth_user_changelist'))
632-
input_field = self.web_driver.find_element_by_xpath(
633-
'//*[@id="ow-changelist-filter"]/div[1]/div/div/div[2]/div[1]/form/input'
632+
input_field = self.web_driver.find_element(
633+
By.XPATH,
634+
'//*[@id="ow-changelist-filter"]/div[1]/div/div/div[2]/div[1]/form/input',
634635
)
635636
input_field.send_keys(str(horror_shelf.id))
636637
self._get_filter_button().click()
637638
# Admin user is present
638-
self.web_driver.find_element_by_xpath(admin_xpath)
639+
self.web_driver.find_element(By.XPATH, admin_xpath)
639640
with self.assertRaises(NoSuchElementException):
640641
# User is absent
641-
self.web_driver.find_element_by_xpath(user_xpath)
642+
self.web_driver.find_element(By.XPATH, user_xpath)
642643
# Both users should be present after clearing filter
643-
self.web_driver.find_element_by_css_selector('.field-clear').click()
644-
self.web_driver.find_element_by_xpath(admin_xpath)
645-
self.web_driver.find_element_by_xpath(user_xpath)
644+
self.web_driver.find_element(By.CSS_SELECTOR, '.field-clear').click()
645+
self.web_driver.find_element(By.XPATH, admin_xpath)
646+
self.web_driver.find_element(By.XPATH, user_xpath)
646647

647648

648649
class TestDashboardCharts(SeleniumTestMixin, CreateMixin, StaticLiveServerTestCase):
@@ -671,7 +672,7 @@ def test_pie_chart_zero_annotation(self):
671672
except TimeoutException:
672673
self.fail('Failed to find annotation text element in the chart')
673674
else:
674-
annotation_text = self.web_driver.find_element_by_css_selector(
675-
'.operator-project-distribution .annotation-text tspan'
675+
annotation_text = self.web_driver.find_element(
676+
By.CSS_SELECTOR, '.operator-project-distribution .annotation-text tspan'
676677
)
677678
self.assertEqual(annotation_text.text, '0')

tests/test_project/tests/utils.py

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@ def login(self, username=None, password=None, driver=None):
105105
url = self.live_server_url + self.config['login_url']
106106
driver.get(url)
107107
if 'admin/login' in driver.current_url:
108-
driver.find_element_by_name('username').send_keys(username)
109-
driver.find_element_by_name('password').send_keys(password)
110-
driver.find_element_by_css_selector('input[type="submit"]').click()
108+
driver.find_element(By.NAME, 'username').send_keys(username)
109+
driver.find_element(By.NAME, 'password').send_keys(password)
110+
driver.find_element(By.XPATH, '//input[@type="submit"]').click()
111111

112112
def logout(self):
113113
account_button = self._get_account_button()
@@ -116,80 +116,80 @@ def logout(self):
116116
logout_link.click()
117117

118118
def _get_menu_toggle(self):
119-
return self.web_driver.find_element_by_css_selector('.menu-toggle')
119+
return self.web_driver.find_element(By.CSS_SELECTOR, '.menu-toggle')
120120

121121
def _get_menu(self):
122-
return self.web_driver.find_element_by_id('menu')
122+
return self.web_driver.find_element(By.ID, 'menu')
123123

124124
def _get_nav(self):
125-
return self.web_driver.find_element_by_css_selector('#menu .nav')
125+
return self.web_driver.find_element(By.CSS_SELECTOR, '#menu .nav')
126126

127127
def _get_hamburger(self):
128-
return self.web_driver.find_element_by_css_selector('.hamburger')
128+
return self.web_driver.find_element(By.CSS_SELECTOR, '.hamburger')
129129

130130
def _get_main_content(self):
131-
return self.web_driver.find_element_by_id('main-content')
131+
return self.web_driver.find_element(By.ID, 'main-content')
132132

133133
def _get_menu_home_item_label(self):
134-
return self.web_driver.find_element_by_css_selector(
135-
'a.menu-item:nth-child(1) > span:nth-child(2)'
134+
return self.web_driver.find_element(
135+
By.CSS_SELECTOR, 'a.menu-item:nth-child(1) > span:nth-child(2)'
136136
)
137137

138138
def _get_logo(self):
139-
return self.web_driver.find_element_by_id('site-name')
139+
return self.web_driver.find_element(By.ID, 'site-name')
140140

141141
def _get_container(self):
142-
return self.web_driver.find_element_by_id('container')
142+
return self.web_driver.find_element(By.ID, 'container')
143143

144144
def _get_test_mg_head(self):
145-
return self.web_driver.find_element_by_css_selector('#mg-control-32')
145+
return self.web_driver.find_element(By.CSS_SELECTOR, '#mg-control-32')
146146

147147
def _get_test_mg_icon(self):
148-
return self.web_driver.find_element_by_css_selector('.auth')
148+
return self.web_driver.find_element(By.CSS_SELECTOR, '.auth')
149149

150150
def _get_test_mg_label(self):
151-
return self.web_driver.find_element_by_css_selector(
152-
'#mg-control-32 > div:nth-child(1) > span:nth-child(2)'
151+
return self.web_driver.find_element(
152+
By.CSS_SELECTOR, '#mg-control-32 > div:nth-child(1) > span:nth-child(2)'
153153
)
154154

155155
def _get_active_mg(self):
156-
return self.web_driver.find_element_by_css_selector('.active-mg .mg-dropdown')
156+
return self.web_driver.find_element(By.CSS_SELECTOR, '.active-mg .mg-dropdown')
157157

158158
def _get_active_mg_head(self):
159-
return self.web_driver.find_element_by_css_selector('.active-mg .mg-head')
159+
return self.web_driver.find_element(By.CSS_SELECTOR, '.active-mg .mg-head')
160160

161161
def _get_test_mg_dropdown(self):
162-
return self.web_driver.find_element_by_css_selector('#mg-dropdown-32')
162+
return self.web_driver.find_element(By.CSS_SELECTOR, '#mg-dropdown-32')
163163

164164
def _get_test_mg_dropdown_label(self):
165-
return self.web_driver.find_element_by_css_selector(
166-
'#mg-dropdown-32 > div:nth-child(1)'
165+
return self.web_driver.find_element(
166+
By.CSS_SELECTOR, '#mg-dropdown-32 > div:nth-child(1)'
167167
)
168168

169169
def _get_account_button(self):
170-
return self.web_driver.find_element_by_css_selector('.account-button')
170+
return self.web_driver.find_element(By.CSS_SELECTOR, '.account-button')
171171

172172
def _get_account_dropdown(self):
173-
return self.web_driver.find_element_by_css_selector('.account-menu')
173+
return self.web_driver.find_element(By.CSS_SELECTOR, '.account-menu')
174174

175175
def _get_account_button_username(self):
176-
return self.web_driver.find_element_by_css_selector('.account-button strong')
176+
return self.web_driver.find_element(By.CSS_SELECTOR, '.account-button strong')
177177

178178
def _get_account_dropdown_username(self):
179-
return self.web_driver.find_element_by_css_selector('.account-menu-username')
179+
return self.web_driver.find_element(By.CSS_SELECTOR, '.account-menu-username')
180180

181181
def _get_logout_link(self):
182-
return self.web_driver.find_element_by_css_selector('.menu-link')
182+
return self.web_driver.find_element(By.CSS_SELECTOR, '.menu-link')
183183

184184
def _get_menu_backdrop(self):
185-
return self.web_driver.find_element_by_css_selector('.menu-backdrop')
185+
return self.web_driver.find_element(By.CSS_SELECTOR, '.menu-backdrop')
186186

187187
def _get_simple_input_filter(self):
188-
return self.web_driver.find_element_by_css_selector('input[name=shelf]')
188+
return self.web_driver.find_element(By.CSS_SELECTOR, 'input[name=shelf]')
189189

190190
def _get_input_filter(self):
191-
return self.web_driver.find_element_by_css_selector(
192-
'input[name=books_type__exact]'
191+
return self.web_driver.find_element(
192+
By.CSS_SELECTOR, 'input[name=books_type__exact]'
193193
)
194194

195195
def _open_menu(self):
@@ -216,52 +216,52 @@ def _close_menu(self):
216216
hamburger.click()
217217

218218
def _get_filter(self):
219-
return self.web_driver.find_element_by_id('ow-changelist-filter')
219+
return self.web_driver.find_element(By.ID, 'ow-changelist-filter')
220220

221221
def _get_filter_button(self):
222-
return self.web_driver.find_element_by_id('ow-apply-filter')
222+
return self.web_driver.find_element(By.ID, 'ow-apply-filter')
223223

224224
def _get_clear_button(self):
225-
return self.web_driver.find_element_by_id('changelist-filter-clear')
225+
return self.web_driver.find_element(By.ID, 'changelist-filter-clear')
226226

227227
def check_exists_by_id(self, id):
228228
try:
229-
self.web_driver.find_element_by_id(id)
229+
self.web_driver.find_element(By.ID, id)
230230
except NoSuchElementException:
231231
return False
232232
return True
233233

234234
def check_exists_by_xpath(self, xpath):
235235
try:
236-
self.web_driver.find_element_by_xpath(xpath)
236+
self.web_driver.find_element(By.XPATH, xpath)
237237
except NoSuchElementException:
238238
return False
239239
return True
240240

241241
def check_exists_by_css_selector(self, selector):
242242
try:
243-
self.web_driver.find_element_by_css_selector(selector)
243+
self.web_driver.find_element(By.CSS_SELECTOR, selector)
244244
except NoSuchElementException:
245245
return False
246246
return True
247247

248248
def _get_filter_selected_option(self, filter_class):
249-
return self.web_driver.find_element_by_css_selector(
250-
f'.{filter_class} .selected-option'
249+
return self.web_driver.find_element(
250+
By.CSS_SELECTOR, f'.{filter_class} .selected-option'
251251
)
252252

253253
def _get_filter_dropdown(self, filter_class):
254-
return self.web_driver.find_element_by_css_selector(
255-
f'.{filter_class} .filter-options'
254+
return self.web_driver.find_element(
255+
By.CSS_SELECTOR, f'.{filter_class} .filter-options'
256256
)
257257

258258
def _get_filter_title(self, filter_class):
259-
return self.web_driver.find_element_by_css_selector(
260-
f'.{filter_class} .filter-title'
259+
return self.web_driver.find_element(
260+
By.CSS_SELECTOR, f'.{filter_class} .filter-title'
261261
)
262262

263263
def _get_filter_anchor(self, query):
264-
return self.web_driver.find_element_by_xpath(f'//a[@href="?{query}"]')
264+
return self.web_driver.find_element(By.XPATH, f'//a[@href="?{query}"]')
265265

266266
def wait_for_dropdown(self, filter_class):
267267
WebDriverWait(self.web_driver, 2).until(

0 commit comments

Comments
 (0)