galaxy.selenium package
Top-level of library designed to ease use of Selenium targetting Galaxy.
galaxy_selenium is purposes being designed to depend on Python selenium,
six, pyyaml, and optional pyvirtualdisplay but not galaxy-lib (or any of Galaxy
or Galaxy’s test stuff) currently.
Submodules
galaxy.selenium.cli module
-
galaxy.selenium.cli.
add_selenium_arguments
(parser)[source]
Add common selenium arguments for argparse driver utility.
-
class
galaxy.selenium.cli.
DriverWrapper
(args)[source]
Bases: galaxy.selenium.navigates_galaxy.NavigatesGalaxy
Adapt argparse command-line options to a concrete Selenium driver.
-
__init__
(args)[source]
Initialize self. See help(type(self)) for accurate signature.
-
build_url
(url='')[source]
-
property
default_timeout
-
finish
()[source]
galaxy.selenium.components module
-
class
galaxy.selenium.components.
Target
[source]
Bases: object
-
abstract property
description
Return a plain-text description of the browser target for logging/messages.
-
abstract property
element_locator
Return a (by, selector) Selenium elment locator tuple for this selector.
-
class
galaxy.selenium.components.
SelectorTemplate
(selector, selector_type, children=None, kwds=None, with_classes=None)[source]
Bases: galaxy.selenium.components.Target
-
__init__
(selector, selector_type, children=None, kwds=None, with_classes=None)[source]
Initialize self. See help(type(self)) for accurate signature.
-
static
from_dict
(raw_value, children=None)[source]
-
with_class
(class_)[source]
-
descendant
(has_selector)[source]
-
property
description
Return a plain-text description of the browser target for logging/messages.
-
property
selector
-
property
element_locator
Return a (by, selector) Selenium elment locator tuple for this selector.
-
property
as_css_class
-
class
galaxy.selenium.components.
Label
(text)[source]
Bases: galaxy.selenium.components.Target
-
__init__
(text)[source]
Initialize self. See help(type(self)) for accurate signature.
-
property
description
Return a plain-text description of the browser target for logging/messages.
-
property
element_locator
Return a (by, selector) Selenium elment locator tuple for this selector.
-
class
galaxy.selenium.components.
Text
(text)[source]
Bases: galaxy.selenium.components.Target
-
__init__
(text)[source]
Initialize self. See help(type(self)) for accurate signature.
-
property
description
Return a plain-text description of the browser target for logging/messages.
-
property
element_locator
Return a (by, selector) Selenium elment locator tuple for this selector.
-
class
galaxy.selenium.components.
Component
(name, sub_components, selectors, labels, text)[source]
Bases: object
-
__init__
(name, sub_components, selectors, labels, text)[source]
Initialize self. See help(type(self)) for accurate signature.
-
property
selector
-
static
from_dict
(name, raw_value)[source]
galaxy.selenium.context module
-
class
galaxy.selenium.context.
GalaxySeleniumContext
[source]
Bases: galaxy.selenium.navigates_galaxy.NavigatesGalaxy
-
url
: str
-
target_url_from_selenium
: str
-
build_url
(url: str, for_selenium: bool = True) → str[source]
-
property
driver
-
screenshot
(label: str)[source]
If GALAXY_TEST_SCREENSHOTS_DIRECTORY is set create a screenshot there named <label>.png.
Unlike the above “snapshot” feature, this will be written out regardless and not in a per-test
directory. The above method is used for debugging failures within a specific test. This method
if more for creating a set of images to augment automated testing with manual human inspection
after a test or test suite has executed.
-
class
galaxy.selenium.context.
GalaxySeleniumContextImpl
(from_dict: Optional[dict] = None)[source]
Bases: galaxy.selenium.context.GalaxySeleniumContext
Minimal, simplified GalaxySeleniumContext useful outside the context of test cases.
A variant of this concept that can also populate content via the API
to then interact with via the Selenium is galaxy_test.selenium.framework.GalaxySeleniumContextImpl
.
-
__init__
(from_dict: Optional[dict] = None) → None[source]
Initialize self. See help(type(self)) for accurate signature.
-
url
: str
-
target_url_from_selenium
: str
-
galaxy.selenium.context.
init
(config=None, clazz=<class 'galaxy.selenium.context.GalaxySeleniumContextImpl'>) → galaxy.selenium.context.GalaxySeleniumContext[source]
galaxy.selenium.data module
-
galaxy.selenium.data.
load_root_component
()[source]
galaxy.selenium.driver_factory module
-
class
galaxy.selenium.driver_factory.
ConfiguredDriver
(browser='auto', remote=False, remote_host='127.0.0.1', remote_port='4444', headless=False)[source]
Bases: object
-
__init__
(browser='auto', remote=False, remote_host='127.0.0.1', remote_port='4444', headless=False)[source]
Initialize self. See help(type(self)) for accurate signature.
-
driver
: selenium.webdriver.remote.webdriver.WebDriver
-
to_dict
()[source]
-
static
from_dict
(as_dict)[source]
-
galaxy.selenium.driver_factory.
get_local_driver
(browser='auto', headless=False) → selenium.webdriver.remote.webdriver.WebDriver[source]
-
galaxy.selenium.driver_factory.
get_remote_driver
(host, port, browser='auto') → selenium.webdriver.remote.webdriver.WebDriver[source]
-
galaxy.selenium.driver_factory.
is_virtual_display_available
()[source]
-
galaxy.selenium.driver_factory.
virtual_display_if_enabled
(enabled)[source]
galaxy.selenium.has_driver module
A mixin to extend a class that has self.driver with higher-level constructs.
This should be mixed into classes with a self.driver and self.default_timeout
attribute.
-
galaxy.selenium.has_driver.
exception_indicates_not_clickable
(exception)[source]
-
galaxy.selenium.has_driver.
exception_indicates_stale_element
(exception)[source]
-
class
galaxy.selenium.has_driver.
HasDriver
[source]
Bases: object
-
exception
TimeoutException
(msg=None, screen=None, stacktrace=None)
Bases: selenium.common.exceptions.WebDriverException
Thrown when a command does not complete in enough time.
-
assert_xpath
(xpath)[source]
-
assert_selector
(selector)[source]
-
assert_selector_absent_or_hidden
(selector)[source]
-
assert_absent_or_hidden
(selector_template)[source]
-
selector_is_displayed
(selector)[source]
-
is_displayed
(selector_template)[source]
-
assert_selector_absent
(selector)[source]
-
find_elements
(selector_template)[source]
-
assert_absent
(selector_template)[source]
-
wait_for_xpath
(xpath, **kwds)[source]
-
wait_for_xpath_visible
(xpath, **kwds)[source]
-
wait_for_selector
(selector, **kwds)[source]
-
wait_for_present
(selector_template, **kwds)[source]
-
wait_for_visible
(selector_template, **kwds)[source]
-
wait_for_selector_visible
(selector, **kwds)[source]
-
wait_for_selector_clickable
(selector, **kwds)[source]
-
wait_for_clickable
(selector_template, **kwds)[source]
-
wait_for_selector_absent_or_hidden
(selector, **kwds)[source]
-
wait_for_selector_absent
(selector, **kwds)[source]
-
wait_for_absent
(selector_template, **kwds)[source]
-
wait_for_absent_or_hidden
(selector_template, **kwds)[source]
-
wait_for_id
(id, **kwds)[source]
-
click
(selector_template)[source]
-
action_chains
()[source]
-
send_enter
(element)[source]
-
send_escape
(element)[source]
-
send_backspace
(element)[source]
-
wait
(timeout=<object object>, **kwds)[source]
-
click_xpath
(xpath)[source]
-
click_label
(text)[source]
-
click_selector
(selector)[source]
-
fill
(form, info)[source]
-
click_submit
(form)[source]
-
prepend_timeout_message
(timeout_exception, message)[source]
-
exception
galaxy.selenium.has_driver.
TimeoutException
(msg=None, screen=None, stacktrace=None)[source]
Bases: selenium.common.exceptions.WebDriverException
Thrown when a command does not complete in enough time.
galaxy.selenium.jupyter_context module
-
galaxy.selenium.jupyter_context.
init
(config=None)[source]
-
class
galaxy.selenium.jupyter_context.
JupyterContextImpl
(from_dict: Optional[dict] = None)[source]
Bases: galaxy.selenium.context.GalaxySeleniumContextImpl
-
screenshot
(label)[source]
If GALAXY_TEST_SCREENSHOTS_DIRECTORY is set create a screenshot there named <label>.png.
Unlike the above “snapshot” feature, this will be written out regardless and not in a per-test
directory. The above method is used for debugging failures within a specific test. This method
if more for creating a set of images to augment automated testing with manual human inspection
after a test or test suite has executed.
-
url
: str
-
target_url_from_selenium
: str
galaxy.selenium.navigates_galaxy module
A mixing that extends a HasDriver class with Galaxy-specific utilities.
Implementer must provide a self.build_url method to target Galaxy.
-
class
galaxy.selenium.navigates_galaxy.
WaitType
(name, default_length)
Bases: tuple
-
property
default_length
Alias for field number 1
-
property
name
Alias for field number 0
-
class
galaxy.selenium.navigates_galaxy.
WAIT_TYPES
[source]
Bases: object
-
UX_RENDER
= WaitType(name='ux_render', default_length=1)
-
UX_TRANSITION
= WaitType(name='ux_transition', default_length=5)
-
DATABASE_OPERATION
= WaitType(name='database_operation', default_length=10)
-
JOB_COMPLETION
= WaitType(name='job_completion', default_length=30)
-
GIE_SPAWN
= WaitType(name='gie_spawn', default_length=30)
-
SHED_SEARCH
= WaitType(name='shed_search', default_length=30)
-
REPO_INSTALL
= WaitType(name='repo_install', default_length=60)
-
class
galaxy.selenium.navigates_galaxy.
NullTourCallback
[source]
Bases: object
-
handle_step
(step, step_index)[source]
-
galaxy.selenium.navigates_galaxy.
exception_seems_to_indicate_transition
(e)[source]
True if exception seems to indicate the page state is transitioning.
Galaxy features many different transition effects that change the page state over time.
These transitions make it slightly more difficult to test Galaxy because atomic input
actions take an indeterminate amount of time to be reflected on the screen. This method
takes a Selenium assertion and tries to infer if such a transition could be the root
cause of the exception. The methods that follow use it to allow retrying actions during
transitions.
Currently the two kinds of exceptions that we say may indicate a transition are
StaleElement exceptions (a DOM element grabbed at one step is no longer available)
and “not clickable” exceptions (so perhaps a popup modal is blocking a click).
-
galaxy.selenium.navigates_galaxy.
retry_call_during_transitions
(f, attempts=10, sleep=0.1, exception_check=<function exception_seems_to_indicate_transition>)[source]
-
galaxy.selenium.navigates_galaxy.
retry_during_transitions
(f, attempts=10, sleep=0.1, exception_check=<function exception_seems_to_indicate_transition>)[source]
-
class
galaxy.selenium.navigates_galaxy.
NavigatesGalaxy
[source]
Bases: galaxy.selenium.has_driver.HasDriver
Class with helpers methods for driving components of the Galaxy interface.
In most cases, methods for interacting with Galaxy components that appear in
multiple tests or applications should be refactored into this class for now.
Keep in mind that this class is used outside the context of TestCase
s as
well - so some methods more explicitly related to test data or assertion checking
may make more sense in SeleniumTestCase for instance.
Some day this class will likely be split up into smaller mixins for particular
components of Galaxy, but until that day the best practice is to prefix methods
for driving or querying the interface with the name of the component or page
the method operates on. These serve as pseudo-namespaces until we decompose this
class. For instance, the method for clicking an option in the workflow editor is
workflow_editor_click_option instead of click_workflow_editor_option.
-
default_password
= '123456'
-
wait_types
alias of galaxy.selenium.navigates_galaxy.WAIT_TYPES
-
get
(url='')[source]
-
property
navigation
-
property
components
-
wait_length
(wait_type)[source]
-
sleep_for
(wait_type)[source]
-
sleep_for_seconds
(duration)[source]
-
timeout_for
(**kwds)[source]
-
home
()[source]
-
trs_search
()[source]
-
trs_by_id
()[source]
-
switch_to_main_panel
()[source]
-
local_storage
(key, value)[source]
-
main_panel
()[source]
-
api_get
(endpoint, data=None, raw=False)[source]
-
api_post
(endpoint, data=None)[source]
-
api_delete
(endpoint, raw=False)[source]
-
get_galaxy_session
()[source]
-
selenium_to_requests_cookies
()[source]
-
history_panel_name_element
()[source]
-
history_panel_name
()[source]
-
make_accessible_and_publishable
()[source]
-
history_contents
(history_id=None, view='summary', datasets_only=True)[source]
-
current_history
()[source]
-
current_history_id
()[source]
-
latest_history_item
()[source]
-
wait_for_history
(assert_ok=True)[source]
-
history_panel_create_new_with_name
(name)[source]
-
history_panel_create_new
()[source]
Click create new and pause a bit for the history to begin to refresh.
-
history_panel_wait_for_hid_ok
(hid, allowed_force_refreshes=0)[source]
-
history_panel_item_component
(history_item=None, hid=None)[source]
-
history_panel_wait_for_hid_visible
(hid, allowed_force_refreshes=0)[source]
-
hid_to_history_item
(hid, current_history_id=None)[source]
-
history_item_wait_for
(history_item_selector, allowed_force_refreshes)[source]
-
history_panel_wait_for_history_loaded
()[source]
-
history_panel_wait_for_hid_hidden
(hid)[source]
-
history_panel_wait_for_hid_state
(hid, state, allowed_force_refreshes=0)[source]
-
published_grid_search_for
(search_term=None)[source]
-
get_logged_in_user
()[source]
-
get_api_key
(force=False)[source]
-
get_user_id
()[source]
-
is_logged_in
()[source]
-
submit_login
(email, password=None, assert_valid=True, retries=0)[source]
-
register
(email=None, password=None, username=None, confirm=None, assert_valid=True)[source]
-
wait_for_logged_in
()[source]
-
click_center
()[source]
-
perform_upload
(test_path, **kwd)[source]
-
perform_upload_of_pasted_content
(paste_data, **kwd)[source]
-
upload_list
(test_paths, name='test', ext=None, genome=None, hide_source_items=True)[source]
-
upload_pair
(test_paths, name='test', ext=None, genome=None, hide_source_items=True)[source]
-
upload_paired_list
(test_paths, name='test', ext=None, genome=None, hide_source_items=True)[source]
-
upload_tab_click
(tab)[source]
-
upload_start_click
()[source]
-
upload_set_collection_type
(collection_type)[source]
-
upload_start
(tab_id='regular')[source]
-
upload_build
(tab='collection')[source]
-
upload_queue_local_file
(test_path, tab_id='regular')[source]
-
upload_paste_data
(pasted_content, tab_id='regular')[source]
-
upload_rule_start
()[source]
-
upload_rule_build
()[source]
-
upload_rule_set_data_type
(type_description)[source]
-
upload_rule_set_input_type
(input_description)[source]
-
upload_rule_set_dataset
(row=1)[source]
-
rule_builder_set_collection_name
(name)[source]
-
rule_builder_set_extension
(extension)[source]
-
rule_builder_filter_count
(count=1)[source]
-
rule_builder_sort
(column_label, screenshot_name=None)[source]
-
rule_builder_add_regex_groups
(column_label, group_count, regex, screenshot_name)[source]
-
rule_builder_add_regex_replacement
(column_label, regex, replacement, screenshot_name=None)[source]
-
rule_builder_add_value
(value, screenshot_name=None)[source]
-
rule_builder_remove_columns
(column_labels, screenshot_name=None)[source]
-
rule_builder_concatenate_columns
(column_label_1, column_label_2, screenshot_name=None)[source]
-
rule_builder_split_columns
(column_labels_1, column_labels_2, screenshot_name=None)[source]
-
rule_builder_swap_columns
(column_label_1, column_label_2, screenshot_name)[source]
-
rule_builder_rule_editor
(rule_type)[source]
-
rule_builder_set_mapping
(mapping_type, column_label, screenshot_name=None)[source]
-
rule_builder_set_source
(json)[source]
-
rule_builder_enter_source_text
(json)[source]
-
workflow_editor_click_option
(option_label)[source]
-
workflow_editor_click_options
()[source]
-
workflow_editor_click_run
()[source]
-
workflow_editor_click_save
()[source]
-
navigate_to_histories_page
()[source]
-
navigate_to_user_preferences
()[source]
-
navigate_to_invocations
()[source]
-
admin_open
()[source]
-
select_dataset_from_lib_import_modal
(filenames)[source]
-
create_new_library
(login=True)[source]
-
libraries_open
()[source]
-
libraries_open_with_name
(name)[source]
-
libraries_index_table_elements
()[source]
-
libraries_index_create
(name)[source]
-
libraries_index_click_search
()[source]
-
libraries_index_sort_selector
()[source]
-
libraries_index_sort_click
()[source]
-
libraries_index_search_for
(text)[source]
-
libraries_folder_create
(name)[source]
-
libraries_click_dataset_import
()[source]
-
libraries_dataset_import
(btn)[source]
-
libraries_dataset_import_from_history_select
(to_select_items)[source]
-
libraries_dataset_import_from_history_click_ok
(wait=True)[source]
-
libraries_table_elements
()[source]
-
populate_library_folder_from_import_dir
(library_name, filenames)[source]
-
navigate_to_new_library
(login=True)[source]
-
wait_for_overlays_cleared
()[source]
Wait for modals and Toast notifications to disappear.
-
clear_tooltips
()[source]
-
workflow_index_open
()[source]
-
workflow_index_table_elements
()[source]
-
workflow_index_table_row
(workflow_index=0)[source]
-
workflow_index_column_text
(column_index, workflow_index=0)[source]
-
workflow_index_click_search
()[source]
-
workflow_index_search_for
(search_term=None)[source]
-
workflow_index_click_import
()[source]
-
workflow_index_rename
(new_name, workflow_index=0)[source]
-
workflow_index_name
(workflow_index=0)[source]
Get workflow name for workflow_index’th row.
-
workflow_click_option
(workflow_selector, workflow_index=0)[source]
-
select_dropdown_item
(option_title)[source]
-
workflow_index_click_option
(option_title, workflow_index=0)[source]
-
workflow_index_click_tag_display
(workflow_index=0)[source]
-
workflow_index_tags
(workflow_index=0)[source]
-
workflow_import_submit_url
(url)[source]
-
workflow_sharing_click_publish
()[source]
-
tagging_add
(tags, auto_closes=True, parent_selector='')[source]
-
workflow_run_submit
()[source]
-
tool_open
(tool_id, outer=False)[source]
-
tool_parameter_div
(expanded_parameter_id)[source]
-
tool_parameter_edit_rules
(expanded_parameter_id='rules')[source]
-
tool_set_value
(expanded_parameter_id, value, expected_type=None, test_data_resolver=None)[source]
-
tool_form_generate_tour
()[source]
-
tool_form_execute
()[source]
-
click_masthead_user
()[source]
-
click_masthead_shared_data
()[source]
-
click_masthead_workflow
()[source]
-
click_button_new_workflow
()[source]
-
wait_for_sizzle_selector_clickable
(selector)[source]
-
click_history_options
()[source]
-
click_history_option
(option_label)[source]
-
history_click_create_new
()[source]
-
history_panel_click_copy_elements
()[source]
-
histories_click_advanced_search
()[source]
-
histories_get_history_names
()[source]
-
history_panel_add_tags
(tags)[source]
-
history_panel_rename
(new_name)[source]
-
history_panel_click_to_rename
()[source]
-
history_panel_refresh_click
()[source]
-
history_panel_multi_operations_show
()[source]
-
history_panel_muli_operation_select_hid
(hid)[source]
-
history_panel_multi_operation_action_click
(action)[source]
-
history_multi_view_display_collection_contents
(collection_hid, collection_type='list')[source]
-
history_panel_item_available_visualizations_elements
(hid)[source]
-
history_panel_item_get_nametags
(hid)[source]
-
history_panel_item_available_visualizations
(hid)[source]
-
history_panel_item_click_visualization
(hid, visualization_name)[source]
-
history_panel_item_selector
(hid, wait=False)[source]
-
modal_body_selector
()[source]
-
history_panel_item_body_component
(hid, wait=False)[source]
-
hda_click_primary_action_button
(hid, button_key)[source]
-
history_panel_click_item_title
(hid, **kwds)[source]
-
history_panel_ensure_showing_item_details
(hid)[source]
-
history_panel_item_showing_details
(hid)[source]
-
collection_builder_set_name
(name)[source]
-
collection_builder_hide_originals
()[source]
-
collection_builder_create
()[source]
-
collection_builder_clear_filters
()[source]
-
collection_builder_click_paired_item
(forward_or_reverse, item)[source]
-
logout_if_needed
()[source]
-
logout
()[source]
-
run_tour
(path, skip_steps=None, sleep_on_steps=None, tour_callback=None)[source]
-
tour_wait_for_clickable_element
(selector)[source]
-
tour_wait_for_element_present
(selector)[source]
-
get_tooltip_text
(element, sleep=0, click_away=True)[source]
-
assert_selector_absent_or_hidden_after_transitions
(selector)[source]
Variant of assert_selector_absent_or_hidden that retries during transitions.
In the parent method - the element is found and then it is checked to see
if it is visible. It may disappear from the page in the middle there
and cause a StaleElement error. For checks where we care about the final
resting state after transitions - this method can be used to retry
during those transitions.
-
assert_absent_or_hidden_after_transitions
(selector)[source]
Variant of assert_absent_or_hidden that retries during transitions.
See details above for more information about this.
-
assert_tooltip_text
(element, expected, sleep=0, click_away=True)[source]
-
assert_error_message
(contains=None)[source]
-
assert_warning_message
(contains=None)[source]
-
assert_message
(element, contains=None)[source]
-
assert_no_error_message
()[source]
-
run_tour_step
(step, step_index, tour_callback)[source]
-
wait_for_and_click_selector
(selector)[source]
-
wait_for_and_click
(selector_template)[source]
-
set_history_annotation
(annotation, clear_text=False)[source]
-
ensure_history_annotation_area_displayed
()[source]
-
select2_set_value
(container_selector_or_elem, value, with_click=True, clear_value=False)[source]
-
snapshot
(description)[source]
Test case subclass overrides this to provide detailed logging.
-
exception
galaxy.selenium.navigates_galaxy.
NotLoggedInException
(timeout_exception, user_info, dom_message)[source]
Bases: selenium.common.exceptions.TimeoutException
-
__init__
(timeout_exception, user_info, dom_message)[source]
Initialize self. See help(type(self)) for accurate signature.
galaxy.selenium.sizzle module
Utilities for using sizzle (jQuery-style) selectors with Selenium.
-
galaxy.selenium.sizzle.
find_element_by_sizzle
(driver, sizzle_selector: str)[source]
Finds an element by sizzle selector.
- Parameters
sizzle_selector – The sizzle selector to use when finding element.
-
galaxy.selenium.sizzle.
find_elements_by_sizzle
(driver, sizzle_selector: str)[source]
Finds elements by sizzle selector.
- Parameters
sizzle_selector – The sizzle selector to use when finding elements.
-
galaxy.selenium.sizzle.
sizzle_selector_clickable
(selector)[source]
-
galaxy.selenium.sizzle.
sizzle_presence_of_selector
(selector)[source]
galaxy.selenium.smart_components module
-
class
galaxy.selenium.smart_components.
SmartComponent
(component, has_driver)[source]
Bases: object
Wrap a Component with driver aware methods.
Allows smarter selectors that know how to wait for themselves, test themselves,
click themselves, etc…. More “magic”, but much cleaner usage.
-
__init__
(component, has_driver)[source]
Initialize self. See help(type(self)) for accurate signature.
-
class
galaxy.selenium.smart_components.
SmartTarget
(target, has_driver)[source]
Bases: object
Wrap a Target with driver aware methods.
-
__init__
(target, has_driver)[source]
Initialize self. See help(type(self)) for accurate signature.
-
all
()[source]
-
wait_for_and_click
(**kwds)[source]
-
wait_for_visible
(**kwds)[source]
-
wait_for_clickable
(**kwds)[source]
-
wait_for_text
(**kwds)[source]
-
wait_for_value
(**kwds)[source]
-
property
is_displayed
-
wait_for_absent_or_hidden
(**kwds)[source]
-
wait_for_absent
(**kwds)[source]
-
wait_for_present
(**kwds)[source]
-
assert_absent
(**kwds)[source]
-
assert_absent_or_hidden
(**kwds)[source]
-
assert_absent_or_hidden_after_transitions
(**kwds)[source]
-
has_class
(class_name)[source]
-
wait_for_and_send_keys
(*text)[source]