Пример #1
0
	def wait_for_button(self, button_text, **kwargs):
		logger.info("Waiting for the button %r", button_text)
		self.click_element(
			expand_path('//*[@containsClass="dijitButtonText"][text() = "%s"]')
			% (button_text,),
			**kwargs
		)
Пример #2
0
    def add(self, portalname=None, hostname=None):
        if portalname is None:
            portalname = uts.random_string()

        self.open_add_dialog()

        # FIXME add this to the open_add_dialog() function
        self.selenium.enter_input_combobox('objectType', 'Portal: Portal')
        self.selenium.wait_until_standby_animation_appears_and_disappears()
        self.selenium.click_button('Next')

        self.selenium.wait_until_standby_animation_appears_and_disappears()
        self.selenium.enter_input("name", portalname)
        self.selenium.enter_input('__displayName-0-0', 'en_US')
        self.selenium.enter_input('__displayName-0-1', uts.random_string())

        if hostname is not None:
            self.selenium.click_button(
                'Add'
            )  # FIXME at the moment there is only 1 Add button on the screen
            self.selenium.wait_for_text('Add objects')
            self.selenium.wait_until_standby_animation_appears_and_disappears()
            self.selenium.click_checkbox_of_dojox_grid_entry(hostname)
            self.selenium.click_element(
                expand_path(
                    '//*[@containsClass="dijitDialog"]//*[@containsClass="dijitButtonText"][text()="Add"]'
                ))
            self.selenium.wait_until_all_dialogues_closed()

        self.selenium.click_button(_("Create portal"))
        self.wait_for_main_grid_load()

        return portalname
Пример #3
0
 def click_checkbox_of_dojox_grid_entry(self, name, **kwargs):
     # type: (str, **Any) -> None
     logger.info("Clicking the checkbox of the dojox grid entry  %r", name)
     self.click_element(
         expand_path(
             '//*[@containsClass="dojoxGridCell"][@role="gridcell"][contains(text(), "%s")]/preceding-sibling::*[1]'
         ) % (name, ), **kwargs)
Пример #4
0
 def click_button(self, button_text, xpath_prefix='', **kwargs):
     # type: (str, str, **Any) -> None
     logger.info("Clicking the button %r", button_text)
     xpath = '//*[@containsClass="dijitButtonText"][text() = "%s"]' % (
         button_text, )
     xpath = expand_path(xpath_prefix + xpath)
     self.click_element(xpath, **kwargs)
Пример #5
0
 def click_side_menu_back(self):
     # type: () -> None
     self.click_element(
         expand_path(
             '//*[@containsClass="mobileMenu"]//*[@containsClass="menuSlideHeader"]'
         ))
     time.sleep(0.5)
Пример #6
0
 def click_side_menu_entry(self, text):
     # type: (str) -> None
     self.click_element(
         expand_path(
             '//*[@containsClass="mobileMenu"]//*[@containsClass="menuItem"][contains(text(), "%s")]'
         ) % text)
     time.sleep(0.5)
    def search_module(self, name, do_reload=True):
        # type: (str, bool) -> None
        if do_reload:
            self.driver.get(self.base_url + 'univention/management/?lang=%s' %
                            (self.language, ))

        input_field = self.wait_for_element_by_css_selector(
            '.umcModuleSearch input.dijitInputInner')
        if not input_field.is_displayed():
            self.click_element(
                expand_path(
                    '//*[@containsClass="umcModuleSearchToggleButton"]'))
        limit = 60
        while limit > 0:
            try:
                input_field.clear()
                break
            except selenium_exceptions.ElementNotInteractableException:
                if limit > 1:
                    logger.info(
                        "Item was not interactable, retrying after one second")
                    time.sleep(1)
                    limit -= 1
                else:
                    logger.info("Item was not interactable after 60 seconds.")
                    raise
        input_field.send_keys(name)
        self.wait_for_text(_('Search query'))
 def wait_until_all_standby_animations_disappeared(self, timeout=60):
     # type: (int) -> None
     logger.info("Waiting for all standby animations to disappear.")
     xpath = expand_path(
         '//*[contains(@id, "_Standby_")]//*[@containsClass="umcStandbySvgWrapper"]'
     )
     webdriver.support.ui.WebDriverWait(xpath, timeout).until(
         self.elements_invisible,
         'wait_until_all_standby_animations_disappeared(timeout=%r)' %
         (timeout, ))
	def enter_input_combobox(self, inputname, inputvalue):  # type: (str, str) -> None
		xpath = "//*[@role='combobox' and .//input[@name='{}']]//input[@role='textbox']".format(inputname)
		elems = webdriver.support.ui.WebDriverWait(xpath, 60).until(
			self.get_all_enabled_elements
		)
		if len(elems) != 1:
			logger.warn("Found {!d} input elements instead of one. Try using the first one".format(len(elems)))
		elems[0].clear()
		elems[0].send_keys(inputvalue)
		xpath = expand_path('//*[@containsClass="dijitMenuItem"]/descendant-or-self::node()[contains(text(), "%s")]' % (inputvalue))
		self.wait_until_element_visible(xpath)
		self.click_element(xpath)
Пример #10
0
	def search_module(self, name, do_reload=True):
		if do_reload:
			self.driver.get(self.base_url + 'univention/management/?lang=%s' % (self.language,))

		input_field_xpath = expand_path('//*[@containsClass="umcLiveSearch"]//input[@containsClass="dijitInputInner"]')
		self.wait_until(
			expected_conditions.presence_of_element_located(
				(webdriver.common.by.By.XPATH, input_field_xpath)
			)
		)
		input_field = self.driver.find_element_by_xpath(input_field_xpath)
		input_field.clear()
		input_field.send_keys(name)
		self.wait_for_text(_('Search query'))
 def wait_until_standby_animation_appears(self, timeout=5):
     # type: (int) -> None
     logger.info("Waiting for standby animation to appear.")
     xpath = expand_path(
         '//*[contains(@id, "_Standby_")]//*[@containsClass="umcStandbySvgWrapper"]'
     )
     try:
         webdriver.support.ui.WebDriverWait(xpath, timeout).until(
             self.elements_visible,
             'wait_until_standby_animation_appears(timeout=%r)' %
             (timeout, ))
     except selenium_exceptions.TimeoutException:
         logger.info(
             "No standby animation appeared during timeout. Ignoring")
     else:
         logger.info("Found standby animation")
Пример #12
0
 def close_side_menu(self):
     self.click_element(
         expand_path(
             '//*[@containsClass="mobileMenu"]//*[@containsClass="umcMobileMenuToggleButton"]'
         ))
     time.sleep(0.5)
Пример #13
0
 def click_app_tile(self, app_name):
     # type: (str) -> None
     self.selenium.click_element(
         expand_path('//*[@containsClass="umcTile__name"][text() = "%s"]' %
                     (app_name, )))
Пример #14
0
 def close_side_menu(self):
     # type: () -> None
     self.click_element(expand_path('//*[@containsClass="umcMenuButton"]'))
     time.sleep(0.5)