def after_find(self, by, value, driver): str_ = 'Element found: by-{0}, value-{1}'.format(by, value) if value not in ['modalOverlay', 'dvSlidingMessageControl']: actions.wait_element_clickable(driver=driver, by=by, by_target=value) common_tools.save_log(str_) pass
def wait_number_of_windows_to_be(driver, report): smart_pass = error_occurred_handle(driver, report) if smart_pass: try: element = WebDriverWait(driver, settings.new_window_timeout).until(EC.number_of_windows_to_be(2)) str_ = 'Wait until report view window is open: ' + report + '=pass' common_tools.save_log(str_) except Exception as e: str_ = 'Wait until report view window is open: ' + report + '=Fail: ' + e.__str__() common_tools.save_log(str_) smart_pass = False else: pass return smart_pass
def wait_number_of_windows_to_be(driver, report): smart_pass = error_occurred_handle(driver, report) if smart_pass: try: element = WebDriverWait(driver, settings.timeout).until( EC.number_of_windows_to_be(2)) str_ = 'Wait until report view window is open: ' + report + '=pass' print() common_tools.save_log(str_) except Exception as e: str_ = 'Wait until report view window is open: ' + report + '=Fail: ' + e.__str__( ) common_tools.save_log(str_) smart_pass = False else: pass return smart_pass
def wait_element_clickable(driver, by, by_target): str_ = 'Wait until element is clickable, by: {0}, value: {1}'.format(by, by_target) common_tools.save_log(str_) try: element = WebDriverWait(driver, settings.timeout).until( EC.element_to_be_clickable((by, by_target)) ) str_ = 'Element is clickable, by: {0}, value: {1}'.format(by, by_target) common_tools.save_log(str_) except Exception as e: str_ = 'Wait until element is clickable: exception occurred, by: {0}, value: {1}'.format(by, by_target) common_tools.save_log(str_) common_tools.save_log(e.__str__())
def init_driver(): common_tools.save_log(statement.start_to_init_browser) try: profile = webdriver.FirefoxProfile() profile.set_preference('browser.download.dir', 'c:\\') profile.set_preference('browser.download.folderList', 2) profile.set_preference('browser.download.manager.showWhenStarting', False) profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf') driver_fire = webdriver.Firefox(timeout=settings.browser_launch, firefox_profile=profile) driver = SmartEventFiringWebDriver( driver=driver_fire, event_listener=listener.SMART_Listener()) except: common_tools.save_log(statement.start_to_init_browser_fail) return driver
def wait_element_clickable(driver, by, by_target): str_ = 'Wait until element is clickable, by: {0}, value: {1}'.format( by, by_target) common_tools.save_log(str_) try: element = WebDriverWait(driver, settings.timeout).until( EC.element_to_be_clickable((by, by_target))) str_ = 'Element is clickable, by: {0}, value: {1}'.format( by, by_target) common_tools.save_log(str_) except Exception as e: str_ = 'Wait until element is clickable: exception occurred, by: {0}, value: {1}'.format( by, by_target) common_tools.save_log(str_) common_tools.save_log(e.__str__())
def wait_element_visibility(driver, by, by_target): str_ = 'Wait until element is visible, by: {0}, by_target: {1}'.format( by, by_target) common_tools.save_log(str_) try: WebDriverWait(driver, settings.timeout).until( EC.visibility_of_element_located((by, by_target))) str_ = 'Element is visible, by: {0}, value: {1}'.format(by, by_target) common_tools.save_log(str_) except Exception as e: str_ = 'Element is not visible, by: {0}, value: {1}'.format( by, by_target) common_tools.save_log(str_) common_tools.save_log(e.__str__())
def wait_document_completed(driver): smart_pass = True for i in range(1, settings.login_timeout): status = driver.execute_script('return document.readyState') str_ = 'Wait until paged loaded fully---wait: ' + i.__str__() + 's ' + status common_tools.save_log(str_) if ('complete' == status): smart_pass = True break else: smart_pass = False time.sleep(1) if not smart_pass: str_ = 'Wait until paged loaded fully, page takes too long to load, report name: {0}, seconds: {1}'.format( driver.title, settings.login_timeout) common_tools.save_log(str_) else: pass return smart_pass
def wait_element_visibility(driver, by, by_target): str_ = 'Wait until element is visible, by: {0}, by_target: {1}'.format(by, by_target) common_tools.save_log(str_) wait = False try: WebDriverWait(driver, settings.timeout).until( EC.visibility_of_element_located((by, by_target))) str_ = 'Element is visible, by: {0}, value: {1}'.format(by, by_target) common_tools.save_log(str_) wait = True except Exception as e: str_ = 'Element is not visible, by: {0}, value: {1}'.format(by, by_target) common_tools.save_log(str_) common_tools.save_log(e.__str__()) return wait
def wait_document_completed(driver): smart_pass = True for i in range(1, settings.login_timeout): status = driver.execute_script('return document.readyState') str_ = 'Wait until paged loaded fully---wait: ' + i.__str__( ) + 's ' + status common_tools.save_log(str_) if ('complete' == status): smart_pass = True break else: smart_pass = False time.sleep(1) if not smart_pass: str_ = 'Wait until paged loaded fully, page takes too long to load, report name: {0}, seconds: {1}'.format( driver.title, settings.login_timeout) common_tools.save_log(str_) else: pass return smart_pass
def wait_report_title_contains(driver, report): smart_pass = error_occurred_handle(driver, report) if smart_pass: try: str_ = 'Report window title contains: ' + driver.title common_tools.save_log(str_) WebDriverWait(driver, settings.report_generate_timeout).until(EC.title_contains(report)) str_ = 'Wait until report window title contains: ' + report + '= Pass' common_tools.save_log(str_) except Exception as e: str_ = 'Wait until report window title contains: ' + report + '= Fail: ' + e.__str__() common_tools.save_log(str_) smart_pass = False else: pass return smart_pass
def wait_report_title_contains(driver, report): smart_pass = error_occurred_handle(driver, report) if smart_pass: try: str_ = 'Report window title contains: ' + driver.title common_tools.save_log(str_) WebDriverWait(driver, settings.report_generate_timeout).until( EC.title_contains(report)) str_ = 'Wait until report window title contains: ' + report + '= Pass' common_tools.save_log(str_) except Exception as e: str_ = 'Wait until report window title contains: ' + report + '= Fail: ' + e.__str__( ) common_tools.save_log(str_) smart_pass = False else: pass return smart_pass
def wait_element_invisibility(driver, by, by_target): str_ = 'Wait until element is invisible, by: {0}, by_target: {1}'.format(by, by_target) common_tools.save_log(str_) WebDriverWait(driver, settings.timeout).until( EC.invisibility_of_element_located((by, by_target)))
def before_navigate_to(self, url, driver): str_ = 'Navigating to url: ' + url common_tools.save_log(str_)
def wait_element_presence(driver, by, by_target): str_ = 'wait_element_presence by: {0}, by_target: {1}'.format(by, by_target) common_tools.save_log(str_) element = WebDriverWait(driver, settings.timeout).until( EC.presence_of_element_located((by, by_target)) )
def on_exception(self, exception, driver): str_ = '----------Listening: exception occurred----------' common_tools.save_log(str_) common_tools.save_log(exception.__str__())
def after_close(self, driver): str_ = 'close page: {0}'.format(driver.title) common_tools.save_log(str_)
def init_driver(): common_tools.save_log('open browser: Firefox') return webdriver.Firefox(timeout=settings.browser_launch)
def after_execute_script(self, script, driver): if 'initMouseEvent' in script: str_ = 'Report name is clicked' common_tools.save_log(str_) common_tools.save_log(statement.para_separator)
def after_navigate_to(self, url, driver): str_ = 'Navigated to url: ' + url common_tools.save_log(str_)
def after_click(self, element, driver): str_ = 'Element Clicked' common_tools.save_log(str_) common_tools.save_log(statement.para_separator)
def test_legacy_reports(self, report_name): # report_name = 'IPSTDRG Clinical Profile' try: self.result_report.report_id = common_tools.get_report_id(report_name) self.result_report.report_name = report_name common_tools.save_log(str_='Report name: >>>>>' + report_name) if 'Evaluation & Management Clinical Profile' in report_name: report_name = 'Management Clinical Profile' report_name = reports.Reports(self.driver).find_report_double_click(report_name) self.report_name = report_name # wait dvCustomSearchPopup wait = actions.wait_element_visibility(self.driver, By.ID, 'dvCustomSearchPopup') if wait == False: # Click View Report button btn_view_report_id = 'btnViewReport' view_report_btn = self.driver.find_element_(By.ID, btn_view_report_id) view_report_btn.click() time.sleep(1) no_default_filter = self.driver.find_element_(By.ID, 'dvSlidingMessageControl').value_of_css_property( 'display') if no_default_filter in 'block': # click saved search if report_name in self.saved_searches.keys(): str_ = 'Click saved search for report - ' + report_name common_tools.save_log(str_) # self.result_report.report_name_saved_search = 'Jon_automation_test_pls_do_not_change_it' saved_search = self.driver.find_element_(By.ID, 'showHideSearchSavedHeader') saved_search_selected = self.driver.find_element_(By.XPATH, '//div[text()="' + self.saved_searches.get( report_name) + '"]') saved_search_selected.click() # else: # add one filter # reports.ReportAssist.handle_no_default_filter(self.driver, report_name) # click "+" icon # add_icon = self.driver.find_element_(By.ID, 'btnInsertClause') # add_icon.click() # # # add filters besides the default ones # self.driver.find_element_(By.ID, 'customsearch-grid-div') # self.driver.find_element_(By.XPATH, # './/div[@id="customsearch-grid-div"]/div/div[@class="k-grid-content"]/table/tbody/tr') # # click the last row of the CS # field_last = self.driver.find_element_(By.XPATH, # './/div[@id="customsearch-grid-div"]/div/div[@class="k-grid-content"]/table/tbody/tr[last()]/td[3]/span') # field_last.click() # # # 遍历fileds # fields_lis = self.driver.find_elements_(By.XPATH, # '//div[@class="k-animation-container"][last()]/div/ul/li') # print(fields_lis.__len__()) # for li in fields_lis: # print(li.text) # # # click filter name # field_name = 'Flag Number - Primary' # field_xpath = '//div[@class="k-animation-container"][last()]/div/ul/li[text()="' + field_name + '"]' # field_name_selected = self.driver.find_element_(By.XPATH, field_xpath) # field_name_selected.click() # # # click operator # operator_value = '<> Not Equal' # operator = self.driver.find_element_(By.XPATH, locators.ReportLocators.operator_xpath) # operator.click() # operator_selected = self.driver.find_element_(By.XPATH, # locators.ReportLocators.operator_selected.format( # operator_value)) # # '//div[@class="k-animation-container"][last()]/div/ul/li[text()="' + operator_value + '"]') # operator_selected.click() # # value # value_input_xpath_ = './/div[@id="customsearch-grid"]/div[@class="k-grid-content"]/table/tbody/tr[last()]/td[5]/div/div[6]/input' # field_name_value = 'test' # # value_input_xpath = value_input_xpath_ # value_input = self.driver.find_element_(By.XPATH, value_input_xpath) # value_input.click() # value_input.send_keys(field_name_value) view_report_btn.click() else: pass if(self.browser != 3): print('!=3') # Go to view report window actions.wait_number_of_windows_to_be(self.driver, report_name) view_report_window = self.driver.window_handles[1] self.driver.switch_to.window(view_report_window) time.sleep(5) print(self.driver.current_window_handle) # 'Error Occurred' self.assertNotIn('Error Occurred', self.driver.page_source.__str__(), msg=report_name + statement.error_occurred_report_generate) # System.OutOfMemoryException if 'System.OutOfMemoryException' in self.driver.page_source.__str__(): pass # export report RdlViewer_ctl01_ctl05_ctl00 RdlViewer_ctl01_ctl05_ctl00 # RdlViewer_ctl01_ctl05_ctl00 # format_list_xpath = '//select[@id="RdlViewer_ctl01_ctl05_ctl00"]' # format_list = self.driver.find_element_(By.XPATH, format_list_xpath) # format_list = self.driver.find_element(By.XPATH, format_list_xpath) # if report_name == 'Case Listing': # format_list = self.driver.find_element_(By.ID, 'RdlViewer_ctl01_ctl05_ctl00') # else: # format_list = self.driver.find_element_(By.ID, 'RW_ReportToolbar_ExportGr_FormatList_DropDownList') # format_list.click() # # select a formt # PDF=self.driver.find_element(By.XPATH, "//option[text()='Acrobat (PDF) file']") # PDF.click() # expoert_btn = self.driver.find_element_(By.LINK_TEXT, 'Export') # expoert_btn = driver.find_element_by_id('RW_ReportToolbar_ExportGr_Export') # expoert_btn.click() # assert wait_until_title_contains if actions.wait_document_completed(self.driver): self.result_report.report_test_result = reports.Reports.wait_until_title_contains(self, report_name=report_name) else: self.result_report.report_test_result = False else: # wait for ie to take full screenshot # Go to view report window for IE # actions.wait_number_of_windows_to_be(self.driver, report_name) time.sleep(10) self.driver.switch_to.default_content() temparr = self.driver.window_handles print(len(temparr)) print(temparr) self.driver.switch_to_window(temparr[0]) time.sleep(settings.report_generate_for_IE11_timeout) self.result_report.report_test_result = True else: time.sleep(10) # 'Error Occurred' self.assertNotIn('Error Occurred', self.driver.page_source.__str__(), msg=report_name + statement.error_occurred_report_generate) except Exception as e: print('EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE') print(e.__str__()) print(traceback.print_exc()) str_ = '----------Listening: exception occurred----------\n' + e.__str__() + traceback.print_exc().__str__() common_tools.save_log(str_) # installing = 'We’ll be back soon!' self.result_report.msg = e.__str__() self.report_name = report_name print(self.report_name) self.result_report.report_test_result = False assert 'fail' in 'pass' print('ENDENDENDENDENDENDENDENDENDEND')
def Itest_save_log(self): str_ = 'report name' common_tools.save_log(str_)
def after_change_value_of(self, element, driver): str_ = 'Values entered' common_tools.save_log(str_)
def wait_element_presence(driver, by, by_target): str_ = 'wait_element_presence by: {0}, by_target: {1}'.format( by, by_target) common_tools.save_log(str_) element = WebDriverWait(driver, settings.timeout).until( EC.presence_of_element_located((by, by_target)))
def find_elements_(self, by, value): common_tools.save_log(statement.para_separator) str_ = 'Find Elements by:{0}, value:{1}'.format(by, value) common_tools.save_log(str_) return self.find_elements(by, value)
def before_execute_script(self, script, driver): if 'initMouseEvent' in script: str_ = 'Going to click report name' common_tools.save_log(str_)
def test_legacy_reports(self, report_name): report_name = 'IPSTDRG Clinical Profile' try: self.result_report.report_id = common_tools.get_report_id( report_name) self.result_report.report_name = report_name common_tools.save_log(str_='Report name: >>>>>' + report_name) if 'Evaluation & Management Clinical Profile' in report_name: report_name = 'Management Clinical Profile' report_name = reports.Reports( self.driver).find_report_double_click(report_name) self.report_name = report_name # wait dvCustomSearchPopup actions.wait_element_visibility(self.driver, By.ID, 'dvCustomSearchPopup') # Click View Report button btn_view_report_id = 'btnViewReport' actions.wait_element_clickable(self.driver, By.ID, btn_view_report_id) view_report_btn = self.driver.find_element_( By.ID, btn_view_report_id) view_report_btn.click() # time.sleep(1) no_default_filter = self.driver.find_element_( By.ID, 'dvSlidingMessageControl').value_of_css_property('display') if no_default_filter in 'block': # click saved search if report_name in self.saved_searches.keys(): str_ = 'Click saved search for report - ' + report_name common_tools.save_log(str_) # self.result_report.report_name_saved_search = 'Jon_automation_test_pls_do_not_change_it' saved_search = self.driver.find_element_( By.ID, 'showHideSearchSavedHeader') saved_search_selected = self.driver.find_element_( By.XPATH, '//div[text()="' + self.saved_searches.get(report_name) + '"]') saved_search_selected.click() # else: # add one filter # reports.ReportAssist.handle_no_default_filter(self.driver, report_name) # click "+" icon # add_icon = self.driver.find_element_(By.ID, 'btnInsertClause') # add_icon.click() # # # add filters besides the default ones # self.driver.find_element_(By.ID, 'customsearch-grid-div') # self.driver.find_element_(By.XPATH, # './/div[@id="customsearch-grid-div"]/div/div[@class="k-grid-content"]/table/tbody/tr') # # click the last row of the CS # field_last = self.driver.find_element_(By.XPATH, # './/div[@id="customsearch-grid-div"]/div/div[@class="k-grid-content"]/table/tbody/tr[last()]/td[3]/span') # field_last.click() # # # 遍历fileds # fields_lis = self.driver.find_elements_(By.XPATH, # '//div[@class="k-animation-container"][last()]/div/ul/li') # print(fields_lis.__len__()) # for li in fields_lis: # print(li.text) # # # click filter name # field_name = 'Flag Number - Primary' # field_xpath = '//div[@class="k-animation-container"][last()]/div/ul/li[text()="' + field_name + '"]' # field_name_selected = self.driver.find_element_(By.XPATH, field_xpath) # field_name_selected.click() # # # click operator # operator_value = '<> Not Equal' # operator = self.driver.find_element_(By.XPATH, locators.ReportLocators.operator_xpath) # operator.click() # operator_selected = self.driver.find_element_(By.XPATH, # locators.ReportLocators.operator_selected.format( # operator_value)) # # '//div[@class="k-animation-container"][last()]/div/ul/li[text()="' + operator_value + '"]') # operator_selected.click() # # value # value_input_xpath_ = './/div[@id="customsearch-grid"]/div[@class="k-grid-content"]/table/tbody/tr[last()]/td[5]/div/div[6]/input' # field_name_value = 'test' # # value_input_xpath = value_input_xpath_ # value_input = self.driver.find_element_(By.XPATH, value_input_xpath) # value_input.click() # value_input.send_keys(field_name_value) view_report_btn.click() else: pass # Go to view report window actions.wait_number_of_windows_to_be(self.driver, report_name) view_report_window = self.driver.window_handles[1] self.driver.switch_to.window(view_report_window) # 'Error Occurred' self.assertNotIn('Error Occurred', self.driver.page_source, msg=report_name + statement.error_occurred_report_generate) # System.OutOfMemoryException if 'System.OutOfMemoryException' in self.driver.page_source: pass # export report RdlViewer_ctl01_ctl05_ctl00 RdlViewer_ctl01_ctl05_ctl00 # RdlViewer_ctl01_ctl05_ctl00 format_list_xpath = '//select[@id="RdlViewer_ctl01_ctl05_ctl00"]' # format_list = self.driver.find_element_(By.XPATH, format_list_xpath) format_list = self.driver.find_element(By.XPATH, format_list_xpath) # if report_name == 'Case Listing': # format_list = self.driver.find_element_(By.ID, 'RdlViewer_ctl01_ctl05_ctl00') # else: # format_list = self.driver.find_element_(By.ID, 'RW_ReportToolbar_ExportGr_FormatList_DropDownList') format_list.click() # select a formt PDF = self.driver.find_element( By.XPATH, "//option[text()='Acrobat (PDF) file']") PDF.click() expoert_btn = self.driver.find_element_(By.LINK_TEXT, 'Export') # expoert_btn = driver.find_element_by_id('RW_ReportToolbar_ExportGr_Export') expoert_btn.click() # assert wait_until_title_contains if actions.wait_document_completed(self.driver): self.result_report.report_test_result = reports.Reports.wait_until_title_contains( self, report_name=report_name) else: self.result_report.report_test_result = False except Exception as e: print('EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE') print(e.__str__()) print(traceback.print_exc()) str_ = '----------Listening: exception occurred----------\n' + e.__str__( ) + traceback.print_exc().__str__() common_tools.save_log(str_) # installing = 'We’ll be back soon!' self.result_report.msg = e.__str__() self.report_name = report_name print(self.report_name) self.result_report.report_test_result = False assert 'fail' in 'pass' print('ENDENDENDENDENDENDENDENDENDEND')
def after_quit(self, driver): str_ = 'close browser: {0}'.format(driver.title) common_tools.save_log(str_)
def init_driver(): common_tools.save_log('open browser: Firefox') # driver = webdriver.Firefox(timeout=settings.browser_launch) driver = webdriver.Firefox(timeout=settings.browser_launch) # driver = webdriver.Edge() return driver
def wait_element_invisibility(driver, by, by_target): str_ = 'Wait until element is invisible, by: {0}, by_target: {1}'.format( by, by_target) common_tools.save_log(str_) WebDriverWait(driver, settings.timeout).until( EC.invisibility_of_element_located((by, by_target)))
def init_driver(n): common_tools.save_log(statement.start_to_init_browser) chrome_capabilities = { 'browserName': 'chrome', 'chromeOptions': { 'useAutomationExtension': False, 'forceDevToolsScreenshot': True, 'args': ['--disable-infobars'] # 'args': ['--start-maximized', '--disable-infobars'] } } ie11_capabilities = { 'browserName': 'internet explorer', 'ie_options': { 'nativeEvents': False, 'unexpectedAlertBehaviour': True, 'ignoreProtectedModeSettings': True, 'disable-popup-blocking': True, 'enablePersistentHover': True, 'ignoreZoomSetting': True, } } ie11_opts = Options() ie11_opts.ignore_protected_mode_settings = True ie11_opts.ignore_zoom_level = True ie11_opts.require_window_focus = False ie11_opts.native_events = False ie11_opts.persistent_hover = True # INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS ie11_cap = DesiredCapabilities.INTERNETEXPLORER.copy() ie11_cap["ignoreProtectedModeSettings"] = True # ie11_cap["IntroduceInstabilityByIgnoringProtectedModeSettings"] = True ie11_cap["nativeEvents"] = False # ie11_cap["browserFocus"] = False ie11_cap["ignoreZoomSetting"] = True ie11_cap["requireWindowFocus"] = False # ie11_cap["INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS"] = True if (n <= 40): driver_fire = webdriver.Edge() browser = 0 elif (n <= 80): browser = 1 profile = webdriver.FirefoxProfile() profile.set_preference('browser.download.dir', 'c:\\') profile.set_preference('browser.download.folderList', 2) profile.set_preference('browser.download.manager.showWhenStarting', False) profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf') driver_fire = webdriver.Firefox(timeout=settings.browser_launch_timeout, firefox_profile=profile) elif (n <=120): browser = 2 driver_fire = webdriver.Chrome(desired_capabilities=chrome_capabilities) # elif (n <= 120): # browser = 3 # driver_fire = webdriver.Ie(capabilities=ie11_capabilities) # driver_fire = webdriver.Ie(ie_options=ie11_opts) # # driver_fire = webdriver.Ie(capabilities=ie11_cap) # # driver_fire = webdriver.Ie(desired_capabilities=ie11_cap) # browser = 3 driver = SmartEventFiringWebDriver(driver=driver_fire, event_listener=listener.SMART_Listener()) return driver, browser