def mouse_hover(element): _run_wait_hook() driver = get_driver() webelement = driver.find(element) step_message = 'Mouse hover element \'{0}\''.format(webelement.name) logger.logger.info(step_message) ActionChains(driver).move_to_element(webelement).perform()
def send_keys(element, text): _run_wait_hook() webelement = get_driver().find(element) step_message = 'Write \'{0}\' in element {1}'.format(text, webelement.name) webelement.send_keys(text) logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step'])
def click(element): _run_wait_hook() webelement = get_driver().find(element) step_message = 'Click {0}'.format(webelement.name) webelement.click() logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step'])
def verify_text(text): _run_wait_hook() driver = get_driver() step_message = 'Verify \'{0}\' is present in page'.format(text) logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step']) if text not in driver.page_source: raise TextNotPresent( "Text '{}' was not found in the page".format(text))
def verify_is_visible(element): _run_wait_hook() webelement = get_driver().find(element) step_message = 'Verify the element \'{0}\' is visible'.format( webelement.name) logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step']) if not webelement.is_displayed(): raise Exception('Element is not visible')
def verify_exists(element): _run_wait_hook() step_message = 'Verify that the element exists' logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step']) try: webelement = get_driver().find(element, timeout=1) except: raise ElementNotFound('Element {} does not exist'.format(element))
def select_by_value(element, value): _run_wait_hook() webelement = get_driver().find(element) step_message = 'Select \'{0}\' value from element {1}'.format( value, webelement.name) select = selenium.webdriver.support.select.Select(webelement) select.select_by_value(value) logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step'])
def press_key(element, key): step_message = 'Press key: {}'.format(key) logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step']) webelement = get_driver().find(element) if key == 'RETURN' or key == 'ENTER': webelement.send_keys(Keys.RETURN) else: raise Exception('Key value {} is invalid'.format(key))
def verify_text_in_element(element, text): _run_wait_hook() webelement = get_driver().find(element) step_message = 'Verify element \'{0}\' contains text \'{1}\''.format( webelement.name, text) logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step']) if text not in webelement.text: raise TextNotPresent( "Text \'{0}\' was not found in element {1}".format( text, webelement.name))
def verify_selected_option(element, text): _run_wait_hook() webelement = get_driver().find(element) select = selenium.webdriver.support.select.Select(webelement) step_message = 'Verify selected option of element \'{0}\' is \'{1}\''.format( webelement.name, text) logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step']) if not select.first_selected_option.text == text: raise TextNotPresent('Option selected in element \'{0}\' ' 'is not {1}'.format(webelement.name, text))
def wait_for_element_enabled(element, timeout=20): logger.logger.info('Waiting for element {} to be enabled'.format(element)) start_time = time.time() timed_out = False webelement = get_driver().find(element) enabled = webelement.is_enabled() while not enabled: logger.logger.debug('Element is not enabled, waiting..') time.sleep(0.5) enabled = webelement.is_displayed() if time.time() - start_time > timeout: timed_out = True
def verify_not_exists(element): _run_wait_hook() step_message = 'Verify that the element' logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step']) try: webelement = get_driver().find(element) if webelement: raise Exception('Element {} exists and should not'.format( webelement.name)) except ElementNotFound: pass
def wait_for_element_visible(element, timeout=20): try: timeout = int(timeout) except: raise Exception('Timeout should be digits only') _run_wait_hook() logger.logger.info('Waiting for element {} to be visible'.format(element)) start_time = time.time() timed_out = False webelement = get_driver().find(element) while not webelement.is_displayed() and not timed_out: logger.logger.debug('Element is not visible, waiting..') time.sleep(0.5) if time.time() - start_time > timeout: timed_out = True
def capture(message=''): _run_wait_hook() logger.logger.info('Take screenshot {}'.format(message)) driver = get_driver() # print('SHOULD SAVE SCREENSHOT IN', core.report_directory) # store img in memory and save to disk when at the end # when the report is generated # Note: this solution uses pillow # img = Image.open(io.BytesIO(driver.get_screenshot_as_png())) # img_id = str(uuid.uuid4())[:8] # logger.screenshots[img_id] = img # store image at this point, the target directory is already # created since the beginning of the test, stored in golem.gore.report_directory img_id = str(uuid.uuid4())[:8] img_path = os.path.join(core.report_directory, '{}.png'.format(img_id)) driver.get_screenshot_as_file(img_path) full_message = '{0}__{1}'.format(message, img_id) step(full_message)
def navigate(url): step_message = 'Navigate to: \'{0}\''.format(url) driver = get_driver() driver.get(url) logger.logger.info(step_message) _capture_or_add_step(step_message, core.settings['screenshot_on_step'])
def close(): logger.logger.info('Close driver') driver = get_driver() driver.quit() core.reset_driver_object()