def get_text(self): Logger.info("get_text: Receiving text element '" + self.get_name() + "'") self.wait_for_is_present() text = self.find_element().text Logger.info("get_text: Received text '" + text + "'") return text
def send_keys_without_click(self, key): Logger.info("send_keys: Change text for an item '" + self.get_name() + " " + self.__class__.__name__ + "'" + "' to text => '" + key + "'") self.wait_for_is_visible() element = self.wait_for_clickable() element.send_keys(key)
def set_up_driver(self, selenoid, browser_key, lang, capabilities=None, is_incognito=False, enable_performance_logging=False, test_name=None): Logger.info('Create driver for browser ' + browser_key) if browser_key in self.__web_driver: raise ValueError( "Browser with key '{}', was created.".format(browser_key)) self.__web_driver[browser_key] = \ BrowserFactory.get_browser_driver(browser_key=browser_key, lang=lang, capabilities=capabilities, is_incognito=is_incognito, enable_performance_logging=enable_performance_logging, test_name=test_name, selenoid=selenoid) self.__web_driver[browser_key].implicitly_wait( Waits.IMPLICITLY_WAIT_SEC) self.__web_driver[browser_key].set_page_load_timeout( Waits.PAGE_LOAD_TIMEOUT_SEC) self.__web_driver[browser_key].set_script_timeout( Waits.SCRIPT_TIMEOUT_SEC) self.__main_window_handle = self.__web_driver[ browser_key].current_window_handle self.select_browser(browser_key)
def switch_new_window(self, logged_page_name=""): Logger.info("Switch to new window %s" % logged_page_name) handles = self.get_driver().window_handles if len(handles) <= 1: raise NoSuchWindowException( "There is no window. Count windows is %s" % len(handles)) self.get_driver().switch_to_window(handles[-1])
def get_value(self): self.wait_for_is_present() value = super(TextBox, self).get_attribute("value") Logger.info("Method get_value in item " + self.get_name() + " " + self.get_element_type() + " получил значение: " + str(value)) return value
def set_session_screen_dir(): lock = threading.Lock() lock.acquire() try: if not os.path.exists(Screenshooter.__screen_dir): Logger.info("Creating a directory for storing screenshots: " + Screenshooter.__screen_dir) os.makedirs(Screenshooter.__screen_dir) new_screen_path = os.path.join( Screenshooter.__screen_dir, "Session_" + DatetimeUtil.get_str_datetime( screenshots.FORMAT_DATETIME_FOR_SCREEN)) if Screenshooter.__session_dir is None and not os.path.exists( new_screen_path): Screenshooter.__session_dir = new_screen_path else: Screenshooter.__session_dir = new_screen_path + "." + str( datetime.now().microsecond) Logger.info("Creating a directory " + new_screen_path) os.makedirs(Screenshooter.__session_dir) finally: lock.release()
def switch_to_window(self, window_handle=None): if window_handle is None: window_handle = self.__main_window_handle Logger.info("Switch to window %s" % window_handle) try: self.get_driver().switch_to_window(window_handle) except NoSuchWindowException: Logger.error("Window with name not found %s" % window_handle)
def take_screenshot(): screen_name = Screenshooter.get_screen_file_name() save_screen_path = os.path.join(Screenshooter.__session_dir, screen_name) Logger.info("Screenshot capture to file " + screen_name) Browser.get_browser().get_driver().save_screenshot(save_screen_path) result_image = Image.open(save_screen_path) Logger.info(VisualRecord(screen_name, result_image))
def click(self): Logger.info("click: Click on an item '" + self.get_name() + " " + self.__class__.__name__ + "'") def func(): self.find_element().click() return True self.wait_for(func)
def get_displayed_elements(condition, locator): element_size = len(Browser.get_browser().get_driver().find_elements(condition, locator)) result_elements = [] try: for ele_number in range(1, element_size + 1): element_locator = "({locator})[{number}]".format(locator=locator, number=ele_number) Logger.info("Search for an item with a locator " + element_locator) element = WebDriverWait(Browser.get_browser().get_driver(), Waits.EXPLICITLY_WAIT_SEC).until( ec.visibility_of_element_located((condition, element_locator))) result_elements.append(element) except TimeoutException: error_msg = "item with locator was not found" Logger.error(error_msg) raise TimeoutException(error_msg) return result_elements
def refresh_page(self): Logger.info("Page Refresh " + self.page_name) Browser.get_browser().refresh_page()
def wait_for_page_opened(self): Logger.info("Waiting for page to load " + self.page_name + " and visibility of its identifying element") self.wait_page_to_load() Label(self.search_condition, self.locator, self.page_name).wait_for_is_visible()
def is_opened(self): Logger.info("Check if the page is open " + self.page_name) self.wait_page_to_load() return Browser.get_browser().is_wait_successful( Label(self.search_condition, self.locator, self.page_name).wait_for_is_visible)
def send_alert_text(self, text): Logger.info(f"Send to alert text {text}") self.switch_to_alert().send_keys(text)
def scroll_by_script(self): self.wait_for_is_visible() Logger.info("Scroll to item '" + self.get_name() + "'") Browser.get_browser().execute_script(scripts_js.SCROLL_INTO_VIEW, self.find_element())
def get_alert_text(self): Logger.info("Return text from alert") return self.switch_to_alert().text
def get_cookie(self, name): Logger.info("Get cookie with name: " + name) return self.get_driver().get_cookie(name=name)
def refresh_page(self): Logger.info("Reload page") self.get_driver().refresh()
def set_url(self, url): Logger.info("Change url page on " + url) self.get_driver().get(url)
def close(self, page_name=""): if self.get_driver() is not None: Logger.info("CLose page %s " % page_name) self.get_driver().close()
def quit(self, browser_key=BrowserConfig.BROWSER): browser_inst = self.__web_driver.get(browser_key) if browser_inst is not None: Logger.info("Stop driver work") browser_inst.quit() self.__web_driver.pop(browser_key, None)
def dismiss_alert(self): Logger.info("Close alert") self.switch_to_alert().dismiss()
def get_attribute(self, attr): Logger.info("get_attribute: Get attribute " + attr + " for item '" + self.get_name() + "'") self.wait_for_is_visible() return self.find_element().get_attribute(name=attr)
def switch_to_alert(self): Logger.info("Switch to alert") time.sleep(5) return self.get_driver().switch_to.alert
def get_css_value(self, property_name): Logger.info("get_attribute: Get attribute CSS" + property_name + " for item '" + self.get_name() + "'") self.wait_for_is_visible() return self.find_element().value_of_css_property(property_name=property_name)
def switch_to_default_content(self): Logger.info("Switch to main frame") self.get_driver().switch_to_default_content()
def double_click(self): self.wait_for_is_visible() Logger.info("double_click: Double click on an item '" + self.get_name() + "'") ActionChains(Browser.get_browser().get_driver()).double_click(self.find_element()).perform()
def wait_page_to_load(self): Logger.info("Waiting for page to load " + self.page_name + " using js") Browser.get_browser().wait_for_page_to_load()
def get_cookies(self): Logger.info("Getting all cookies") return self.get_driver().get_cookies()
def accept_alert(self): Logger.info("Accept alert") self.switch_to_alert().accept()