class TestSearchClass(unittest.TestCase): # 创建测试类 @classmethod # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass def setUpClass(cls): # cls.activeweb = ActiveBrowser() # 实例化 # cls.loginurl = LoginPage().pageurl # cls.activeweb.getUrl(indexpage.pageurl) # 打开网址 # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT) # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD) # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton) # cls.activeweb.delayTime(3) # cls.testpage = DetailsPage() # cls.testpageurl =cls.testpage.pageurl #测试页面url # cls.activeweb.getUrl(cls.testpageurl) # cls.activeweb.delayTime(3) pass @classmethod # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass def tearDownClass(cls): # cls.activeweb.closeBrowse() pass def setUp(self): # 每条用例执行测试之前都要执行此方法 self.activebrowser = ActiveBrowser() # 实例化 # lpf.login(self.activebrowser) lpf.loginwithcookiesauto(self.activebrowser) pass def tearDown(self): # 每条用例执行测试之后都要执行此方法 self.activebrowser.closeBrowse() pass def definedepend(self, dependid): clickandbackdepend.clickandbackdepend(self.activebrowser, dependid) #定义查询函数 def definenewadd(self, num, depend_click_case_id, search_id, serach_ele_find, search_ele_find_value, is_with_date, result_table_ele_find, result_table_ele_find_value): #如果有依赖ID,则执行依赖函数,达到执行当前用例的前提条件 if depend_click_case_id != None: print("depend_click_case_id:%s" % depend_click_case_id) self.definedepend(depend_click_case_id) self.activebrowser.outPutMyLog("依赖函数执行完毕!!!") self.activebrowser.outPutMyLog("开始正式执行测试用例") #文本输入框搜素内容 inputtext_list = searchinputtapinputtext.searchinputtapinputtext( self.activebrowser, search_id) inputtext_list_len = len(inputtext_list) #选项框添加内容 selectoptiontext_list = searchselecttapselectoption.searchselecttapselectoption( self.activebrowser, search_id) selectoptiontext_list_long = len(selectoptiontext_list) # #日期添加内容 # inputtapinputdatetime.inputtapinputdatetime(self.activebrowser,addnew_id) #点击查询按钮 self.activebrowser.findEleAndClick(num, serach_ele_find, search_ele_find_value) if is_with_date: #如果预期是查询到数据,则对数据进行验证 #验证输入框文本信息 inputtext_list_len = len(inputtext_list) for i in range(0, inputtext_list_len): colmun_list = inputtext_list[i][1].split(",") self.activebrowser.outPutMyLog("colmun_list:%s" % colmun_list) colmun_list_long = len(colmun_list) result_check_list = [] for j in range(0, colmun_list_long): result_check_j = self.activebrowser.findEleAndCheckTableOneColnum( num, result_table_ele_find, result_table_ele_find_value, inputtext_list[i][0], int(colmun_list[j]) - 1) result_check_list.append(result_check_j) self.activebrowser.outPutMyLog("result_check_list:%s" % result_check_list) self.assertIn(True, result_check_list) # self.assertTrue(result_check) #验证选项框文本信息 selectoptiontext_list_long = len(selectoptiontext_list) for i in range(0, selectoptiontext_list_long): result_check = self.activebrowser.findEleAndCheckTableOneColnum( num, result_table_ele_find, result_table_ele_find_value, selectoptiontext_list[i][0], int(selectoptiontext_list[i][1]) - 1) self.assertTrue(result_check) else: #否则断言“暂无数据”在页面中 self.activebrowser.delayTime(10) self.assertIn("暂无数据", self.activebrowser.getPageSource()) if inputtext_list_len == 0 and selectoptiontext_list_long == 0: self.activebrowser.getScreenshotAboutMySQL() self.activebrowser.outPutErrorMyLog("【异常提示】:本用例为查询测试用例," "但没有添加要输入或选择的测试数据," "请检查用例测试数据,将测试数据补充完整!") self.assertTrue(False) # def test001(self): # print("第一条测试用例") # self.definedepend(self.dependid) @staticmethod #根据不同的参数生成测试用例 def getTestFunc(num, depend_click_case_id, search_id, serach_ele_find, search_ele_find_value, is_with_date, result_table_ele_find, result_table_ele_find_value): def func(self): self.definenewadd(num, depend_click_case_id, search_id, serach_ele_find, search_ele_find_value, is_with_date, result_table_ele_find, result_table_ele_find_value) return func
def setUp(self): # 每条用例执行测试之前都要执行此方法 self.activebrowser = ActiveBrowser() # 实例化 # lpf.login(self.activebrowser) lpf.loginwithcookiesauto(self.activebrowser) pass
class TestClickAndBackClass(unittest.TestCase): # 创建测试类 @classmethod # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass def setUpClass(cls): # cls.activeweb = ActiveBrowser() # 实例化 # cls.loginurl = LoginPage().pageurl # cls.activeweb.getUrl(indexpage.pageurl) # 打开网址 # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT) # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD) # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton) # cls.activeweb.delayTime(3) # cls.testpage = DetailsPage() # cls.testpageurl =cls.testpage.pageurl #测试页面url # cls.activeweb.getUrl(cls.testpageurl) # cls.activeweb.delayTime(3) pass @classmethod # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass def tearDownClass(cls): # cls.activeweb.closeBrowse() pass def setUp(self): # 每条用例执行测试之前都要执行此方法 self.activebrowser = ActiveBrowser() # 实例化 # lpf.login(self.activebrowser) lpf.loginwithcookiesauto(self.activebrowser) pass def tearDown(self): # 每条用例执行测试之后都要执行此方法 self.activebrowser.closeBrowse() pass def definedepend(self, dependid): clickandbackdepend.clickandbackdepend(self.activebrowser, dependid) #定义点击返回函数 def defineclickandback(self, num, case_counts, depend_case_id, current_page_click_ele_find, current_page_click_ele_find_value, is_new, next_page_check_ele_find, next_page_check_ele_find_value, testproject, testmodule, testpage, testcasetitle, teststarttime, forcount): #如果有依赖ID,则执行依赖函数,达到执行当前用例的前提条件 if depend_case_id != None: self.definedepend(depend_case_id) self.activebrowser.outPutMyLog("依赖函数执行完毕!!!") self.activebrowser.outPutMyLog("开始正式执行测试用例") #点击当前页面元素 self.activebrowser.findEleAndClickNoDelayTime( num, current_page_click_ele_find, current_page_click_ele_find_value) self.activebrowser.delayTime(3) self.activebrowser.driver.refresh() navigationStart_Time_js = """ let mytiming = window.performance.timing; return mytiming.navigationStart; """ print( "navigationStart_Time:%s" % self.activebrowser.driver.execute_script(navigationStart_Time_js)) fetchStart_Time_js = """ let mytiming = window.performance.timing; return mytiming.fetchStart; """ print("fetchStart_Time_js:%s" % self.activebrowser.driver.execute_script(fetchStart_Time_js)) domainLookupStart_Time_js = """ let mytiming = window.performance.timing; return mytiming.domainLookupStart; """ print( "domainLookupStart_Time_js:%s" % self.activebrowser.driver.execute_script(domainLookupStart_Time_js) ) domainLookupEnd_Time_js = """ let mytiming = window.performance.timing; return mytiming.domainLookupEnd; """ print( "domainLookupEnd_Time_js:%s" % self.activebrowser.driver.execute_script(domainLookupEnd_Time_js)) connectStart_Time_js = """ let mytiming = window.performance.timing; return mytiming.connectStart; """ print("connectStart_Time_js:%s" % self.activebrowser.driver.execute_script(connectStart_Time_js)) connectEnd_Time_js = """ let mytiming = window.performance.timing; return mytiming.connectEnd; """ print("connectEnd_Time_js:%s" % self.activebrowser.driver.execute_script(connectEnd_Time_js)) requestStart_Time_js = """ let mytiming = window.performance.timing; return mytiming.requestStart; """ print("requestStart_Time_js:%s" % self.activebrowser.driver.execute_script(requestStart_Time_js)) responseEnd_Time_js = """ let mytiming = window.performance.timing; return mytiming.responseEnd; """ print("responseEnd_Time_js:%s" % self.activebrowser.driver.execute_script(responseEnd_Time_js)) domLoading_Time_js = """ let mytiming = window.performance.timing; return mytiming.domLoading; """ print("domLoading_Time_js:%s" % self.activebrowser.driver.execute_script(domLoading_Time_js)) domInteractive_Time_js = """ let mytiming = window.performance.timing; return mytiming.domInteractive; """ print("domInteractive_Time_js:%s" % self.activebrowser.driver.execute_script(domInteractive_Time_js)) domContentLoadedEventStart_Time_js = """ let mytiming = window.performance.timing; return mytiming.domContentLoadedEventStart; """ print("domContentLoadedEventStart_Time_js:%s" % self.activebrowser.driver.execute_script( domContentLoadedEventStart_Time_js)) domContentLoadedEventEnd_Time_js = """ let mytiming = window.performance.timing; return mytiming.domContentLoadedEventEnd; """ print("domContentLoadedEventEnd_Time_js:%s" % self.activebrowser.driver.execute_script( domContentLoadedEventEnd_Time_js)) domComplete_Time_js = """ let mytiming = window.performance.timing; return mytiming.domComplete; """ print("domComplete_Time_js:%s" % self.activebrowser.driver.execute_script(domComplete_Time_js)) loadEventStart_Time_js = """ let mytiming = window.performance.timing; return mytiming.loadEventStart; """ print("loadEventStart_Time_js:%s" % self.activebrowser.driver.execute_script(loadEventStart_Time_js)) loadEventEnd_Time_js = """ let mytiming = window.performance.timing; return mytiming.loadEventEnd; """ print("loadEventEnd_Time_js_Time_js:%s" % self.activebrowser.driver.execute_script(loadEventEnd_Time_js)) print( type(self.activebrowser.driver.execute_script( loadEventEnd_Time_js))) print( type( int( self.activebrowser.driver.execute_script( loadEventEnd_Time_js)))) print("DNS查询耗时:%s" % str( self.activebrowser.driver.execute_script(domainLookupEnd_Time_js) - self.activebrowser.driver.execute_script(domainLookupStart_Time_js) )) print("TCP链接耗时:%s" % str( self.activebrowser.driver.execute_script(connectEnd_Time_js) - self.activebrowser.driver.execute_script(connectStart_Time_js))) print("request请求耗时:%s" % str( self.activebrowser.driver.execute_script(responseEnd_Time_js) - self.activebrowser.driver.execute_script(requestStart_Time_js))) print("解析dom树耗时:%s" % str( self.activebrowser.driver.execute_script(domComplete_Time_js) - self.activebrowser.driver.execute_script(domInteractive_Time_js))) print("白屏时间:%s" % str( self.activebrowser.driver.execute_script(domLoading_Time_js) - self.activebrowser.driver.execute_script(fetchStart_Time_js))) print("domready时间:%s" % str( self.activebrowser.driver.execute_script( domContentLoadedEventEnd_Time_js) - self.activebrowser.driver.execute_script(fetchStart_Time_js))) print("onload时间:%s" % str( self.activebrowser.driver.execute_script(loadEventEnd_Time_js) - self.activebrowser.driver.execute_script(fetchStart_Time_js))) print("onload时间:%s" % str( self.activebrowser.driver.execute_script(loadEventEnd_Time_js) - self.activebrowser.driver.execute_script(navigationStart_Time_js))) #统计页面加载时间 img = """ // 首屏图片加载完成 let mytiming = window.performance.timing; return window.lastImgLoadTime - mytiming.navigationStart ; """ # intfaces = """ //https://blog.csdn.net/weixin_42284354/article/details/80416157 # // 接口完成加载完成 # let mytiming = window.performance.timing; # return Report.SPEED.LASTCGI - mytiming.navigationStart ; # """ DNS = """ // DNS查询耗时 let mytiming = window.performance.timing; return mytiming.domainLookupEnd - mytiming.domainLookupStart ; """ # TCP = """ // TCP链接耗时 # let mytiming = window.performance.timing; # return mytiming.connectEnd - mytiming.connectStart ; # """ request = """ // request请求耗时 let mytiming = window.performance.timing; return mytiming.responseEnd - mytiming.responseStart ; """ dom = """ // 解析dom树耗时 let mytiming = window.performance.timing; return mytiming.domComplete - mytiming.domInteractive ; """ # Ari = """ // 白屏时间 # let mytiming = window.performance.timing; # return mytiming.responseStart - mytiming.navigationStart ; # """ domready = """ // domready时间 let mytiming = window.performance.timing; return mytiming.domContentLoadedEventEnd - mytiming.fetchStart ; """ loadEventTime = """ let mytiming = window.performance.timing; return mytiming.loadEventEnd - mytiming.navigationStart ; """ #首屏图片加载完成时间 first_image_load_time = """ let mytiming = window.performance.timing; return window.lastImgLoadTime //return window.lastImgLoadTime - mytiming.navigationStart; """ # HTML加载完成时间 html_load_time = """ let mytiming = window.performance.timing; //return mytiming.navigationStart; return window.loadHtmlTime //return window.loadHtmlTime - mytiming.navigationStart; """ # self.activebrowser.driver.execute_script(img) # self.activebrowser.driver.execute_script(intfaces) # self.activebrowser.driver.execute_script(DNS) # self.activebrowser.driver.execute_script(TCP) # self.activebrowser.driver.execute_script(request) # self.activebrowser.driver.execute_script(dom) # self.activebrowser.driver.execute_script(Ari) DNS_time = self.activebrowser.driver.execute_script(DNS) request_time = self.activebrowser.driver.execute_script(request) first_image_load = self.activebrowser.driver.execute_script( first_image_load_time) html_load = self.activebrowser.driver.execute_script(html_load_time) page_time_NoCatch = int( self.activebrowser.driver.execute_script(loadEventTime)) dom_time_NoCatch = int( self.activebrowser.driver.execute_script(domready)) print("首屏图片加载完成时间:%s" % first_image_load) print("HTML加载完成时间:%s" % html_load) print("请求时间:%s" % request_time) print("DNS时间:%s" % DNS_time) print("无缓存页面加载时间:%s" % page_time_NoCatch) print("无缓存DOM加载时间:%s" % dom_time_NoCatch) #保存时间到库 from reportdatas.models import PageLoadTimeReport pageloadtimereport = PageLoadTimeReport() pageloadtimereport.testproject = testproject pageloadtimereport.testmodule = testmodule pageloadtimereport.testpage = testpage pageloadtimereport.testcasetitle = testcasetitle pageloadtimereport.teststarttime = teststarttime pageloadtimereport.forcount = forcount pageloadtimereport.page_load_time_no_catch = page_time_NoCatch pageloadtimereport.dom_load_time_no_catch = dom_time_NoCatch pageloadtimereport.save() self.activebrowser.delayTime(3) # def test001(self): # print("第一条测试用例") # self.definedepend(self.dependid) @staticmethod #根据不同的参数生成测试用例 def getTestFunc(num, case_counts, depend_case_id, current_page_click_ele_find, current_page_click_ele_find_value, is_new, next_page_check_ele_find, next_page_check_ele_find_value, testproject, testmodule, testpage, testcasetitle, teststarttime, forcount): def func(self): self.defineclickandback(num, case_counts, depend_case_id, current_page_click_ele_find, current_page_click_ele_find_value, is_new, next_page_check_ele_find, next_page_check_ele_find_value, testproject, testmodule, testpage, testcasetitle, teststarttime, forcount) return func