Update tests for latest Selenium (find_element_by_* removed in 4.3.0)

django-5.0
Henri J. Norden 2024-01-18 17:49:00 +02:00
parent 9b0db70e01
commit d6477d11d5
2 changed files with 12 additions and 11 deletions

View File

@ -4,6 +4,7 @@ import time
from django.contrib.auth.models import User
from django.urls import reverse
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import Select
@ -52,36 +53,36 @@ class FilterPage:
@property
def item_count(self):
return len(self.selenium.find_elements_by_xpath('//*[@id="result_list"]/tbody/tr'))
return len(self.selenium.find_elements(By.XPATH, '//*[@id="result_list"]/tbody/tr'))
@property
def url_query(self):
return self.selenium.current_url.split('?')[-1].replace('%2C', ',')
def get_selected_li_count(self, ul):
return len(ul.find_elements_by_css_selector('li.selected'))
return len(ul.find_elements(By.CSS_SELECTOR, 'li.selected'))
def use_dropdown_filter(self, select_id, option):
select = Select(self.selenium.find_element_by_id(select_id))
select = Select(self.selenium.find_element(By.ID, select_id))
select.select_by_visible_text(option)
self.wait_for_reload()
return Select(self.selenium.find_element_by_id(select_id))
return Select(self.selenium.find_element(By.ID, select_id))
def use_multiselect_filter(self, ul_num, title):
uls_css = '#changelist-filter ul'
a_xpath = f'li/a[text() = "{title}"]'
ul = self.selenium.find_elements_by_css_selector(uls_css)[ul_num-1]
ul.find_element_by_xpath(a_xpath).click()
ul = self.selenium.find_elements(By.CSS_SELECTOR, uls_css)[ul_num-1]
ul.find_element(By.XPATH, a_xpath).click()
self.wait_for_reload()
return self.selenium.find_elements_by_css_selector(uls_css)[ul_num-1]
return self.selenium.find_elements(By.CSS_SELECTOR, uls_css)[ul_num-1]
def use_multiselect_dropdown_filter(self, field, options):
select = Select(self.selenium.find_element_by_id(field + '_select'))
select = Select(self.selenium.find_element(By.ID, field + '_select'))
for value in options:
select.select_by_value(value)
self.selenium.find_element_by_id(field + '_submit').click()
self.selenium.find_element(By.ID, field + '_submit').click()
self.wait_for_reload()
return Select(self.selenium.find_element_by_id(field + '_select'))
return Select(self.selenium.find_element(By.ID, field + '_select'))
class LiveFilterTest(StaticLiveServerTestCase):

View File

@ -24,7 +24,7 @@ deps =
django40: Django>=4.0,<4.1
django41: Django>=4.1,<4.2
django42: Django>=4.2,<5.0
selenium<4.3.0
selenium<=4.16.0
commands = {envpython} tests/manage.py test testapp {posargs}
setenv = PYTHONPATH = .:{toxworkdir}