From d6477d11d5ddb5674e6781e5e5858e4529b61b41 Mon Sep 17 00:00:00 2001 From: "Henri J. Norden" <55378880+Henri-J-Norden@users.noreply.github.com> Date: Thu, 18 Jan 2024 17:49:00 +0200 Subject: [PATCH] Update tests for latest Selenium (find_element_by_* removed in 4.3.0) --- tests/testapp/tests/test_live_filters.py | 21 +++++++++++---------- tox.ini | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/tests/testapp/tests/test_live_filters.py b/tests/testapp/tests/test_live_filters.py index 7c944aa..856cb51 100644 --- a/tests/testapp/tests/test_live_filters.py +++ b/tests/testapp/tests/test_live_filters.py @@ -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): diff --git a/tox.ini b/tox.ini index 65c5dc5..404fc4a 100644 --- a/tox.ini +++ b/tox.ini @@ -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}