def locator_should_match_x_times(self, locator, x, message=None, loglevel='TRACE'): """*DEPRECATED in SeleniumLibrary 4.0.*, use `Page Should Contain Element` with ``limit`` argument instead.""" count = len(self.find_elements(locator)) x = int(x) if count != x: if is_falsy(message): message = ("Locator '%s' should have matched %s time%s but " "matched %s time%s." % (locator, x, s(x), count, s(count))) self.ctx.log_source(loglevel) raise AssertionError(message) self.info("Current page contains %s elements matching '%s'." % (count, locator))
def locator_should_match_x_times(self, locator, x, message=None, loglevel="TRACE"): """*DEPRECATED in SeleniumLibrary 4.0.*, use `Page Should Contain Element` with ``limit`` argument instead.""" count = len(self.find_elements(locator)) x = int(x) if count != x: if is_falsy(message): message = ( "Locator '%s' should have matched %s time%s but " "matched %s time%s." % (locator, x, s(x), count, s(count)) ) self.ctx.log_source(loglevel) raise AssertionError(message) self.info("Current page contains %s elements matching '%s'." % (count, locator))
def list_selection_should_be(self, locator, *expected): """Verifies selection list ``locator`` has ``expected`` options selected. It is possible to give expected options both as visible labels and as values. Starting from SeleniumLibrary 3.0, mixing labels and values is not possible. Order of the selected options is not validated. If no expected options are given, validates that the list has no selections. A more explicit alternative is using `List Should Have No Selections`. See the `Locating elements` section for details about the locator syntax. Examples: | `List Selection Should Be` | gender | Female | | | `List Selection Should Be` | interests | Test Automation | Python | """ self.info("Verifying list '%s' has option%s [ %s ] selected." % (locator, s(expected), ' | '.join(expected))) self.page_should_contain_list(locator) options = self._get_selected_options(locator) labels = self._get_labels(options) values = self._get_values(options) if sorted(expected) not in [sorted(labels), sorted(values)]: raise AssertionError("List '%s' should have had selection [ %s ] " "but selection was [ %s ]." % (locator, ' | '.join(expected), self._format_selection(labels, values)))
def locator_should_match_x_times(self, locator, x, message=None, loglevel='INFO'): """Verifies that ``locator`` matches ``x`` number of elements. See the `Locating elements` section for details about the locator syntax. See `Page Should Contain Element` for explanation about ``message`` and ``loglevel`` arguments. """ count = len(self.find_elements(locator)) x = int(x) if count != x: if is_falsy(message): message = ("Locator '%s' should have matched %s time%s but " "matched %s time%s." % (locator, x, s(x), count, s(count))) self.ctx.log_source(loglevel) raise AssertionError(message) self.info("Current page contains %s elements matching '%s'." % (count, locator))
def unselect_from_list_by_label(self, locator, *labels): """Unselects options from selection list ``locator`` by ``labels``. This keyword works only with multi-selection lists. See the `Locating elements` section for details about the locator syntax. """ if not labels: raise ValueError("No labels given.") self.info("Un-selecting options from selection list '%s' by label%s " "%s." % (locator, s(labels), ', '.join(labels))) select = self._get_select_list(locator) if not select.is_multiple: raise RuntimeError("Un-selecting options works only with " "multi-selection lists.") for label in labels: select.deselect_by_visible_text(label)
def unselect_from_list_by_value(self, locator, *values): """Unselects options from selection list ``locator`` by ``values``. This keyword works only with multi-selection lists. See the `Locating elements` section for details about the locator syntax. """ if not values: raise ValueError("No values given.") self.info("Un-selecting options from selection list '%s' by value%s " "%s." % (locator, s(values), ', '.join(values))) select = self._get_select_list(locator) if not select.is_multiple: raise RuntimeError("Un-selecting options works only with " "multi-selection lists.") for value in values: select.deselect_by_value(value)
def select_from_list_by_label(self, locator, *labels): """Selects options from selection list ``locator`` by ``labels``. If more than one option is given for a single-selection list, the last value will be selected. With multi-selection lists all specified options are selected, but possible old selections are not cleared. See the `Locating elements` section for details about the locator syntax. """ if not labels: raise ValueError("No labels given.") self.info("Selecting options from selection list '%s' by label%s %s." % (locator, s(labels), ', '.join(labels))) select = self._get_select_list(locator) for label in labels: select.select_by_visible_text(label)