Updates for stuff removed in Selenium 4.3.0

This commit is contained in:
Nicola Soranzo
2022-07-13 10:06:33 -04:00
committed by John Chilton
parent bb41066720
commit 23afbb64e2
25 changed files with 176 additions and 141 deletions
+2 -3
View File
@@ -25,7 +25,7 @@ DEFAULT_SELENIUM_REMOTE_PORT = "4444"
DEFAULT_SELENIUM_REMOTE_HOST = "127.0.0.1"
DEFAULT_WINDOW_WIDTH = 1280
DEFAULT_WINDOW_HEIGHT = 1000
VALID_LOCAL_BROWSERS = ["CHROME", "FIREFOX", "OPERA"]
VALID_LOCAL_BROWSERS = ["CHROME", "FIREFOX"]
class ConfiguredDriver:
@@ -87,7 +87,6 @@ def get_local_driver(browser=DEFAULT_BROWSER, headless=False) -> WebDriver:
driver_to_class = {
"CHROME": webdriver.Chrome,
"FIREFOX": webdriver.Firefox,
"OPERA": webdriver.Opera,
}
driver_class = driver_to_class[browser]
if browser == "CHROME":
@@ -114,7 +113,7 @@ def get_remote_driver(host, port, browser=DEFAULT_BROWSER) -> WebDriver:
# docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.0.1-aluminum
if browser == "auto":
browser = "CHROME"
assert browser in ["CHROME", "EDGE", "ANDROID", "FIREFOX", "INTERNETEXPLORER", "IPAD", "IPHONE", "OPERA", "SAFARI"]
assert browser in ["CHROME", "EDGE", "ANDROID", "FIREFOX", "INTERNETEXPLORER", "IPAD", "IPHONE", "SAFARI"]
desired_capabilities = getattr(DesiredCapabilities, browser)
desired_capabilities["loggingPrefs"] = LOGGING_PREFS
executor = f"http://{host}:{port}/wd/hub"
+12 -12
View File
@@ -10,7 +10,7 @@ from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.remote.webdriver import WebDriver
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.wait import WebDriverWait
UNSPECIFIED_TIMEOUT = object()
@@ -28,13 +28,13 @@ class HasDriver:
driver.get(new_url)
def assert_xpath(self, xpath):
assert self.driver.find_element_by_xpath(xpath)
assert self.driver.find_element(By.XPATH, xpath)
def assert_selector(self, selector):
assert self.driver.find_element_by_css_selector(selector)
assert self.driver.find_element(By.CSS_SELECTOR, selector)
def assert_selector_absent_or_hidden(self, selector):
elements = self.driver.find_elements_by_css_selector(selector)
elements = self.driver.find_elements(By.CSS_SELECTOR, selector)
for element in elements:
assert not element.is_displayed()
@@ -44,7 +44,7 @@ class HasDriver:
assert not element.is_displayed()
def selector_is_displayed(self, selector):
element = self.driver.find_element_by_css_selector(selector)
element = self.driver.find_element(By.CSS_SELECTOR, selector)
return element.is_displayed()
def is_displayed(self, selector_template):
@@ -52,7 +52,7 @@ class HasDriver:
return element.is_displayed()
def assert_selector_absent(self, selector):
assert len(self.driver.find_elements_by_css_selector(selector)) == 0
assert len(self.driver.find_elements(By.CSS_SELECTOR, selector)) == 0
def find_elements(self, selector_template):
return self.driver.find_elements(*selector_template.element_locator)
@@ -133,7 +133,7 @@ class HasDriver:
def wait_for_selector_absent(self, selector, **kwds):
element = self._wait_on(
lambda driver: len(driver.find_elements_by_css_selector(selector)) == 0,
lambda driver: len(driver.find_elements(By.CSS_SELECTOR, selector)) == 0,
f"CSS selector [{selector}] to become absent",
**kwds,
)
@@ -203,24 +203,24 @@ class HasDriver:
return WebDriverWait(self.driver, timeout)
def click_xpath(self, xpath):
element = self.driver.find_element_by_xpath(xpath)
element = self.driver.find_element(By.XPATH, xpath)
element.click()
def click_label(self, text):
element = self.driver.find_element_by_link_text(text)
element = self.driver.find_element(By.LINK_TEXT, text)
element.click()
def click_selector(self, selector):
element = self.driver.find_element_by_css_selector(selector)
element = self.driver.find_element(By.CSS_SELECTOR, selector)
element.click()
def fill(self, form, info):
for key, value in info.items():
input_element = form.find_element_by_name(key)
input_element = form.find_element(By.NAME, key)
input_element.send_keys(value)
def click_submit(self, form):
submit_button = form.find_element_by_css_selector("input[type='submit']")
submit_button = form.find_element(By.CSS_SELECTOR, "input[type='submit']")
submit_button.click()
def prepend_timeout_message(self, timeout_exception, message):
+49 -48
View File
@@ -23,6 +23,7 @@ from typing import (
import requests
import yaml
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.remote.webdriver import WebDriver
@@ -531,8 +532,8 @@ class NavigatesGalaxy(HasDriver):
def click_grid_popup_option(self, item_name, option_label):
item_button = None
grid = self.components.grids.body.wait_for_visible()
for row in grid.find_elements_by_tag_name("tr"):
name_cell = row.find_elements_by_tag_name("td")[1]
for row in grid.find_elements(By.TAG_NAME, "tr"):
name_cell = row.find_elements(By.TAG_NAME, "td")[1]
if name_cell.text == item_name:
item_button = name_cell
break
@@ -540,9 +541,9 @@ class NavigatesGalaxy(HasDriver):
if item_button is None:
raise AssertionError(f"Failed to find item with name [{item_name}]")
popup_menu_button = item_button.find_element_by_css_selector(".dropdown-toggle")
popup_menu_button = item_button.find_element(By.CSS_SELECTOR, ".dropdown-toggle")
popup_menu_button.click()
popup_option = self.driver.find_element_by_link_text(option_label)
popup_option = self.driver.find_element(By.LINK_TEXT, option_label)
popup_option.click()
def published_grid_search_for(self, search_term=None):
@@ -662,7 +663,7 @@ class NavigatesGalaxy(HasDriver):
try:
username_element = self.components.masthead.username.wait_for_visible()
except self.TimeoutException as e:
menu_items = user_menu.find_elements_by_css_selector("li a")
menu_items = user_menu.find_elements(By.CSS_SELECTOR, "li a")
menu_text = [mi.text for mi in menu_items]
message = f"Failed to find logged in message in menu items {', '.join(menu_text)}"
raise self.prepend_timeout_message(e, message)
@@ -695,7 +696,7 @@ class NavigatesGalaxy(HasDriver):
def click_center(self):
action_chains = self.action_chains()
center_element = self.driver.find_element_by_css_selector("#center")
center_element = self.driver.find_element(By.CSS_SELECTOR, "#center")
action_chains.move_to_element(center_element).click().perform()
def perform_upload(self, test_path, **kwd):
@@ -900,7 +901,7 @@ class NavigatesGalaxy(HasDriver):
rule_builder = self.components.rule_builder
rule_builder.menu_button_filter.wait_for_and_click()
with self.rule_builder_rule_editor("add-filter-count") as editor_element:
filter_input = editor_element.find_element_by_css_selector("input[type='number']")
filter_input = editor_element.find_element(By.CSS_SELECTOR, "input[type='number']")
filter_input.clear()
filter_input.send_keys(f"{count}")
@@ -908,7 +909,7 @@ class NavigatesGalaxy(HasDriver):
rule_builder = self.components.rule_builder
rule_builder.menu_button_rules.wait_for_and_click()
with self.rule_builder_rule_editor("sort") as editor_element:
column_elem = editor_element.find_element_by_css_selector(".rule-column-selector")
column_elem = editor_element.find_element(By.CSS_SELECTOR, ".rule-column-selector")
self.select2_set_value(column_elem, column_label)
self.screenshot_if(screenshot_name)
@@ -917,17 +918,17 @@ class NavigatesGalaxy(HasDriver):
rule_builder.menu_button_column.wait_for_and_click()
with self.rule_builder_rule_editor("add-column-regex") as editor_element:
column_elem = editor_element.find_element_by_css_selector(".rule-column-selector")
column_elem = editor_element.find_element(By.CSS_SELECTOR, ".rule-column-selector")
self.select2_set_value(column_elem, column_label)
groups_elem = editor_element.find_element_by_css_selector("input[type='radio'][value='groups']")
groups_elem = editor_element.find_element(By.CSS_SELECTOR, "input[type='radio'][value='groups']")
groups_elem.click()
regex_elem = editor_element.find_element_by_css_selector("input.rule-regular-expression")
regex_elem = editor_element.find_element(By.CSS_SELECTOR, "input.rule-regular-expression")
regex_elem.clear()
regex_elem.send_keys(regex)
filter_input = editor_element.find_element_by_css_selector("input[type='number']")
filter_input = editor_element.find_element(By.CSS_SELECTOR, "input[type='number']")
filter_input.clear()
filter_input.send_keys(f"{group_count}")
@@ -938,17 +939,17 @@ class NavigatesGalaxy(HasDriver):
rule_builder.menu_button_column.wait_for_and_click()
with self.rule_builder_rule_editor("add-column-regex") as editor_element:
column_elem = editor_element.find_element_by_css_selector(".rule-column-selector")
column_elem = editor_element.find_element(By.CSS_SELECTOR, ".rule-column-selector")
self.select2_set_value(column_elem, column_label)
groups_elem = editor_element.find_element_by_css_selector("input[type='radio'][value='replacement']")
groups_elem = editor_element.find_element(By.CSS_SELECTOR, "input[type='radio'][value='replacement']")
groups_elem.click()
regex_elem = editor_element.find_element_by_css_selector("input.rule-regular-expression")
regex_elem = editor_element.find_element(By.CSS_SELECTOR, "input.rule-regular-expression")
regex_elem.clear()
regex_elem.send_keys(regex)
filter_input = editor_element.find_element_by_css_selector("input.rule-replacement")
filter_input = editor_element.find_element(By.CSS_SELECTOR, "input.rule-replacement")
filter_input.clear()
filter_input.send_keys(f"{replacement}")
@@ -958,7 +959,7 @@ class NavigatesGalaxy(HasDriver):
rule_builder = self.components.rule_builder
rule_builder.menu_button_column.wait_for_and_click()
with self.rule_builder_rule_editor("add-column-value") as editor_element:
filter_input = editor_element.find_element_by_css_selector("input[type='text']")
filter_input = editor_element.find_element(By.CSS_SELECTOR, "input[type='text']")
filter_input.clear()
filter_input.send_keys(value)
@@ -968,7 +969,7 @@ class NavigatesGalaxy(HasDriver):
rule_builder = self.components.rule_builder
rule_builder.menu_button_rules.wait_for_and_click()
with self.rule_builder_rule_editor("remove-columns") as filter_editor_element:
column_elem = filter_editor_element.find_element_by_css_selector(".rule-column-selector")
column_elem = filter_editor_element.find_element(By.CSS_SELECTOR, ".rule-column-selector")
for column_label in column_labels:
self.select2_set_value(column_elem, column_label)
self.screenshot_if(screenshot_name)
@@ -977,9 +978,9 @@ class NavigatesGalaxy(HasDriver):
rule_builder = self.components.rule_builder
rule_builder.menu_button_column.wait_for_and_click()
with self.rule_builder_rule_editor("add-column-concatenate") as filter_editor_element:
column_elems = filter_editor_element.find_elements_by_css_selector(".rule-column-selector")
column_elems = filter_editor_element.find_elements(By.CSS_SELECTOR, ".rule-column-selector")
self.select2_set_value(column_elems[0], column_label_1)
column_elems = filter_editor_element.find_elements_by_css_selector(".rule-column-selector")
column_elems = filter_editor_element.find_elements(By.CSS_SELECTOR, ".rule-column-selector")
self.select2_set_value(column_elems[1], column_label_2)
self.screenshot_if(screenshot_name)
@@ -987,13 +988,13 @@ class NavigatesGalaxy(HasDriver):
rule_builder = self.components.rule_builder
rule_builder.menu_button_rules.wait_for_and_click()
with self.rule_builder_rule_editor("split-columns") as filter_editor_element:
column_elems = filter_editor_element.find_elements_by_css_selector(".rule-column-selector")
column_elems = filter_editor_element.find_elements(By.CSS_SELECTOR, ".rule-column-selector")
clear = True
for column_label_1 in column_labels_1:
self.select2_set_value(column_elems[0], column_label_1, clear_value=clear)
clear = False
column_elems = filter_editor_element.find_elements_by_css_selector(".rule-column-selector")
column_elems = filter_editor_element.find_elements(By.CSS_SELECTOR, ".rule-column-selector")
clear = True
for column_label_2 in column_labels_2:
self.select2_set_value(column_elems[1], column_label_2, clear_value=clear)
@@ -1005,9 +1006,9 @@ class NavigatesGalaxy(HasDriver):
rule_builder = self.components.rule_builder
rule_builder.menu_button_rules.wait_for_and_click()
with self.rule_builder_rule_editor("swap-columns") as filter_editor_element:
column_elems = filter_editor_element.find_elements_by_css_selector(".rule-column-selector")
column_elems = filter_editor_element.find_elements(By.CSS_SELECTOR, ".rule-column-selector")
self.select2_set_value(column_elems[0], column_label_1)
column_elems = filter_editor_element.find_elements_by_css_selector(".rule-column-selector")
column_elems = filter_editor_element.find_elements(By.CSS_SELECTOR, ".rule-column-selector")
self.select2_set_value(column_elems[1], column_label_2)
self.screenshot_if(screenshot_name)
@@ -1057,7 +1058,7 @@ class NavigatesGalaxy(HasDriver):
def workflow_editor_click_option(self, option_label):
self.workflow_editor_click_options()
menu_element = self.workflow_editor_options_menu_element()
option_elements = menu_element.find_elements_by_css_selector("a")
option_elements = menu_element.find_elements(By.CSS_SELECTOR, "a")
assert len(option_elements) > 0, "Failed to find workflow editor options"
self.sleep_for(WAIT_TYPES.UX_RENDER)
found_option = False
@@ -1130,19 +1131,19 @@ class NavigatesGalaxy(HasDriver):
def libraries_open_with_name(self, name):
self.libraries_open()
self.libraries_index_search_for(name)
self.libraries_index_table_elements()[0].find_element_by_css_selector("td a").click()
self.libraries_index_table_elements()[0].find_element(By.CSS_SELECTOR, "td a").click()
@retry_during_transitions
def libraries_index_table_elements(self):
container = self.components.libraries._.wait_for_visible()
elements = container.find_elements_by_css_selector("tbody")
elements = container.find_elements(By.CSS_SELECTOR, "tbody")
if not elements:
return []
else:
assert len(elements) == 1
element = elements[0]
return element.find_elements_by_css_selector("tr") # [style='display: table-row']
return element.find_elements(By.CSS_SELECTOR, "tr") # [style='display: table-row']
def libraries_index_create(self, name):
self.components.libraries.create_new_library_btn.wait_for_and_click()
@@ -1195,7 +1196,7 @@ class NavigatesGalaxy(HasDriver):
found = False
for history_element in history_elements:
if to_select_item in history_element.text:
history_element.find_element_by_css_selector("input").click()
history_element.find_element(By.CSS_SELECTOR, "input").click()
found = True
break
@@ -1210,7 +1211,7 @@ class NavigatesGalaxy(HasDriver):
def libraries_table_elements(self):
tbody_element = self.wait_for_selector_visible("#folder_list_body > tbody")
return tbody_element.find_elements_by_css_selector("tr:not(.b-table-empty-row)")
return tbody_element.find_elements(By.CSS_SELECTOR, "tr:not(.b-table-empty-row)")
def populate_library_folder_from_import_dir(self, library_name, filenames):
self.libraries_open_with_name(library_name)
@@ -1228,7 +1229,7 @@ class NavigatesGalaxy(HasDriver):
def clear_tooltips(self):
action_chains = self.action_chains()
center_element = self.driver.find_element_by_css_selector("#center")
center_element = self.driver.find_element(By.CSS_SELECTOR, "#center")
action_chains.move_to_element(center_element).perform()
self.wait_for_selector_absent_or_hidden(".b-tooltip", wait_type=WAIT_TYPES.UX_POPUP)
@@ -1248,7 +1249,7 @@ class NavigatesGalaxy(HasDriver):
@retry_during_transitions
def workflow_index_column_text(self, column_index, workflow_index=0):
row_element = self.workflow_index_table_row(workflow_index=workflow_index)
columns = row_element.find_elements_by_css_selector("td")
columns = row_element.find_elements(By.CSS_SELECTOR, "td")
return columns[column_index].text
def workflow_index_click_search(self):
@@ -1275,18 +1276,18 @@ class NavigatesGalaxy(HasDriver):
def workflow_index_name(self, workflow_index=0):
"""Get workflow name for workflow_index'th row."""
row_element = self.workflow_index_table_row(workflow_index=workflow_index)
workflow_button = row_element.find_element_by_css_selector(".workflow-dropdown")
workflow_button = row_element.find_element(By.CSS_SELECTOR, ".workflow-dropdown")
return workflow_button.text
@retry_during_transitions
def workflow_click_option(self, workflow_selector, workflow_index=0):
workflow_row = self.workflow_index_table_row(workflow_index=workflow_index)
workflow_button = workflow_row.find_element_by_css_selector(workflow_selector)
workflow_button = workflow_row.find_element(By.CSS_SELECTOR, workflow_selector)
workflow_button.click()
def select_dropdown_item(self, option_title):
menu_element = self.wait_for_selector_visible(".dropdown-menu.show")
menu_options = menu_element.find_elements_by_css_selector("a.dropdown-item")
menu_options = menu_element.find_elements(By.CSS_SELECTOR, "a.dropdown-item")
for menu_option in menu_options:
if option_title in menu_option.text:
menu_option.click()
@@ -1299,7 +1300,7 @@ class NavigatesGalaxy(HasDriver):
def workflow_index_click_tag_display(self, workflow_index=0):
workflow_row_element = self.workflow_index_table_row(workflow_index)
tag_display = workflow_row_element.find_element_by_css_selector(".tags-display")
tag_display = workflow_row_element.find_element(By.CSS_SELECTOR, ".tags-display")
tag_display.click()
def workflow_index_add_tag(self, tag: str, workflow_index: int = 0):
@@ -1317,8 +1318,8 @@ class NavigatesGalaxy(HasDriver):
@retry_during_transitions
def workflow_index_tag_elements(self, workflow_index=0):
workflow_row_element = self.workflow_index_table_row(workflow_index)
tag_display = workflow_row_element.find_element_by_css_selector(".tags-display")
tag_spans = tag_display.find_elements_by_css_selector(".tag-name")
tag_display = workflow_row_element.find_element(By.CSS_SELECTOR, ".tags-display")
tag_spans = tag_display.find_elements(By.CSS_SELECTOR, ".tag-name")
return tag_spans
@retry_during_transitions
@@ -1433,7 +1434,7 @@ class NavigatesGalaxy(HasDriver):
def tool_parameter_edit_rules(self):
rules_div_element = self.tool_parameter_div("rules")
edit_button_element = rules_div_element.find_element_by_css_selector("i.fa-edit")
edit_button_element = rules_div_element.find_element(By.CSS_SELECTOR, "i.fa-edit")
edit_button_element.click()
def tool_set_value(self, expanded_parameter_id, value, expected_type=None):
@@ -1443,7 +1444,7 @@ class NavigatesGalaxy(HasDriver):
div_selector = f"div.ui-form-element[id$='form-element-{expanded_parameter_id}']"
self.select2_set_value(div_selector, value)
else:
input_element = div_element.find_element_by_css_selector("input")
input_element = div_element.find_element(By.CSS_SELECTOR, "input")
# Clear default value
input_element.clear()
input_element.send_keys(value)
@@ -1577,8 +1578,8 @@ class NavigatesGalaxy(HasDriver):
self.sleep_for(self.wait_types.UX_RENDER)
names = []
grid = self.wait_for_selector("#grid-table-body")
for row in grid.find_elements_by_tag_name("tr"):
td = row.find_elements_by_tag_name("td")
for row in grid.find_elements(By.TAG_NAME, "tr"):
td = row.find_elements(By.TAG_NAME, "td")
name = td[1].text if td[0].text == "" else td[0].text
if name != "No items" and not name.startswith("No matching entries found"):
names.append(name)
@@ -1649,7 +1650,7 @@ class NavigatesGalaxy(HasDriver):
@retry_during_transitions
def _click_action_in_menu():
menu_element = self.wait_for_visible(self.navigation.history_panel.multi_operations.selectors.action_menu)
menu_element.find_element_by_link_text(action.text).click()
menu_element.find_element(By.LINK_TEXT, action.text).click()
_click_action_in_menu()
@@ -1698,7 +1699,7 @@ class NavigatesGalaxy(HasDriver):
def history_panel_item_available_visualizations_elements(self, hid):
# Precondition: viz menu has been opened with history_panel_item_click_visualization_menu
viz_menu_selectors = f"{self.history_panel_item_selector(hid)} a.visualization-link"
return self.driver.find_elements_by_css_selector(viz_menu_selectors)
return self.driver.find_elements(By.CSS_SELECTOR, viz_menu_selectors)
def history_panel_item_get_tags(self, hid):
item_component = self.history_panel_item_component(hid=hid)
@@ -1789,7 +1790,7 @@ class NavigatesGalaxy(HasDriver):
def collection_builder_click_paired_item(self, forward_or_reverse, item):
assert forward_or_reverse in ["forward", "reverse"]
forward_column = self.wait_for_selector_visible(f".{forward_or_reverse}-column .column-datasets")
first_datset_forward = forward_column.find_elements_by_css_selector("li")[item]
first_datset_forward = forward_column.find_elements(By.CSS_SELECTOR, "li")[item]
first_datset_forward.click()
def logout_if_needed(self):
@@ -2029,12 +2030,12 @@ class NavigatesGalaxy(HasDriver):
# doesn't seem to work with the tool form for some reason.
if hasattr(container_selector_or_elem, "selector"):
container_selector_or_elem = container_selector_or_elem.selector
if not hasattr(container_selector_or_elem, "find_element_by_css_selector"):
if not hasattr(container_selector_or_elem, "find_element"):
container_elem = self.wait_for_selector(container_selector_or_elem)
else:
container_elem = container_selector_or_elem
text_element = container_elem.find_element_by_css_selector("input[type='text']")
text_element = container_elem.find_element(By.CSS_SELECTOR, "input[type='text']")
if clear_value:
self.send_backspace(text_element)
self.send_backspace(text_element)
@@ -2047,7 +2048,7 @@ class NavigatesGalaxy(HasDriver):
# Wait for select2 options to load and then click to add this one.
self.send_enter(text_element)
else:
select_elem = drop_elem.find_elements_by_css_selector(".select2-result-label")[0]
select_elem = drop_elem.find_elements(By.CSS_SELECTOR, ".select2-result-label")[0]
action_chains = self.action_chains()
action_chains.move_to_element(select_elem).click().perform()
self.wait_for_selector_absent_or_hidden("#select2-drop")
+1 -1
View File
@@ -69,7 +69,7 @@ DEFAULT_DOWNLOAD_PATH = driver_factory.DEFAULT_DOWNLOAD_PATH
TIMEOUT_MULTIPLIER = float(os.environ.get("GALAXY_TEST_TIMEOUT_MULTIPLIER", DEFAULT_TIMEOUT_MULTIPLIER))
GALAXY_TEST_ERRORS_DIRECTORY = os.environ.get("GALAXY_TEST_ERRORS_DIRECTORY", DEFAULT_TEST_ERRORS_DIRECTORY)
GALAXY_TEST_SCREENSHOTS_DIRECTORY = os.environ.get("GALAXY_TEST_SCREENSHOTS_DIRECTORY", None)
# Test browser can be ["CHROME", "FIREFOX", "OPERA"]
# Test browser can be ["CHROME", "FIREFOX"]
GALAXY_TEST_SELENIUM_BROWSER = os.environ.get("GALAXY_TEST_SELENIUM_BROWSER", driver_factory.DEFAULT_SELENIUM_BROWSER)
GALAXY_TEST_SELENIUM_REMOTE = os.environ.get("GALAXY_TEST_SELENIUM_REMOTE", driver_factory.DEFAULT_SELENIUM_REMOTE)
GALAXY_TEST_SELENIUM_REMOTE_PORT = os.environ.get(
+15 -13
View File
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from galaxy_test.base.populators import flakey
from .framework import (
selenium_test,
@@ -23,7 +25,7 @@ class AdminAppTestCase(SeleniumTestCase):
self.sleep_for(self.wait_types.UX_RENDER)
self.screenshot("admin_allowlist_local_landing")
# This should be updated if the list of built-in converters is changed.
render_button = self.driver.find_element_by_xpath("//td[.='CONVERTER_bam_to_bigwig_0']/following::td/button")
render_button = self.driver.find_element(By.XPATH, "//td[.='CONVERTER_bam_to_bigwig_0']/following::td/button")
render_button.click()
self.sleep_for(self.wait_types.UX_RENDER)
self.screenshot("admin_allowlist_converter_html_rendered")
@@ -31,7 +33,7 @@ class AdminAppTestCase(SeleniumTestCase):
self.sleep_for(self.wait_types.UX_RENDER)
self.screenshot("admin_allowlist_render_landing")
self.sleep_for(self.wait_types.UX_RENDER)
sanitize_button = self.driver.find_element_by_xpath("//td[.='CONVERTER_bam_to_bigwig_0']/following::td/button")
sanitize_button = self.driver.find_element(By.XPATH, "//td[.='CONVERTER_bam_to_bigwig_0']/following::td/button")
sanitize_button.click()
self.sleep_for(self.wait_types.UX_RENDER)
self.screenshot("admin_allowlist_converter_sanitized")
@@ -58,7 +60,7 @@ class AdminAppTestCase(SeleniumTestCase):
admin_component.index.toolshed.wait_for_and_click()
self.sleep_for(self.wait_types.UX_RENDER)
self.screenshot("admin_toolshed_landing")
repo_search_input = self.driver.find_element_by_id("toolshed-repo-search")
repo_search_input = self.driver.find_element(By.ID, "toolshed-repo-search")
repo_search_input.clear()
repo_search_input.send_keys(repository_name)
# If this hasn't succeeded after 30 seconds, the @flakey context should
@@ -67,33 +69,33 @@ class AdminAppTestCase(SeleniumTestCase):
self.sleep_for(self.wait_types.SHED_SEARCH)
self.screenshot("admin_toolshed_search")
admin_component.toolshed.search_results.wait_for_visible()
repository_row = self.driver.find_element_by_link_text(repository_name)
repository_row = self.driver.find_element(By.LINK_TEXT, repository_name)
repository_row.click()
self.sleep_for(self.wait_types.UX_RENDER)
self.screenshot("admin_toolshed_repo_details")
install_button = self.driver.find_element_by_xpath("(//button[contains(., 'Install')])[2]")
install_button = self.driver.find_element(By.XPATH, "(//button[contains(., 'Install')])[2]")
install_button.click()
self.sleep_for(self.wait_types.UX_RENDER)
self.screenshot("admin_toolshed_repo_install_settings")
self.sleep_for(self.wait_types.UX_TRANSITION)
ok_button = self.driver.find_element_by_xpath(
"//*[@id='repo-install-settings___BV_modal_footer_']/button[contains(., 'OK')]"
ok_button = self.driver.find_element(
By.XPATH, "//*[@id='repo-install-settings___BV_modal_footer_']/button[contains(., 'OK')]"
)
ok_button.click()
self.sleep_for(self.wait_types.REPO_INSTALL)
installed_only = self.driver.find_element_by_xpath("//span[contains(. ,'Installed Only')]/../../input")
installed_only = self.driver.find_element(By.XPATH, "//span[contains(. ,'Installed Only')]/../../input")
self.action_chains().move_to_element(installed_only).click().perform()
self.sleep_for(self.wait_types.UX_TRANSITION)
# This serves as a check for the presence of the upgrade notification.
admin_component.toolshed.upgrade_notification.wait_for_visible()
self.screenshot("admin_toolshed_repo_installed")
repository_row = self.driver.find_element_by_xpath(f"//div[contains(text(), '{repository_name}')]/..")
repository_row = self.driver.find_element(By.XPATH, f"//div[contains(text(), '{repository_name}')]/..")
repository_row.click()
self.sleep_for(self.wait_types.UX_TRANSITION)
self.screenshot("admin_toolshed_installed_only")
# Unfortunately reusing the element isn't feasible, since the div
# containing the button gets replaced with a new div and button.
uninstall_button = self.driver.find_element_by_xpath("(//button[contains(., 'Uninstall')])[1]")
uninstall_button = self.driver.find_element(By.XPATH, "(//button[contains(., 'Uninstall')])[1]")
uninstall_button.click()
self.sleep_for(self.wait_types.UX_TRANSITION)
self.screenshot("admin_toolshed_repo_uninstalled")
@@ -107,9 +109,9 @@ class AdminAppTestCase(SeleniumTestCase):
admin_component.index.dependencies.wait_for_and_click()
self.sleep_for(self.wait_types.UX_RENDER)
# Ensure that tabs are visible
self.driver.find_element_by_link_text("Dependencies")
self.driver.find_element_by_link_text("Containers")
unused_link = self.driver.find_element_by_link_text("Unused")
self.driver.find_element(By.LINK_TEXT, "Dependencies")
self.driver.find_element(By.LINK_TEXT, "Containers")
unused_link = self.driver.find_element(By.LINK_TEXT, "Unused")
# Ensure that #manage-resolver-type is visible.
admin_component.manage_dependencies.resolver_type.wait_for_visible()
self.screenshot("admin_dependencies_landing")
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
selenium_test,
SeleniumTestCase,
@@ -62,7 +64,7 @@ class ChangePasswordTestCase(SeleniumTestCase):
def fill_input_fields(self, current, password, confirm):
self.sleep_for(self.wait_types.UX_TRANSITION)
self.driver.find_element_by_css_selector("input[id='current']").send_keys(current)
self.driver.find_element_by_css_selector("input[id='password']").send_keys(password)
self.driver.find_element_by_css_selector("input[id='confirm']").send_keys(confirm)
self.driver.find_element(By.CSS_SELECTOR, "input[id='current']").send_keys(current)
self.driver.find_element(By.CSS_SELECTOR, "input[id='password']").send_keys(password)
self.driver.find_element(By.CSS_SELECTOR, "input[id='confirm']").send_keys(confirm)
self.components.change_user_password.submit.wait_for_and_click()
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
selenium_test,
SeleniumTestCase,
@@ -116,11 +118,11 @@ class CollectionBuildersTestCase(SeleniumTestCase):
self.wait_for_and_click(self.navigation.collection_builders.selectors.clear_filters)
forward_column = self.wait_for_visible(self.navigation.collection_builders.selectors.forward_datasets)
first_datset_forward = forward_column.find_elements_by_css_selector("li")[0]
first_datset_forward = forward_column.find_elements(By.CSS_SELECTOR, "li")[0]
first_datset_forward.click()
reverse_column = self.wait_for_visible(self.navigation.collection_builders.selectors.reverse_datasets)
second_dataset_reverse = reverse_column.find_elements_by_css_selector("li")[1]
second_dataset_reverse = reverse_column.find_elements(By.CSS_SELECTOR, "li")[1]
second_dataset_reverse.click()
self.collection_builder_hide_originals()
@@ -1,3 +1,4 @@
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from .framework import (
@@ -48,8 +49,8 @@ class CollectionEditTestCase(SeleniumTestCase):
def change_dbkey_value_and_click_submit(self, dbkeyValue, dbkeyNew):
self.components.edit_collection_attributes.database_value(dbkey=dbkeyValue).wait_for_and_click()
self.driver.find_element_by_css_selector("input.multiselect__input").send_keys(dbkeyNew)
self.driver.find_element_by_css_selector("input.multiselect__input").send_keys(Keys.ENTER)
self.driver.find_element(By.CSS_SELECTOR, "input.multiselect__input").send_keys(dbkeyNew)
self.driver.find_element(By.CSS_SELECTOR, "input.multiselect__input").send_keys(Keys.ENTER)
self.components.edit_collection_attributes.save_btn.wait_for_and_click()
def _wait_for_and_select(self, hids):
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
retry_assertion_during_transitions,
selenium_test,
@@ -55,11 +57,11 @@ class CustomBuildsTestcase(SharedStateSeleniumTestCase):
def delete_custom_build(self, build_name):
delete_button = None
grid = self.wait_for_selector("table.grid > tbody")
for row in grid.find_elements_by_tag_name("tr"):
td = row.find_elements_by_tag_name("td")
for row in grid.find_elements(By.TAG_NAME, "tr"):
td = row.find_elements(By.TAG_NAME, "td")
name = td[0].text
if name == build_name:
delete_button = td[3].find_element_by_css_selector(".fa-trash-o")
delete_button = td[3].find_element(By.CSS_SELECTOR, ".fa-trash-o")
break
if delete_button is None:
@@ -71,8 +73,8 @@ class CustomBuildsTestcase(SharedStateSeleniumTestCase):
self.sleep_for(self.wait_types.UX_RENDER)
builds = []
grid = self.wait_for_selector("table.grid > tbody")
for row in grid.find_elements_by_tag_name("tr"):
name = row.find_elements_by_tag_name("td")[0].text
for row in grid.find_elements(By.TAG_NAME, "tr"):
name = row.find_elements(By.TAG_NAME, "td")[0].text
builds.append(name)
return builds
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
retry_assertion_during_transitions,
selenium_test,
@@ -214,7 +216,7 @@ class SavedHistoriesTestCase(SharedStateSeleniumTestCase):
# Insert a tag
tags_cell = self.get_history_tags_cell(self.history2_name)
tag_area = tags_cell.find_element_by_css_selector(".ti-new-tag-input-wrapper input")
tag_area = tags_cell.find_element(By.CSS_SELECTOR, ".ti-new-tag-input-wrapper input")
tag_area.click()
tag_area.send_keys(self.history2_tags[0])
self.send_enter(tag_area)
@@ -223,7 +225,7 @@ class SavedHistoriesTestCase(SharedStateSeleniumTestCase):
# Search by tag
tags_cell = self.get_history_tags_cell(self.history2_name)
tag = tags_cell.find_element_by_css_selector(".ti-tag-center")
tag = tags_cell.find_element(By.CSS_SELECTOR, ".ti-tag-center")
tag.click()
self.assert_grid_histories_are([self.history2_name], False)
@@ -290,8 +292,8 @@ class SavedHistoriesTestCase(SharedStateSeleniumTestCase):
def get_history_tags_cell(self, history_name):
tags_cell = None
grid = self.wait_for_selector("#grid-table-body")
for row in grid.find_elements_by_tag_name("tr"):
td = row.find_elements_by_tag_name("td")
for row in grid.find_elements(By.TAG_NAME, "tr"):
td = row.find_elements(By.TAG_NAME, "td")
if td[1].text == history_name:
tags_cell = td[4]
break
@@ -303,9 +305,9 @@ class SavedHistoriesTestCase(SharedStateSeleniumTestCase):
def check_histories(self, histories):
grid = self.wait_for_selector("#grid-table-body")
for row in grid.find_elements_by_tag_name("tr"):
td = row.find_elements_by_tag_name("td")
for row in grid.find_elements(By.TAG_NAME, "tr"):
td = row.find_elements(By.TAG_NAME, "td")
history_name = td[1].text
if history_name in histories:
checkbox = td[0].find_element_by_tag_name("input")
checkbox = td[0].find_element(By.TAG_NAME, "input")
checkbox.click()
@@ -1,6 +1,7 @@
import time
import pytest
from selenium.webdriver.common.by import By
from galaxy.selenium.navigates_galaxy import WAIT_TYPES
from galaxy_test.base.api_asserts import assert_status_code_is
@@ -212,7 +213,7 @@ class HistoryPanelCollectionsTestCase(SeleniumTestCase):
selector = ".title .name"
if self.is_beta_history():
selector = ".content-title"
titles = [de.find_element_by_css_selector(selector).text for de in dataset_elements]
titles = [de.find_element(By.CSS_SELECTOR, selector).text for de in dataset_elements]
assert titles == ["forward", "reverse"]
self.screenshot("history_panel_collection_view_paired")
@@ -237,7 +238,7 @@ class HistoryPanelCollectionsTestCase(SeleniumTestCase):
selector = ".title .name"
if self.is_beta_history():
selector = ".content-title"
title_elements = [de.find_element_by_css_selector(selector).text for de in dataset_elements]
title_elements = [de.find_element(By.CSS_SELECTOR, selector).text for de in dataset_elements]
assert title_elements == ["data1", "data2", "data3", "data4"]
check_four_datasets_shown()
+3 -1
View File
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from galaxy_test.base.populators import flakey
from .framework import (
managed_history,
@@ -40,7 +42,7 @@ class JupyterTestCase(SeleniumTestCase):
self.driver.switch_to.frame(viz_iframe)
self.components.gies.jupyter.body.wait_for_visible()
self.wait_for_selector("ul.nav")
li_links = self.driver.find_elements_by_css_selector("ul.nav li.dropdown a.dropdown-toggle")
li_links = self.driver.find_elements(By.CSS_SELECTOR, "ul.nav li.dropdown a.dropdown-toggle")
cell_li = None
found_li_texts = []
for li_link in li_links:
@@ -1,5 +1,6 @@
import os
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from .framework import (
@@ -168,5 +169,5 @@ class LibraryContentsTestCase(SeleniumTestCase, UsesLibraryAssertions):
@retry_during_transitions
def _select_history_option(self, select_id, label_text):
select = Select(self.driver.find_element_by_id(select_id))
select = Select(self.driver.find_element(By.ID, select_id))
select.select_by_visible_text(label_text)
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
retry_assertion_during_transitions,
selenium_test,
@@ -86,7 +88,7 @@ class LibraryLandingTestCase(SeleniumTestCase):
@retry_assertion_during_transitions
def _assert_names_are(self, expected_names):
names = [e.find_element_by_css_selector("td a").text for e in self.libraries_index_table_elements()]
names = [e.find_element(By.CSS_SELECTOR, "td a").text for e in self.libraries_index_table_elements()]
self.assertEqual(names, expected_names)
@retry_assertion_during_transitions
+3 -1
View File
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
managed_history,
selenium_test,
@@ -31,7 +33,7 @@ class PagesTestCase(SeleniumTestCase):
self.components.pages.editor.embed_dataset.wait_for_and_click()
saved_datasets_element = self.components.pages.editor.dataset_selector.wait_for_and_click()
self.screenshot("pages_editor_embed_dataset_dialog")
checkboxes = saved_datasets_element.find_elements_by_css_selector("input[type='checkbox']")
checkboxes = saved_datasets_element.find_elements(By.CSS_SELECTOR, "input[type='checkbox']")
assert len(checkboxes) > 0
checkboxes[0].click()
self.components.pages.editor.embed_dialog_add_button.wait_for_and_click()
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
selenium_test,
SeleniumTestCase,
@@ -18,21 +20,21 @@ class ManageInformationTestCase(SeleniumTestCase):
self.navigate_to_user_preferences()
self.components.preferences.manage_api_key.wait_for_and_click()
self.sleep_for(self.wait_types.UX_TRANSITION)
new_key_button = self.driver.find_element_by_id("submit")
api_key_input = self.driver.find_element_by_css_selector("[data-label='Current API key:'] > input")
new_key_button = self.driver.find_element(By.ID, "submit")
api_key_input = self.driver.find_element(By.CSS_SELECTOR, "[data-label='Current API key:'] > input")
# Assert that what's rendered on screen is what the API is returning
self.assertEqual(api_key_input.get_property("value"), api_key)
self.action_chains().move_to_element(new_key_button).click().perform()
self.sleep_for(self.wait_types.UX_TRANSITION)
new_api_key = self.get_api_key()
api_key_input = self.driver.find_element_by_css_selector("[data-label='Current API key:'] > input")
api_key_input = self.driver.find_element(By.CSS_SELECTOR, "[data-label='Current API key:'] > input")
# And assert that this has now changed, and still renders correctly
self.assertEqual(new_api_key, api_key_input.get_property("value"))
@selenium_test
def test_change_email(self):
def assert_email(email_to_check):
self.assertTrue(email_to_check == self.driver.find_element_by_id("user-preferences-current-email").text)
self.assertTrue(email_to_check == self.driver.find_element(By.ID, "user-preferences-current-email").text)
email = self._get_random_email()
self.register(email)
@@ -48,7 +50,7 @@ class ManageInformationTestCase(SeleniumTestCase):
new_email = self._get_random_email()
# new email should be different from initially registered
self.assertTrue(email != new_email)
email_input_field = self.driver.find_element_by_css_selector("input[id='email']")
email_input_field = self.driver.find_element(By.CSS_SELECTOR, "input[id='email']")
self.clear_input_field_and_write(email_input_field, new_email)
self.components.change_user_email.submit.wait_for_and_click()
@@ -62,7 +64,7 @@ class ManageInformationTestCase(SeleniumTestCase):
@selenium_test
def test_public_name(self):
def get_name_input_field():
return self.driver.find_element_by_css_selector("input[id='username']")
return self.driver.find_element(By.CSS_SELECTOR, "input[id='username']")
def assert_public_name(expected_name):
self.assertTrue(expected_name == get_name_input_field().get_attribute("value"))
@@ -89,7 +91,7 @@ class ManageInformationTestCase(SeleniumTestCase):
@selenium_test
def test_user_address(self):
def get_address_form():
return self.driver.find_element_by_css_selector("div.ui-portlet-section > div.portlet-content")
return self.driver.find_element(By.CSS_SELECTOR, "div.ui-portlet-section > div.portlet-content")
self.register(self._get_random_email())
self.navigate_to_manage_information()
@@ -135,7 +137,7 @@ class ManageInformationTestCase(SeleniumTestCase):
element.send_keys(new_input_text)
def get_address_input_field(self, address_form, input_field_label):
return address_form.find_element_by_css_selector(f"[data-label='{input_field_label}'] > input")
return address_form.find_element(By.CSS_SELECTOR, f"[data-label='{input_field_label}'] > input")
class DeleteCurrentAccountTestCase(SeleniumTestCase):
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
retry_assertion_during_transitions,
selenium_test,
@@ -84,8 +86,8 @@ class HistoryGridTestCase(SharedStateSeleniumTestCase):
tags = None
grid = self.wait_for_selector("#grid-table-body")
for row in grid.find_elements_by_tag_name("tr"):
td = row.find_elements_by_tag_name("td")
for row in grid.find_elements(By.TAG_NAME, "tr"):
td = row.find_elements(By.TAG_NAME, "td")
name = td[0].text
if name == self.history1_name:
tags = td[4]
@@ -95,7 +97,7 @@ class HistoryGridTestCase(SharedStateSeleniumTestCase):
raise AssertionError(f"Failed to find history with name [{self.history1_name}]")
tag_button_selector = "div.tag-name"
tag_buttons = tags.find_elements_by_css_selector(tag_button_selector)
tag_buttons = tags.find_elements(By.CSS_SELECTOR, tag_button_selector)
tag_button_text = None
target_tag_button_text = self.history1_tags[0]
for tag_button in tag_buttons:
@@ -112,8 +114,8 @@ class HistoryGridTestCase(SharedStateSeleniumTestCase):
self.sleep_for(self.wait_types.UX_RENDER)
names = []
grid = self.wait_for_selector("#grid-table-body")
for row in grid.find_elements_by_tag_name("tr"):
cell = row.find_elements_by_tag_name("td")[0] # Name
for row in grid.find_elements(By.TAG_NAME, "tr"):
cell = row.find_elements(By.TAG_NAME, "td")[0] # Name
names.append(cell.text)
return names
+3 -1
View File
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
selenium_test,
SeleniumTestCase,
@@ -14,7 +16,7 @@ class SignOutTestCase(SeleniumTestCase):
self.components.preferences.sign_out.wait_for_and_click()
self.components.sign_out.cancel_button.wait_for_and_click()
assert self.is_logged_in()
new_email = self.driver.find_element_by_id("user-preferences-current-email").text
new_email = self.driver.find_element(By.ID, "user-preferences-current-email").text
self.assertTrue(email == new_email)
self.components.preferences.sign_out.wait_for_and_click()
self.components.sign_out.sign_out_button.wait_for_and_click()
+10 -9
View File
@@ -1,6 +1,7 @@
import json
import pytest
from selenium.webdriver.common.by import By
from galaxy.model.unittest_utils.store_fixtures import one_hda_model_store_dict
from galaxy.selenium.navigates_galaxy import retry_call_during_transitions
@@ -65,24 +66,24 @@ class ToolFormTestCase(SeleniumTestCase, UsesHistoryItemAssertions):
assert "1 : environment_variables" in generic_item.text
generic_item.click()
self.sleep_for(self.wait_types.UX_RENDER)
assert generic_item.find_element_by_css_selector("pre").text == "42\nmoo\nNOTTHREE"
generic_item.find_element_by_css_selector("[title='Run Job Again']").click()
assert generic_item.find_element(By.CSS_SELECTOR, "pre").text == "42\nmoo\nNOTTHREE"
generic_item.find_element(By.CSS_SELECTOR, "[title='Run Job Again']").click()
self.components.tool_form.execute.wait_for_visible()
@staticmethod
def click_menu_item(menu, text):
for element in menu.find_elements_by_css_selector("a"):
for element in menu.find_elements(By.CSS_SELECTOR, "a"):
if element.text == text:
return element.click()
def _table_to_key_value_elements(self, table_selector):
tool_parameters_table = self.wait_for_selector_visible(table_selector)
tbody_element = tool_parameters_table.find_element_by_css_selector("tbody")
trs = tbody_element.find_elements_by_css_selector("tr")
tbody_element = tool_parameters_table.find_element(By.CSS_SELECTOR, "tbody")
trs = tbody_element.find_elements(By.CSS_SELECTOR, "tr")
assert trs
key_value_pairs = []
for tr in trs:
tds = tr.find_elements_by_css_selector("td")
tds = tr.find_elements(By.CSS_SELECTOR, "td")
assert tds
key_value_pairs.append((tds[0], tds[1]))
@@ -96,7 +97,7 @@ class ToolFormTestCase(SeleniumTestCase, UsesHistoryItemAssertions):
def check_recorded_val():
inttest_div_element = self.tool_parameter_div("inttest")
inttest_input_element = inttest_div_element.find_element_by_css_selector("input")
inttest_input_element = inttest_div_element.find_element(By.CSS_SELECTOR, "input")
recorded_val = inttest_input_element.get_attribute("value")
# Assert form re-rendered with correct value in textbox.
assert recorded_val == "42", recorded_val
@@ -163,8 +164,8 @@ class ToolFormTestCase(SeleniumTestCase, UsesHistoryItemAssertions):
self.hda_click_details(hid)
self.components.dataset_details._.wait_for_visible()
tool_parameters_table = self.components.dataset_details.tool_parameters.wait_for_visible()
tbody_element = tool_parameters_table.find_element_by_css_selector("tbody")
tds = tbody_element.find_elements_by_css_selector("td")
tbody_element = tool_parameters_table.find_element(By.CSS_SELECTOR, "tbody")
tds = tbody_element.find_elements(By.CSS_SELECTOR, "td")
assert tds
assert any(expected_value in td.text for td in tds)
+4 -3
View File
@@ -1,6 +1,7 @@
import os
import pytest
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from .framework import (
@@ -201,7 +202,7 @@ PRJDA60709 SAMD00016382 DRX000480 ftp.sra.ebi.ac.uk/vol1/fastq/DRR000/DRR0
rule_builder.menu_item_rule_type(rule_type="add-filter-count").wait_for_and_click()
filter_editor = rule_builder.rule_editor(rule_type="add-filter-count")
filter_editor_element = filter_editor.wait_for_visible()
filter_input = filter_editor_element.find_element_by_css_selector("input[type='number']")
filter_input = filter_editor_element.find_element(By.CSS_SELECTOR, "input[type='number']")
filter_input.clear()
filter_input.send_keys("1")
self.screenshot("rules_example_1_4_filter_header")
@@ -418,7 +419,7 @@ PRJDA60709 SAMD00016382 DRX000480 ftp.sra.ebi.ac.uk/vol1/fastq/DRR000/DRR0
rule_builder.menu_item_rule_type(rule_type="add-filter-count").wait_for_and_click()
filter_editor = rule_builder.rule_editor(rule_type="add-filter-count")
filter_editor_element = filter_editor.wait_for_visible()
filter_input = filter_editor_element.find_element_by_css_selector("input[type='number']")
filter_input = filter_editor_element.find_element(By.CSS_SELECTOR, "input[type='number']")
filter_input.clear()
filter_input.send_keys("1")
self.screenshot("rules_deferred_datasets_4_filter_header")
@@ -481,7 +482,7 @@ PRJDA60709 SAMD00016382 DRX000480 ftp.sra.ebi.ac.uk/vol1/fastq/DRR000/DRR0
def _scroll_to_end_of_table(self):
rule_builder = self.components.rule_builder
table_elem = rule_builder.table.wait_for_visible()
first_cell = table_elem.find_elements_by_css_selector("td")[0]
first_cell = table_elem.find_elements(By.CSS_SELECTOR, "td")[0]
action_chains = self.action_chains()
action_chains.move_to_element(first_cell)
action_chains.click(first_cell)
@@ -1,6 +1,7 @@
import json
import yaml
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from galaxy_test.base.workflow_fixtures import (
@@ -651,7 +652,7 @@ steps:
# parse workflow table
table_elements = self.workflow_index_table_elements()
self.sleep_for(self.wait_types.UX_RENDER)
bookmark_td = table_elements[0].find_elements_by_tag_name("td")[4]
bookmark_td = table_elements[0].find_elements(By.TAG_NAME, "td")[4]
# get bookmark pseudo element
# https://stackoverflow.com/questions/45427223/click-on-pseudo-element-using-selenium
@@ -671,8 +672,8 @@ steps:
def workflow_editor_connect(self, source, sink, screenshot_partial=None):
source_id, sink_id = self.workflow_editor_source_sink_terminal_ids(source, sink)
source_element = self.driver.find_element_by_css_selector(f"#{source_id}")
sink_element = self.driver.find_element_by_css_selector(f"#{sink_id}")
source_element = self.driver.find_element(By.CSS_SELECTOR, f"#{source_id}")
sink_element = self.driver.find_element(By.CSS_SELECTOR, f"#{sink_id}")
ac = self.action_chains()
ac = ac.move_to_element(source_element).click_and_hold()
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
EXAMPLE_WORKFLOW_URL_1,
retry_assertion_during_transitions,
@@ -20,7 +22,7 @@ class WorkflowManagementTestCase(SeleniumTestCase, TestsGalaxyPagers, UsesWorkfl
table_elements = self.workflow_index_table_elements()
assert len(table_elements) == 1
new_workflow = table_elements[0].find_element_by_css_selector(".workflow-dropdown")
new_workflow = table_elements[0].find_element(By.CSS_SELECTOR, ".workflow-dropdown")
assert "TestWorkflow1 (imported from URL)" in new_workflow.text, new_workflow.text
@selenium_test
@@ -32,7 +34,7 @@ class WorkflowManagementTestCase(SeleniumTestCase, TestsGalaxyPagers, UsesWorkfl
self.driver.back()
self.components.workflows.external_link.wait_for_visible()
# font-awesome title handling broken... https://github.com/FortAwesome/vue-fontawesome/issues/63
# title_element = external_link_icon.find_element_by_tag_name("title")
# title_element = external_link_icon.find_element(By.TAG_NAME, "title")
# assert EXAMPLE_WORKFLOW_URL_1 in title_element.text
self.workflow_index_click_option("View")
workflow_show = self.components.workflow_show
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from galaxy_test.base import rules_test_data
from galaxy_test.base.workflow_fixtures import (
WORKFLOW_NESTED_REPLACEMENT_PARAMETER,
@@ -137,7 +139,7 @@ steps:
self.workflow_run_ensure_expanded()
workflow_run = self.components.workflow_run
input_div_element = workflow_run.input_div(label="input_int").wait_for_visible()
input_element = input_div_element.find_element_by_css_selector("input")
input_element = input_div_element.find_element(By.CSS_SELECTOR, "input")
input_element.clear()
input_element.send_keys("12345")
@@ -263,7 +265,7 @@ steps:
def _set_num_lines_to_3(self, element_id):
# for random_lines num_lines parameter as runtime parameter in workflow form.
div = self.tool_parameter_div(element_id)
input_element = div.find_element_by_css_selector("input")
input_element = div.find_element(By.CSS_SELECTOR, "input")
# runtime parameters not being set to tool default value:
# https://github.com/galaxyproject/galaxy/pull/7157
# initial_value = input_element.get_attribute("value")
@@ -274,7 +276,7 @@ steps:
def _set_replacement_parameter(self, element_id, value):
# for random_lines num_lines parameter as runtime parameter in workflow form.
div = self.tool_parameter_div(element_id)
input_element = div.find_element_by_css_selector("input")
input_element = div.find_element(By.CSS_SELECTOR, "input")
initial_value = input_element.get_attribute("value")
assert initial_value == "", initial_value
input_element.clear()
@@ -1,3 +1,5 @@
from selenium.webdriver.common.by import By
from .framework import (
selenium_test,
SeleniumIntegrationTestCase,
@@ -16,9 +18,9 @@ class AdminDependencyContainersTestCase(SeleniumIntegrationTestCase):
admin_component.index.dependencies.wait_for_and_click()
self.sleep_for(self.wait_types.UX_RENDER)
# Make sure the tabs are visible
self.driver.find_element_by_link_text("Dependencies")
self.driver.find_element_by_link_text("Unused")
containers_link = self.driver.find_element_by_link_text("Containers")
self.driver.find_element(By.LINK_TEXT, "Dependencies")
self.driver.find_element(By.LINK_TEXT, "Unused")
containers_link = self.driver.find_element(By.LINK_TEXT, "Containers")
# Ensure that #manage-resolver-type is visible.
admin_component.manage_dependencies.resolver_type.wait_for_visible()
self.screenshot("admin_dependencies_landing")
@@ -1,4 +1,5 @@
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from .framework import (
selenium_test,
@@ -26,7 +27,7 @@ class ToolboxFiltersSeleniumIntegrationTestCase(SeleniumIntegrationTestCase):
"""
self.register()
# The tool panel section should be visible and clickable at this stage
section = self.driver.find_element_by_link_text("Test Section")
section = self.driver.find_element(By.LINK_TEXT, "Test Section")
self.action_chains().move_to_element(section).click().perform()
self.navigate_to_user_preferences()
self.components.preferences.toolbox_filters.wait_for_and_click()
@@ -41,4 +42,4 @@ class ToolboxFiltersSeleniumIntegrationTestCase(SeleniumIntegrationTestCase):
self.sleep_for(self.wait_types.UX_RENDER)
self.home()
# But now it should raise NoSuchElementException
self.assertRaises(NoSuchElementException, lambda: self.driver.find_element_by_link_text("Test Section"))
self.assertRaises(NoSuchElementException, lambda: self.driver.find_element(By.LINK_TEXT, "Test Section"))