Skip to content

Commit 50d7dd3

Browse files
committed
fix: backport update deprecated selenium methods
1 parent e93779d commit 50d7dd3

File tree

7 files changed

+33
-29
lines changed

7 files changed

+33
-29
lines changed

nested_admin/tests/admin_widgets/tests.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def check_datetime(self, indexes):
100100
now_link_xpath = "following-sibling::*[1]/a[1]"
101101
date_el.clear()
102102
time_el.clear()
103-
self.click(date_el.find_element_by_xpath(now_link_xpath))
103+
self.click(date_el.find_element(By.XPATH, now_link_xpath))
104104
if self.has_grappelli:
105105
selector = '#ui-datepicker-div .ui-state-highlight'
106106
with self.clickable_selector(selector, timeout=1) as el:
@@ -109,7 +109,7 @@ def check_datetime(self, indexes):
109109
self.wait_until_element_is('#ui-datepicker-div', ':not(:visible)',
110110
'Datepicker widget did not close')
111111
time.sleep(0.2)
112-
self.click(time_el.find_element_by_xpath(now_link_xpath))
112+
self.click(time_el.find_element(By.XPATH, now_link_xpath))
113113
if self.has_grappelli:
114114
selector = '#ui-timepicker .ui-state-active'
115115
with self.clickable_selector(selector, timeout=1) as el:
@@ -136,7 +136,7 @@ def check_m2m(self, indexes):
136136
def check_fk(self, indexes):
137137
field = self.get_field('fk1', indexes)
138138
parent = field.get_property('parentNode').get_property('parentNode')
139-
add_related = parent.find_element_by_css_selector('.add-related')
139+
add_related = parent.find_element(By.CSS_SELECTOR, '.add-related')
140140
if self.has_grappelli:
141141
# Grappelli can be very slow to initialize fk bindings, particularly
142142
# when run on travis-ci
@@ -166,7 +166,7 @@ def check_gfk_related_lookup(self, indexes):
166166
ec.element_to_be_clickable((By.CSS_SELECTOR, related_lookup_selector)),
167167
message="Timeout waiting for related lookup widget on '#%s'" % object_id_field_id)
168168

169-
lookup_el = self.selenium.find_element_by_css_selector(related_lookup_selector)
169+
lookup_el = self.selenium.find_element(By.CSS_SELECTOR, related_lookup_selector)
170170
lookup_el.click()
171171
with self.switch_to_popup_window():
172172
with self.clickable_xpath('//tr//a[text()="Zither"]') as el:
@@ -176,7 +176,7 @@ def check_gfk_related_lookup(self, indexes):
176176
z_pk = "%s" % WidgetsM2M.objects.get(name='Zither').pk
177177

178178
def element_value_populated(d):
179-
el = d.find_element_by_css_selector("#%s" % object_id_field_id)
179+
el = d.find_element(By.CSS_SELECTOR, "#%s" % object_id_field_id)
180180
return el.get_attribute('value')
181181

182182
self.wait_until(
@@ -354,7 +354,7 @@ def test_autocomplete_single_init(self):
354354
self.load_admin()
355355
self.add_inline()
356356
self.add_inline([1])
357-
autocomplete_elements = self.selenium.find_elements_by_xpath(
357+
autocomplete_elements = self.selenium.find_elements(By.XPATH,
358358
'//*[@id="id_widgetsa_set-1-widgetsb_set-0-fk2-autocomplete"]')
359359
self.assertNotEqual(len(autocomplete_elements), 0,
360360
"Zero autocomplete fields initialized")
@@ -384,7 +384,7 @@ def test_nested_autocomplete_extra(self):
384384
self.add_inline([0, [0]])
385385
self.add_inline([0, 1, [0]])
386386
select_field = self.get_field('fk3', indexes=[0, 1, [0, 0]])
387-
select_parent = select_field.find_element_by_xpath('parent::*')
387+
select_parent = select_field.find_element(By.XPATH, 'parent::*')
388388
select_parent.click()
389389
select2_is_active = self.selenium.execute_script(
390390
'return $(".select2-search__field").length > 0')

nested_admin/tests/base.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import django
1414
from django.conf import settings
1515
from django.contrib.admin.sites import site as admin_site
16+
from selenium.webdriver.common.by import By
1617

1718
import six
1819
from selenosis import AdminSelenosisTestCase
@@ -167,7 +168,7 @@ def save_form(self):
167168
self.selenium.execute_script(
168169
'return django.jQuery("[name=_continue]").length'))
169170
name_attr = "_continue" if has_continue else "_save"
170-
self.click(self.selenium.find_element_by_xpath('//*[@name="%s"]' % name_attr))
171+
self.click(self.selenium.find_element(By.XPATH, '//*[@name="%s"]' % name_attr))
171172
if has_continue:
172173
self.wait_page_loaded()
173174
self.initialize_page()
@@ -330,14 +331,14 @@ def get_group(self, indexes=None):
330331
expr_parts += ["/*[%s][%d]" % (xpath_item(parent_model), parent_item_index + 1)]
331332
expr_parts += ["/*[@data-inline-model='%s']" % model_name]
332333
expr = "/%s" % ("/".join(expr_parts))
333-
return self.selenium.find_element_by_xpath(expr)
334+
return self.selenium.find_element(By.XPATH, expr)
334335

335336
def get_item(self, indexes):
336337
indexes = self._normalize_indexes(indexes)
337338
model_name, item_index = indexes.pop()
338339
indexes.append(model_name)
339340
group = self.get_group(indexes=indexes)
340-
return group.find_element_by_xpath(".//*[%s][%d]" % (xpath_item(model_name), item_index + 1))
341+
return group.find_element(By.XPATH, ".//*[%s][%d]" % (xpath_item(model_name), item_index + 1))
341342

342343
def add_inline(self, indexes=None, name=None, slug=None):
343344
indexes = self._normalize_indexes(indexes, is_group=True)
@@ -397,7 +398,7 @@ def get_form_field_selector(self, attname, indexes=None):
397398
def get_field(self, attname, indexes=None):
398399
indexes = self._normalize_indexes(indexes)
399400
field_selector = self.get_form_field_selector(attname, indexes=indexes)
400-
return self.selenium.find_element_by_css_selector(field_selector)
401+
return self.selenium.find_element(By.CSS_SELECTOR, field_selector)
401402

402403
def set_field(self, attname, value, indexes=None):
403404
indexes = self._normalize_indexes(indexes)

nested_admin/tests/drag_drop.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from selenium.webdriver.common.action_chains import ActionChains
55
from selenium.common.exceptions import WebDriverException
6+
from selenium.webdriver.common.by import By
67

78
from .utils import (
89
xpath_cls, xpath_item, is_integer, Position, Size, ElementRect)
@@ -94,7 +95,7 @@ def source(self):
9495
"*[%s]" % xpath_cls("is-sortable"),
9596
"*[%s]" % xpath_cls("djn-drag-handler"),
9697
])
97-
self._source = source_item.find_element_by_xpath(drag_handler_xpath)
98+
self._source = source_item.find_element(By.XPATH, drag_handler_xpath)
9899
return self._source
99100

100101
@property
@@ -111,7 +112,7 @@ def target(self):
111112
'item_pred': xpath_item(),
112113
'item_pos': self.to_indexes[-1][1] + 1,
113114
}
114-
self._target = target_inline_parent.find_element_by_xpath(target_xpath)
115+
self._target = target_inline_parent.find_element(By.XPATH, target_xpath)
115116
return self._target
116117

117118
def initialize_drag(self):
@@ -225,7 +226,7 @@ def _num_preceding_siblings(self, ctx, condition):
225226
is extraordinarily slow. So we just grab all siblings and iterate
226227
through the elements in python.
227228
"""
228-
siblings = ctx.find_element_by_xpath('parent::*').find_elements_by_xpath('*')
229+
siblings = ctx.find_element(By.XPATH, 'parent::*').find_elements(By.XPATH, '*')
229230
count = 0
230231
for el in siblings:
231232
if el.id == ctx.id:
@@ -250,7 +251,7 @@ def is_djn_group(el):
250251

251252
@property
252253
def current_position(self):
253-
placeholder = self.selenium.find_element_by_css_selector(
254+
placeholder = self.selenium.find_element(By.CSS_SELECTOR,
254255
'.ui-sortable-placeholder')
255256
pos = []
256257
ctx = None
@@ -259,9 +260,9 @@ def current_position(self):
259260
if ctx is None:
260261
ctx = placeholder
261262
else:
262-
ctx = ctx.find_element_by_xpath(ancestor_xpath)
263+
ctx = ctx.find_element(By.XPATH, ancestor_xpath)
263264
item_index = self._num_preceding_djn_items(ctx)
264-
ctx = ctx.find_element_by_xpath('ancestor::*[%s][1]' % xpath_cls("djn-group"))
265+
ctx = ctx.find_element(By.XPATH, 'ancestor::*[%s][1]' % xpath_cls("djn-group"))
265266
inline_index = self._num_preceding_djn_groups(ctx)
266267
pos.insert(0, (inline_index, item_index))
267268
return tuple(pos)

nested_admin/tests/nested_polymorphic/base.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from django.conf import settings
66
from django.apps import apps
77
from polymorphic.utils import get_base_polymorphic_model
8+
from selenium.webdriver.common.by import By
89

910
from nested_admin.tests.base import BaseNestedAdminTestCase
1011
from nested_admin.tests.utils import xpath_item, xpath_cls, is_sequence, is_integer, is_str
@@ -153,12 +154,12 @@ def get_item(self, indexes):
153154
except TypeError:
154155
group = self.get_group(indexes=group_indexes + [model_id])
155156
group_id = group.get_attribute('id')
156-
djn_items = self.selenium.find_element_by_css_selector(
157+
djn_items = self.selenium.find_element(By.CSS_SELECTOR,
157158
"#%(id)s > .djn-fieldset > .djn-items, "
158159
"#%(id)s > .tabular.inline-related > .djn-fieldset > .djn-items, "
159160
"#%(id)s > .djn-items" % {'id': group_id})
160161
model_name, item_index = indexes[-1]
161-
return djn_items.find_element_by_xpath(
162+
return djn_items.find_element(By.XPATH,
162163
"./*[%s][%d]" % (xpath_item(), item_index + 1))
163164

164165
def delete_inline(self, indexes):
@@ -204,7 +205,7 @@ def add_inline(self, indexes=None, model=None, **kwargs):
204205

205206
add_selector = "#%s .djn-add-item a.djn-add-handler.djn-model-%s" % (
206207
ctx_id, base_model_identifier)
207-
add_els = self.selenium.find_elements_by_css_selector(add_selector)
208+
add_els = self.selenium.find_elements(By.CSS_SELECTOR, add_selector)
208209
self.assertNotEqual(len(add_els), 0,
209210
"No inline add handlers found for %s" % (error_desc))
210211
self.click(add_els[0])
@@ -222,12 +223,12 @@ def add_inline(self, indexes=None, model=None, **kwargs):
222223
'return $(arguments[0]).closest(".djn-group")[0]', add_els[0])
223224
group_id = group_el.get_attribute('id')
224225

225-
items_el = self.selenium.find_element_by_css_selector(
226+
items_el = self.selenium.find_element(By.CSS_SELECTOR,
226227
'#%(id)s > .djn-fieldset > .djn-items, '
227228
"#%(id)s > .tabular.inline-related > .djn-fieldset > .djn-items, "
228229
'#%(id)s > .djn-items' % {'id': group_id})
229230

230-
num_inlines = len(items_el.find_elements_by_xpath(
231+
num_inlines = len(items_el.find_elements(By.XPATH,
231232
'./*[%s and not(%s)]' % (xpath_item(), xpath_cls('djn-empty-form'))))
232233

233234
new_index = num_inlines - 1
@@ -247,7 +248,7 @@ def remove_inline(self, indexes):
247248
def get_num_inlines(self, indexes=None):
248249
group = self.get_group(indexes=indexes)
249250
group_id = group.get_attribute('id')
250-
djn_items = self.selenium.find_element_by_css_selector(
251+
djn_items = self.selenium.find_element(By.CSS_SELECTOR,
251252
"#%(id)s > .djn-fieldset > .djn-items, "
252253
"#%(id)s > .tabular.inline-related > .djn-fieldset > .djn-items, "
253254
"#%(id)s > .djn-items" % {'id': group_id})
@@ -266,4 +267,4 @@ def get_group(self, indexes=None):
266267
expr_parts += ["/*[@data-inline-model='%s' and %s]"
267268
% (model_name, xpath_cls('djn-group'))]
268269
expr = "/%s" % ("/".join(expr_parts))
269-
return self.selenium.find_element_by_xpath(expr)
270+
return self.selenium.find_element(By.XPATH, expr)

nested_admin/tests/nested_polymorphic/test_polymorphic_mixed_nesting/tests.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from unittest import SkipTest
22
from django.test import TestCase
3+
from selenium.webdriver.common.by import By
34

45
from .models import (
56
Block, BlockMarkdown, BlockRadioGroup, BlockRadioButton,
@@ -39,7 +40,7 @@ def test_polymorphic_child_formset_rendering(self):
3940

4041
inline_ids = [
4142
el.get_attribute('id') for el in
42-
self.selenium.find_elements_by_css_selector(
43+
self.selenium.find_elements(By.CSS_SELECTOR,
4344
'.djn-group:not([id*="-empty-"]')]
4445

4546
expected_inline_ids = [
@@ -53,7 +54,7 @@ def test_polymorphic_child_formset_rendering(self):
5354

5455
inline_ids = [
5556
el.get_attribute('id') for el in
56-
self.selenium.find_elements_by_css_selector(
57+
self.selenium.find_elements(By.CSS_SELECTOR,
5758
'.djn-group:not([id*="-empty-"]')]
5859

5960
assert "surveystep_set-0-block_set-0-blockradiobutton_set-group" not in inline_ids, (

nested_admin/tests/one_deep/tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ def _block_out_arg(self, selector):
137137
Generate the --block-out argument passed to pixelmatch that excludes
138138
an element from the diff
139139
"""
140-
el = self.selenium.find_element_by_css_selector(selector)
140+
el = self.selenium.find_element(By.CSS_SELECTOR, selector)
141141
return ['--block-out', "%(x)s,%(y)s,%(w)s,%(h)s" % {
142142
'x': el.location['x'],
143143
'y': el.location['y'],
@@ -150,7 +150,7 @@ def exclude_from_screenshots(self, imgs, exclude=None):
150150
exclude = exclude or []
151151
rects = []
152152
for selector in exclude:
153-
el = self.selenium.find_element_by_css_selector(selector)
153+
el = self.selenium.find_element(By.CSS_SELECTOR, selector)
154154
x0, y0 = el.location['x'], el.location['y']
155155
w, h = el.size['width'], el.size['height']
156156
x1, y1 = x0 + w, y0 + h

nested_admin/tests/two_deep/tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@ def test_add_item_inline_label_update(self):
832832
with self.clickable_xpath('//input[@name="section_set-0-item_set-0-name"]') as el:
833833
el.send_keys("Test 2")
834834

835-
inline_label = self.get_item([0, 1]).find_element_by_class_name('inline_label')
835+
inline_label = self.get_item([0, 1]).find_element(By.XPATH, by_class_name('inline_label')
836836
self.assertEqual(inline_label.text, '#2')
837837

838838
def test_upload_file(self):

0 commit comments

Comments
 (0)