Skip to content

Commit

Permalink
🔪 deprecated find_element(s)_by_css_selector
Browse files Browse the repository at this point in the history
  • Loading branch information
alexcjohnson committed Apr 9, 2022
1 parent 8ec0e2e commit 42ec6dc
Show file tree
Hide file tree
Showing 13 changed files with 118 additions and 137 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ def update_options(search_value):
dash_dcc.start_server(app)

# Get the inner input used for search value.
dropdown = dash_dcc.find_element("#my-dynamic-dropdown")
input_ = dropdown.find_element_by_css_selector("input")
input_ = dash_dcc.find_element("#my-dynamic-dropdown input")

# Focus on the input to open the options menu
input_.send_keys("x")
Expand All @@ -36,15 +35,15 @@ def update_options(search_value):
input_.clear()
input_.send_keys("o")

options = dropdown.find_elements_by_css_selector(".VirtualizedSelectOption")
options = dash_dcc.find_elements("#my-dynamic-dropdown .VirtualizedSelectOption")

# Should show all options.
assert len(options) == 3

# Searching for `on`
input_.send_keys("n")

options = dropdown.find_elements_by_css_selector(".VirtualizedSelectOption")
options = dash_dcc.find_elements("#my-dynamic-dropdown .VirtualizedSelectOption")

assert len(options) == 1
print(options)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ def show_relayout_data(data):

# use this opportunity to test restyleData, since there are multiple
# traces on this graph
legendToggle = dash_dcc.driver.find_element_by_css_selector(
legendToggle = dash_dcc.find_element(
"#example-graph .traces:first-child .legendtoggle"
)
legendToggle.click()
Expand All @@ -145,7 +145,7 @@ def show_relayout_data(data):
)

# and test relayoutData while we're at it
autoscale = dash_dcc.driver.find_element_by_css_selector("#example-graph .ewdrag")
autoscale = dash_dcc.find_element("#example-graph .ewdrag")
autoscale.click()
autoscale.click()
dash_dcc.wait_for_text_to_equal("#relayout-data", '{"xaxis.autorange": true}')
Expand Down
62 changes: 35 additions & 27 deletions components/dash-table/tests/selenium/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def __init__(self, id, mixin, row, col, state=_ANY):
self.state = state

def _get_cell_value(self):
return self.get().find_element_by_css_selector(".dash-cell-value")
return self.get().find_element(By.CSS_SELECTOR, ".dash-cell-value")

def click(self):
return self.get().click()
Expand Down Expand Up @@ -104,13 +104,19 @@ def get(self):
)
)

def find_inside(self, selector):
return self.get().find_element(By.CSS_SELECTOR, selector)

def find_all_inside(self, selector):
return self.get().find_elements(By.CSS_SELECTOR, selector)

def is_dropdown(self):
el = self.get().find_elements_by_css_selector(".Select-arrow")
el = self.get().find_elements(By.CSS_SELECTOR, ".Select-arrow")

return len(el) == 1

def is_input(self):
el = self.get().find_elements_by_css_selector(".dash-cell-value")
el = self.get().find_elements(By.CSS_SELECTOR, ".dash-cell-value")

return len(el) == 1 and el[0].get_attribute("type") is not None

Expand All @@ -130,7 +136,7 @@ def move_to(self):
return ac.perform()

def is_active(self):
input = self.get().find_element_by_css_selector("input")
input = self.get().find_element(By.CSS_SELECTOR, "input")

return "focused" in input.get_attribute("class").split(" ")

Expand All @@ -152,7 +158,7 @@ def is_value_focused(self):
def open_dropdown(self):
cell = self.get()

cell.find_element_by_css_selector(".Select-arrow").click()
cell.find_element(By.CSS_SELECTOR, ".Select-arrow").click()


class DataTableColumnFacade(object):
Expand Down Expand Up @@ -181,6 +187,12 @@ def get(self, row=0):
)
)

def find_inside(self, row, selector):
return self.get(row).find_element(By.CSS_SELECTOR, selector)

def find_all_inside(self, row, selector):
return self.get(row).find_elements(By.CSS_SELECTOR, selector)

def exists(self, row=0):
self.mixin._wait_for_table(self.id, self.state)

Expand All @@ -202,33 +214,29 @@ def exists(self, row=0):

@preconditions(_validate_row)
def clear(self, row=0):
self.get(row).find_element_by_css_selector(".column-header--clear").click()
self.find_inside(row, ".column-header--clear").click()

@preconditions(_validate_row)
def delete(self, row=0):
self.get(row).find_element_by_css_selector(".column-header--delete").click()
self.find_inside(row, ".column-header--delete").click()

@preconditions(_validate_row)
def edit(self, row=0):
self.get(row).find_element_by_css_selector(".column-header--edit").click()
self.find_inside(row, ".column-header--edit").click()

@preconditions(_validate_row)
def get_text(self, row=0):
el = self.get(row).find_element_by_css_selector("span.column-header-name")
el = self.find_inside(row, "span.column-header-name")

return el.get_attribute("innerHTML") if el is not None else None

@preconditions(_validate_row)
def hide(self, row=0):
self.get(row).find_element_by_css_selector(".column-header--hide").click()
self.find_inside(row, ".column-header--hide").click()

@preconditions(_validate_row)
def is_selected(self, row=0):
return (
self.get(row)
.find_element_by_css_selector(".column-header--select input")
.is_selected()
)
return self.find_inside(row, ".column-header--select input").is_selected()

@preconditions(_validate_row)
def move_to(self, row=0):
Expand All @@ -238,13 +246,11 @@ def move_to(self, row=0):

@preconditions(_validate_row)
def select(self, row=0):
self.get(row).find_element_by_css_selector(
".column-header--select input"
).click()
self.find_inside(row, ".column-header--select input").click()

@preconditions(_validate_row)
def sort(self, row=0):
self.get(row).find_element_by_css_selector(".column-header--sort").click()
self.find_inside(row, ".column-header--sort").click()

def filter(self):
return (
Expand All @@ -264,7 +270,7 @@ def filter(self):
def filter_clear(self):
CMD = Keys.COMMAND if platform.system() == "Darwin" else Keys.CONTROL

self.filter().find_element_by_css_selector("input").click()
self.filter().find_element(By.CSS_SELECTOR, "input").click()
ac = ActionChains(self.mixin.driver)
ac.key_down(CMD)
ac.send_keys("a")
Expand All @@ -282,7 +288,7 @@ def filter_value(self, value=None):
if value is None:
return (
self.filter()
.find_element_by_css_selector("input")
.find_element(By.CSS_SELECTOR, "input")
.get_attribute("value")
)
elif value == "":
Expand Down Expand Up @@ -321,7 +327,7 @@ def is_selected(self):
self.id, self.state
)
)[self.row]
.find_element_by_css_selector("input")
.find_element(By.CSS_SELECTOR, "input")
.is_selected()
)

Expand Down Expand Up @@ -399,6 +405,12 @@ def _get_tooltip(self):
def get(self):
return self._get_tooltip()

def find_inside(self, selector):
return self.get().find_element(By.CSS_SELECTOR, selector)

def find_all_inside(self, selector):
return self.get().find_elements(By.CSS_SELECTOR, selector)

def exists(self):
self.mixin._wait_for_table(self.id)

Expand All @@ -412,11 +424,7 @@ def missing(self):
return len(self.mixin.find_elements(".dash-tooltip")) == 0

def get_text(self):
return (
self._get_tooltip()
.find_element_by_css_selector(".dash-table-tooltip")
.get_attribute("innerHTML")
)
return self.find_inside(".dash-table-tooltip").get_attribute("innerHTML")


class DataTableToggleColumnsFacade(object):
Expand Down
29 changes: 13 additions & 16 deletions components/dash-table/tests/selenium/test_edit.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ def test_edit001_can_delete_dropdown(test, props):
cell.click()
assert cell.is_dropdown()

cell.get().find_element_by_css_selector(".Select-clear").click()
assert cell.get().find_element_by_css_selector(".Select-placeholder") is not None
cell.find_inside(".Select-clear").click()
assert cell.find_inside(".Select-placeholder") is not None

assert test.get_log_errors() == []

Expand All @@ -45,13 +45,13 @@ def test_edit002_can_delete_dropown_and_set(test, props):
cell.click()
assert cell.is_dropdown()

cell.get().find_element_by_css_selector(".Select-clear").click()
assert cell.get().find_element_by_css_selector(".Select-placeholder") is not None
cell.find_inside(".Select-clear").click()
assert cell.find_inside(".Select-placeholder") is not None

cell.get().find_element_by_css_selector(".Select-arrow").click()
cell.get().find_element_by_css_selector(".Select-option").click()
cell.find_inside(".Select-arrow").click()
cell.find_inside(".Select-option").click()

assert len(cell.get().find_elements_by_css_selector(".Select-placeholder")) == 0
assert len(cell.find_all_inside(".Select-placeholder")) == 0

assert test.get_log_errors() == []

Expand All @@ -63,22 +63,19 @@ def test_edit003_can_edit_dropdown(test, props):
target = test.table("table")
cell = target.cell(0, "bbb")

cell.get().find_element_by_css_selector(".Select-arrow").click()
cell.get().find_element_by_css_selector(".Select-arrow").click()
cell.find_inside(".Select-arrow").click()
cell.find_inside(".Select-arrow").click()

for i in range(len(cell.get().find_elements_by_css_selector(".Select-option"))):
option = cell.get().find_elements_by_css_selector(".Select-option")[i]
for i in range(len(cell.find_all_inside(".Select-option"))):
option = cell.find_all_inside(".Select-option")[i]

value = option.get_attribute("innerHTML")
option.click()

assert (
cell.get()
.find_element_by_css_selector(".Select-value-label")
.get_attribute("innerHTML")
== value
cell.find_inside(".Select-value-label").get_attribute("innerHTML") == value
)
cell.get().find_element_by_css_selector(".Select-arrow").click()
cell.find_inside(".Select-arrow").click()

assert test.get_log_errors() == []

Expand Down
8 changes: 4 additions & 4 deletions components/dash-table/tests/selenium/test_editable.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,10 @@ def test_tedi001_loading_on_data_change(test):
test.find_element("#blocking").click()
target.is_loading()
target.cell(0, 0).click()
assert len(target.cell(0, 0).get().find_elements_by_css_selector("input")) == 0
assert len(target.cell(0, 0).find_all_inside("input")) == 0

target.is_ready()
assert target.cell(0, 0).get().find_element_by_css_selector("input") is not None
assert target.cell(0, 0).find_inside("input") is not None
assert test.get_log_errors() == []


Expand All @@ -91,10 +91,10 @@ def test_tedi002_ready_on_non_data_change(test):
test.find_element("#non-blocking").click()
target.is_ready()
target.cell(0, 0).click()
assert target.cell(0, 0).get().find_element_by_css_selector("input") is not None
assert target.cell(0, 0).find_inside("input") is not None

target.is_ready()
assert target.cell(0, 0).get().find_element_by_css_selector("input") is not None
assert target.cell(0, 0).find_inside("input") is not None
assert test.get_log_errors() == []


Expand Down
6 changes: 3 additions & 3 deletions components/dash-table/tests/selenium/test_empty.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ def test_empt001_clear_(test):
target = test.table("table")

assert target.is_ready()
assert len(test.driver.find_elements_by_css_selector("tr")) == 3
test.driver.find_element_by_css_selector("#clear-table").click()
assert len(test.find_elements("tr")) == 3
test.find_element("#clear-table").click()
assert target.is_ready()
assert len(test.driver.find_elements_by_css_selector("tr")) == 0
assert len(test.find_elements("tr")) == 0
assert test.get_log_errors() == []
2 changes: 1 addition & 1 deletion components/dash-table/tests/selenium/test_filter2.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ def test_spfi008_reset_updates(test):
assert target.column("ddd").filter_value() == "lt 12500"
assert target.column("eee").filter_value() == "is prime"

test.driver.find_element_by_css_selector("#btn").click()
test.find_element("#btn").click()

assert target.cell(0, "ccc").get_text() == ccc0
assert target.cell(1, "ccc").get_text() == ccc1
Expand Down
Loading

0 comments on commit 42ec6dc

Please sign in to comment.