def test_001_configbackup(self): u'''配置备份''' # 配置备份(因为chrome配置导出提示'损害计算机'问题,这里使用Firefox导出配置文件) # 先删除tmp路径中的xml文件 call_Firefox.del_config_xml(self) # 添加一个当天的时间计划配置 后面用于验证配置导出正确() call_Firefox.Firefox_login_web(self) self.driver.implicitly_wait(10) timePlan = timePlanPage(self.driver, self.url) timePlan.click_sysObj() time.sleep(0.5) timePlan.click_timePlan() time.sleep(1) # 操作删除 以访已有规则 timePlan.click_selall() time.sleep(0.2) timePlan.click_delall() time.sleep(1) try: self.driver.implicitly_wait(2) timePlan.find_ok() except NoSuchElementException: try: timePlan.find_tipsshowin() time.sleep(1) except NoSuchElementException: pass else: time.sleep(1) print('时间计划列表已删除') # 创建时间计划 新增时间计划的名称 命令为当前年月 today = str(datetime.date.today())[:-3] # 获取当前年月(以访测试过程正好隔天,仅取年份月份) timePlan.click_add() time.sleep(1) timePlan.input_TimeRangeName(today) timePlan.click_save() time.sleep(1) # 断言 开启提示信息是否有误 list_name = str(timePlan.getText_byXpath(timePlan.listName)) time.sleep(1) self.assertEqual(list_name, today, msg='时间段名 与配置的不一致') print('时间计划已添加') # 开始进行配置备份 #进入系统配置-系统维护-配置管理 config = MaintenancePage(self.driver, self.url) config.click_sysConfig() time.sleep(0.5) config.click_Maintenance() time.sleep(1) config.click_configuration() time.sleep(1) config.click_output() time.sleep(2) self.driver.quit() logger.info('test_001_configbackup passed')
def test_002_update(self): u'''固件升级''' UpgradeA = getAssertText('UpgradeA') SelectFileA = getAssertText('SelectFileA') software = MaintenancePage(self.driver, self.url) handOnChange = str(software.getText_byID(software.handOnChange1)) update = str(software.getText_byID(software.update1)) self.assertEqual(handOnChange, SelectFileA, msg='选择文件 按钮有误') self.assertEqual(update, UpgradeA, msg='升级 按钮有误') self.driver.quit() logger.info('test_002_update passed')
def test_008_license(self): u'''电子授权(某些型号可能不支持)''' dayA = getAssertText('dayA') day2A = getAssertText('day2A') SelectFileA = getAssertText('SelectFileA') ImportA = getAssertText('ImportA') licenseP = getParameter('licenseP') Support = getExcelValue(licenseP) maintenance = MaintenancePage(self.driver, self.url) time.sleep(1) if Support == '√': try: self.driver.implicitly_wait(2) maintenance.click_license() time.sleep(1) except NoSuchElementException: CapPic(self.driver) logger.info(u'软件不支持电子授权,与参数表不相符') raise Exception('软件不支持电子授权,与参数表不相符') else: try: days1 = maintenance.getText_byXpath(maintenance.days1) self.assertIn(day2A, days1, msg='剩余时间 显示不为永久 ') except AssertionError: try: days = maintenance.getText_byXpath(maintenance.days2) self.assertIn(dayA, days, msg='剩余时间 显示不为 天数') except AssertionError: raise Exception('剩余时间不显示') chooseFile = str( maintenance.getText_byID(maintenance.chooseFile1)) innerput = str(maintenance.getText_byID(maintenance.innerput1)) self.assertEqual(chooseFile, SelectFileA, msg='选择文件 按钮有误') self.assertEqual(innerput, ImportA, msg='导入 按钮有误') elif Support == '×' or '--': try: self.driver.implicitly_wait(2) maintenance.click_license() except NoSuchElementException: logger.info('软件不支持电子授权,与参数表相符') else: CapPic(self.driver) logger.info(u'软件支持电子授权,与参数表不符') raise Exception(u'软件支持电子授权,与参数表不符') else: logger.info(u'参数表读取异常') logger.info(u'参数表读取值为:', Support) raise Exception(u'参数表读取异常') self.driver.quit() logger.info('test_008_license passed')
def test_reboot1(self): u'''重启 - 页面上方''' WillReboottips = getAssertText('WillReboottips') login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) reboot = MaintenancePage(self.driver, self.url) reboot.click_headerReboot() time.sleep(0.5) reboot.click_ok() time.sleep(2) tips = str(reboot.getText_byClass(reboot.u_tim_str)) self.assertEqual(tips, WillReboottips, msg='点击页面上方重启 操作失败') #设备重启时间不一致,做个判断 time.sleep(30) i = 0 while i < 20: now_url = str(self.driver.current_url) # print(now_url,i) if '/noAuth/login.html' not in now_url: # 如果不同 time.sleep(5) else: break i += 1 else: raise Exception('设备重启未正常启动') self.driver.quit() #待重启后验证 登录是否正常 login.loginWeb(self) #admin账号登录 time.sleep(1) self.driver.quit() logger.info('test_reboot1 passed')
def test_errorSoftware(self): u'''软件升级 - 验证错误型号''' errversion = getweb('errversion') updataWarnTips = getAssertText('updataWarnTips') errSoftware = (str(tmppath) + str(errversion) + '.bin') # 更新一个错误型号 验证无法升级 及提示信息 software = MaintenancePage(self.driver, self.url) #选择文件上传 self.driver.find_element_by_name('updatesoftware').send_keys( errSoftware) # software.input_updatesoftware(errSoftware) #定位不到 time.sleep(1) software.click_update() time.sleep(1) software.click_ok() time.sleep(2) # 断言提示信息内容正确:代表该项正常 pageTip = software.getText_byClass(software.pageTip_warn) if pageTip != updataWarnTips: CapPic(self.driver) logger.info(u"升级错误型号 提示信息异常") raise Exception('升级错误型号 提示信息异常') else: print('更新 错误型号版本 验证通过') self.driver.quit()
def test_003_AppLibrary(self): u'''应用特征库升级''' AppUpgradeP = getParameter('AppUpgradeP') Support = getExcelValue(AppUpgradeP) policyVerA = getAssertText('policyVerA') priorityTempA = getAssertText('priorityTempA') versionsA = getAssertText('versionsA') policylib = MaintenancePage(self.driver, self.url) if Support == '√': logger.info(u'参数支持应用特征库升级') try: self.driver.implicitly_wait(2) policylib.click_policylib() except NoSuchElementException: CapPic(self.driver) logger.info(u'不支持应用特征库升级,与参数表不相符') raise Exception('不支持应用特征库升级,与参数表不相符') else: time.sleep(1) self.driver.implicitly_wait(10) policyVer1 = str( policylib.getText_byXpath(policylib.policyVer1)) priorityTemp1 = str( policylib.getText_byXpath(policylib.priorityTemp1)) versions1 = str(policylib.getText_byXpath(policylib.versions1)) self.assertEqual(policyVer1, policyVerA, msg='应用策略库版本 按钮有误') self.assertEqual(priorityTemp1, priorityTempA, msg='应用优先模板版本 按钮有误') self.assertEqual(versions1, versionsA, msg='版本状态 按钮有误') elif Support == '×': logger.info(u'参数不支持应用特征库升级') try: self.driver.implicitly_wait(2) policylib.click_policylib() except AttributeError: logger.info('不支持应用特征库升级,与参数表相符') else: CapPic(self.driver) logger.info(u'支持应用特征库升级,与参数表不相符') raise Exception('支持应用特征库升级,与参数表不相符') else: logger.info(u'参数表读取异常') logger.info(u'参数表读取值为:', Support) raise Exception(u'参数表读取异常') self.driver.quit() logger.info('test_003_AppLibrary passed')
def test_002_license(self): u'''登录页面的license''' login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) maintenance = MaintenancePage(self.driver, self.url) maintenance.click_sysConfig() time.sleep(0.5) maintenance.click_Maintenance() time.sleep(1) maintenance.click_license() time.sleep(1) filename = ('//*[@id="iframe5"]/table/tbody/tr[6]/td[2]/input[2]') licensefilenow = getlicensefile() self.driver.find_element_by_xpath(filename).send_keys(licensefilenow) time.sleep(0.5) maintenance.click_innerput() time.sleep(100) self.driver.quit() logger.info('test_reboot1 passed')
def setUp(self): print('sysConfig_006_softwareUpdata start') login.loginWeb(self) #admin账号登录 self.driver.implicitly_wait(10) software = MaintenancePage(self.driver, self.url) #进入系统配置-系统维护-系统升级 software.click_sysConfig() time.sleep(0.5) software.click_Maintenance() time.sleep(1)
def setUp(self): logger.info('setUp start') login.loginWeb(self) self.driver.implicitly_wait(10) config = MaintenancePage(self.driver, self.url) # 进入系统配置-系统维护 config.click_sysConfig() time.sleep(0.5) config.click_Maintenance() time.sleep(1)
def test_001_backup_resert(self): u'''配置备份及还原''' ExportA = getAssertText('ExportA') ImportA = getAssertText('ImportA') SelectFileA = getAssertText('SelectFileA') ResetA = getAssertText('ResetA') config = MaintenancePage(self.driver, self.url) config.click_configuration() time.sleep(1) output = str(config.getText_byID(config.output1)) chooseFile = str(config.getText_byID(config.chooseFile1)) innerput = str(config.getText_byID(config.innerput1)) restore = str(config.getText_byID(config.restore1)) self.assertEqual(output, ExportA, msg='导出 按钮有误') self.assertEqual(chooseFile, SelectFileA, msg='选择文件 按钮有误') self.assertEqual(innerput, ImportA, msg='导入 按钮有误') self.assertEqual(restore, ResetA, msg='恢复出厂设置 按钮有误') self.driver.quit() logger.info('test_001_backup_resert passed')
def test_001_ntpClockServer(self): u'''时钟管理''' ntpServer = getweb('ntpServer') i = 0 while i < 80: p = pingTestIP('www.baidu.com') if p != 'Y': time.sleep(1) else: break login.loginWeb(self) self.driver.implicitly_wait(10) config = MaintenancePage(self.driver, self.url) # 进入系统配置-系统维护 config.click_sysConfig() time.sleep(0.5) config.click_Maintenance() time.sleep(1) TimeInternetA = getAssertText('TimeInternetA') sysTime = sysTimePage(self.driver, self.url) sysTime.click_SystemTime() time.sleep(1) switch = str(sysTime.getAttribute_byXpath(sysTime.SntpEns, 'checked')) tips = str(sysTime.getText_byXpath(sysTime.withInternet1)) self.assertEqual(switch, 'true', msg='网络时间同步 默认开启 有误') self.assertEqual(tips, TimeInternetA, msg='网络时间同步 按钮有误') #判断页面时间 日期 dates = sysTime.getText_byID(sysTime.dates) now = time.strftime("%Y-%m-%d") if dates != now: #判断默认配置下是否能同步 不同同步则更改ntp server使同步 同时报默认不能同步错 sysTime.input_NTPServerIP(ntpServer) sysTime.click_save() time.sleep(2) i = 0 while i < 20: sysTime.click_SystemTime() time.sleep(1) dates = sysTime.getText_byID(sysTime.dates) if dates == now: break else: i += 1 else: raise Exception('时间不同步,输入新ntp sever依旧不能更新') raise Exception('默认配置下ntp 时间不同步') self.driver.quit() logger.info('test_001_ntpClockServer passed')
def test_003_configIpmort(self): u'''导入配置''' nodata = getAssertText('nodata') config_xml = getAssertText('config_xml') config_xml3 = getAssertText('config_xml3') batpath = os.path.dirname(os.path.abspath('.')) + '/script/' #先进行配置文件命名修改 path = os.path.dirname(os.path.abspath('.')) + '/tmp/' # 配置文件存放(下载)路径 sys.path.append(r'%s' % path) files = os.listdir(r'%s' % path) #os.listdir(path) 返回path指定的文件夹包含的文件或文件夹的名字的列表 #通过文件名称判断 修改为指定的文件名 for filename in files: portion = os.path.splitext(filename) #splitext()用于返回 文件名和扩展名 元组 # print(portion2) if config_xml in str(portion[0]): #如果文件名种包含"系统配置20" if portion[1] == '.xml': #如果后缀是 .xml newname = config_xml3 + '.xml' #重新组合文件名和后缀名,直接修改名称的话 程序和文件必须在一个目录下 filenamedir = (r'%s' % path) + filename newnamedir = (r'%s' % path) + newname #修改文件名称(与autoIt上传脚本中上传的文件名称一致) os.rename(filenamedir, newnamedir) #导入配置 验证 login.loginWeb2(self) self.driver.implicitly_wait(10) config = MaintenancePage(self.driver, self.url) # 进入系统配置-系统维护-配置管理 config.click_sysConfig() time.sleep(0.5) config.click_Maintenance() time.sleep(1) config.click_configuration() time.sleep(1) # 选中'选择文件' #这里没有取消"导入前恢复出厂设置"按钮 config.click_chooseFile() time.sleep(1) #调用autoIt脚本上传组的xml文件 if config_xml3 == '系统配置3333': autoItScript = batpath + 'SE_config_importCn.exe' if config_xml3 == 'Systemconfig3333': autoItScript = batpath + 'SE_config_importEn.exe' os.system('%s' % autoItScript) #点击导入 config.click_innerput() time.sleep(1) config.click_ok() time.sleep(2) #取消重启 config.click_no() time.sleep(1) #验证导入配置是否成功(通过配置的 今天时间计划) timePlan = timePlanPage(self.driver, self.url) timePlan.click_sysObj() time.sleep(0.5) timePlan.click_timePlan() time.sleep(1) today = str(datetime.date.today())[:-3] # 获取当前年月(以访测试过程正好隔天,仅取年份月份) list_name = str(timePlan.getText_byXpath(timePlan.listName)) self.assertEqual(list_name, today, msg='配置导入失败') time.sleep(1) # 删除时间计划 timePlan = timePlanPage(self.driver, self.url) timePlan.click_sysObj() time.sleep(0.5) timePlan.click_timePlan() time.sleep(1) timePlan.click_delete() time.sleep(1) timePlan.click_ok() time.sleep(1) # 断言 listtips2 = str(timePlan.getText_byXpath(timePlan.listnodata)) self.assertEqual(listtips2, nodata, msg='时间计划删除失败') print('时间计划已删除') self.driver.quit() # 删除tmp路径中的xml文件 call_Firefox.del_config_xml(self) logger.info('test_003_configIpmort passed')
def test_001_ManualUpgrade(self): u'''手动升级''' v2APname = getweb('v2APname') v2APoldversion = getweb('v2APoldversion') v2APnewversion = getweb('v2APnewversion') v1APname = getweb('v1APname') v1APoldversion = getweb('v1APoldversion') v1APnewversion = getweb('v1APnewversion') WillReboottips = getAssertText('WillReboottips') OnlineA = getAssertText('OnlineA') tmppath = os.path.dirname(os.path.abspath('.')) + '/script/' batpath = os.path.dirname(os.path.abspath('.')) + '/script/' #等待AP上线 device = deviceMgmtPage(self.driver, self.url) device.click_wirelessExtension() time.sleep(0.5) device.click_deviceMgmt() time.sleep(1) x = 0 while x < 100: device.click_refreshtable() time.sleep(1) list_status1 = device.getText_byXpath(device.list_status1) list_status2 = device.getText_byXpath(device.list_status2) list_status3 = device.getText_byXpath(device.list_status3) list_status4 = device.getText_byXpath(device.list_status4) print(list_status1, list_status2, list_status3, list_status4, x) if list_status1 == OnlineA and list_status2 == OnlineA and list_status3 == OnlineA and list_status4 == OnlineA: print('4台AP均在线', x) channel1 = str( device.getAttribute_byXpath(device.list_channel1, 'data-local')) channel2 = str( device.getAttribute_byXpath(device.list_channel2, 'data-local')) channel3 = str( device.getAttribute_byXpath(device.list_channel3, 'data-local')) channel4 = str( device.getAttribute_byXpath(device.list_channel4, 'data-local')) print('channel1=', channel1, 'channel2=', channel2, 'channel3=', channel3, 'channel4=', channel4, x) if channel1 != '' and channel2 != '' and channel3 != '' and channel4 != '': print('4台AP2.4G无线接口已同步', x) break else: time.sleep(3) else: time.sleep(3) x = x + 1 else: raise Exception('AP 未能同步2.4G无线接口') time.sleep(10) #先将WA3000N & WA2520N 单独页面降级 device.input_search(v2APname) device.click_searchB() time.sleep(1) v2_ip1 = str(device.getText_byXpath(device.list_IP1)) passurl_v2 = 'http://*****:*****@' + v2_ip1 + '/SoftwareUpdate.asp' # 在URL里面直接加入用户名和密码 pathv2 = tmppath + v2APoldversion + '.bin' device.input_search(v1APname) device.click_searchB() time.sleep(1) v1_ip4 = str(device.getText_byXpath(device.list_IP1)) passurl_v1 = 'http://*****:*****@' + v1_ip4 + '/SoftwareUpdate.asp' # 在URL里面直接加入用户名和密码 pathv1 = tmppath + v1APoldversion + '.bin' # V2降级 # 新开一个窗口,通过执行js来新开一个窗口 js = 'window.open("%s");' % passurl_v2 self.driver.execute_script(js) route_handles = self.driver.current_window_handle # print('route_handles:',route_handles) # 输出当前窗口句柄(路由) all_handles = self.driver.window_handles # 获取当前窗口句柄集合(列表类型) # print(all_handles) # 输出句柄集合 for handle in all_handles: # 切换窗口(切换到v2) if handle != route_handles: print('switch to '), handle self.driver.switch_to_window(handle) v2_handles = self.driver.current_window_handle # print('v2_handles:',v2_handles) # 输出当前窗口句柄(v2) break try: self.driver.get(passurl_v2) self.driver.set_page_load_timeout(5) # selenium超时设置/等待时间过长自动停止 except TimeoutException: print('passurl_v2:', passurl_v2) raise Exception('v2 AP1登录失败') else: apsoftware = APSoftwarePage(self.driver, self.url) apsoftware.input_updatesoftware(pathv2) time.sleep(1) apsoftware.click_uttupdate() time.sleep(1) self.driver.switch_to.alert.accept() # 接受警告框 time.sleep(25) # V1降级 # 再新开一个窗口,通过执行js来新开一个窗口 js1 = 'window.open("%s");' % passurl_v1 self.driver.execute_script(js1) all_handles2 = self.driver.window_handles # 获取当前窗口句柄集合(列表类型) # print(all_handles2) # 输出句柄集合 for handle in all_handles2: # 切换窗口(切换到v1) if handle != route_handles: print('switch to '), handle self.driver.switch_to_window(handle) v1_handles = self.driver.current_window_handle # print('v1_handles:', v1_handles) # 输出当前窗口句柄(v1) break try: self.driver.get(passurl_v1) self.driver.set_page_load_timeout(5) # selenium超时设置/等待时间过长自动停止 except TimeoutException: print('passurl_v1:', passurl_v1) raise Exception('v1 AP2登录失败') else: apsoftware = APSoftwarePage(self.driver, self.url) apsoftware.input_updatesoftware(pathv1) time.sleep(1) apsoftware.click_uttupdate() time.sleep(1) self.driver.switch_to.alert.accept() # 接受警告框 time.sleep(30) #web降级后,等待AP上线 self.driver.switch_to_window(route_handles) # 将路由器重启掉(降级后可能会存在mac22不同 导致有同个设备多个离线记录,D525重启很快 放AP后面) reboot = MaintenancePage(self.driver, self.url) reboot.click_headerReboot() time.sleep(1) reboot.click_ok() time.sleep(2) tips = str(reboot.getText_byClass(reboot.u_tim_str)) self.assertEqual(tips, WillReboottips, msg='点击页面上方重启 操作失败') # 等待路由器重启 i = 0 while i < 20: now_url = str(self.driver.current_url) # print(now_url,i) if '/noAuth/login.html' not in now_url: # 如果不同 time.sleep(5) else: break i += 1 self.driver.quit() # all_handles = self.driver.window_handles # 获取当前窗口句柄集合(列表类型) # # print(all_handles) # 输出句柄集合 # for handle in all_handles: # self.driver.switch_to_window(handle) # self.driver.quit() time.sleep(2) login.loginWeb2(self) self.driver.implicitly_wait(10) device = deviceMgmtPage(self.driver, self.url) device.click_wirelessExtension() time.sleep(0.5) device.click_deviceMgmt() time.sleep(50) x = 0 while x < 100: device.click_refreshtable() time.sleep(1) list_status1 = device.getText_byXpath(device.list_status1) list_status2 = device.getText_byXpath(device.list_status2) list_status3 = device.getText_byXpath(device.list_status3) list_status4 = device.getText_byXpath(device.list_status4) print(list_status1, list_status2, list_status3, list_status4, x) if list_status1 == OnlineA and list_status2 == OnlineA and list_status3 == OnlineA and list_status4 == OnlineA: print('4台AP均在线', x) channel1 = str( device.getAttribute_byXpath(device.list_channel1, 'data-local')) channel2 = str( device.getAttribute_byXpath(device.list_channel2, 'data-local')) channel3 = str( device.getAttribute_byXpath(device.list_channel3, 'data-local')) channel4 = str( device.getAttribute_byXpath(device.list_channel4, 'data-local')) print('channel1=', channel1, 'channel2=', channel2, 'channel3=', channel3, 'channel4=', channel4, x) if channel1 != '' and channel2 != '' and channel3 != '' and channel4 != '': print('4台AP2.4G无线接口已同步', x) break else: time.sleep(3) else: time.sleep(3) x = x + 1 else: raise Exception('AP 未能同步2.4G无线接口') #手动升级 apsoftware = APSoftwarePage(self.driver, self.url) apsoftware.click_APsoftware() time.sleep(1) # v1手动升级 apsoftware.input_serach(v1APname) apsoftware.click_serachB() time.sleep(1) v1_version = str(apsoftware.getText_byXpath(apsoftware.list_version1)) v1APoldversio2 = v1APoldversion[-12:] # 截取版本号及日期 如:2.6.4-171110 self.assertIn(v1APoldversio2, v1_version, msg='v1版本 web页面降级失败') apsoftware.click_list_sel1() time.sleep(0.2) apsoftware.click_upDataLocal() time.sleep(2) apsoftware.click_chooseFile() time.sleep(1) # 调用autoIt脚本上传AP版本 os.system('%s' % (batpath + 'SE_APupdate_WA3000N.exe')) time.sleep(2) apsoftware.click_demo_upgrade() time.sleep(5) try: self.driver.implicitly_wait(2) apsoftware.find_ok() except NoSuchElementException: pass else: time.sleep(3) time.sleep(8) self.driver.implicitly_wait(10) # v2手动升级 apsoftware.input_serach(v2APname) apsoftware.click_serachB() time.sleep(1) v2_version = str(apsoftware.getText_byXpath(apsoftware.list_version1)) v2APoldversio2 = v2APoldversion[-12:] #截取版本号及日期 如:2.6.4-171110 self.assertIn(v2APoldversio2, v2_version, msg='v2版本 web页面降级失败') apsoftware.click_list_sel1() time.sleep(0.2) apsoftware.click_upDataLocal() time.sleep(2) apsoftware.click_chooseFile() time.sleep(1) # 调用autoIt脚本上传AP版本 os.system('%s' % (batpath + 'SE_APupdate_WA2520N.exe')) time.sleep(2) apsoftware.click_demo_upgrade() time.sleep(5) try: self.driver.implicitly_wait(2) apsoftware.find_ok() except NoSuchElementException: pass else: time.sleep(3) self.driver.implicitly_wait(10) #已手动升级,切换到设备管理 等待AP上线 time.sleep(100) self.driver.quit() login.loginWeb(self) self.driver.implicitly_wait(10) time.sleep(0.5) print('AP升级中,等待AP上线...') device = deviceMgmtPage(self.driver, self.url) device.click_wirelessExtension() time.sleep(0.5) device.click_deviceMgmt() time.sleep(1) x = 0 while x < 100: device.click_refreshtable() time.sleep(1) list_status1 = device.getText_byXpath(device.list_status1) list_status2 = device.getText_byXpath(device.list_status2) list_status3 = device.getText_byXpath(device.list_status3) list_status4 = device.getText_byXpath(device.list_status4) print(list_status1, list_status2, list_status3, list_status4, x) if list_status1 == OnlineA and list_status2 == OnlineA and list_status3 == OnlineA and list_status4 == OnlineA: print('4台AP均在线', x) channel1 = str( device.getAttribute_byXpath(device.list_channel1, 'data-local')) channel2 = str( device.getAttribute_byXpath(device.list_channel2, 'data-local')) channel3 = str( device.getAttribute_byXpath(device.list_channel3, 'data-local')) channel4 = str( device.getAttribute_byXpath(device.list_channel4, 'data-local')) print('channel1=', channel1, 'channel2=', channel2, 'channel3=', channel3, 'channel4=', channel4, x) if channel1 != '' and channel2 != '' and channel3 != '' and channel4 != '': print('4台AP2.4G无线接口已同步', x) break else: time.sleep(3) else: time.sleep(3) x = x + 1 else: raise Exception('AP 未能同步2.4G无线接口') #切换回软件管理 确认AP升级后版本 apsoftware = APSoftwarePage(self.driver, self.url) apsoftware.click_APsoftware() time.sleep(1) apsoftware.input_serach(v2APname) apsoftware.click_serachB() time.sleep(1) v2_version = str(apsoftware.getText_byXpath(apsoftware.list_version1)) v2APversion2 = v2APnewversion[-12:] # 截取版本号及日期 如:2.6.4-171110 self.assertIn(v2APversion2, v2_version, msg='v2版本 手动升级失败') apsoftware.input_serach(v1APname) apsoftware.click_serachB() time.sleep(1) v1_version = str(apsoftware.getText_byXpath(apsoftware.list_version1)) v1APversion2 = v1APnewversion[-12:] # 截取版本号及日期 如:2.6.4-171110 self.assertIn(v1APversion2, v1_version, msg='v1版本 手动升级失败') self.driver.quit() logger.info('test_001_ManualUpgrade passed')
def test_001_policylib(self): u'''应用特征库''' policylibsucess = getAssertText('policylibsucess') #更新成功 notdetected = getAssertText('notdetected') #未检测到更新版本 NewVersionDetected = getAssertText('NewVersionDetected') #检测到新版本 DetectedFailed = getAssertText('DetectedFailed') #检测失败 policylib = MaintenancePage(self.driver, self.url) #进入系统配置-系统维护-应用特征库 policylib.click_sysConfig() time.sleep(0.5) policylib.click_Maintenance() time.sleep(1) policylib.click_policylib() time.sleep(10) showState = policylib.getText_byID(policylib.showState) strategyName = policylib.getText_byName(policylib.strategyName) if showState == policylibsucess: print('已更新成功') elif showState == notdetected: self.assertNotEqual(strategyName, '1.0') print(showState, strategyName, '特征库版本已经更新过') elif NewVersionDetected in showState: policylib.click_onkeyup() time.sleep(7) showState2 = policylib.getText_byID(policylib.showState) strategyName2 = policylib.getText_byName(policylib.strategyName) if showState2 == policylibsucess: if float(strategyName2) > float(strategyName): print('更新成功') else: raise Exception('更新失败') elif DetectedFailed in showState: policylib.click_recheck() time.sleep(10) showState = policylib.getText_byID(policylib.showState) strategyName = policylib.getText_byName(policylib.strategyName) if showState == policylibsucess: print('已更新成功') elif showState == notdetected: self.assertNotEqual(strategyName, '1.0') print(showState, strategyName, '特征库版本已经更新过') elif NewVersionDetected in showState: policylib.click_onkeyup() time.sleep(7) showState2 = policylib.getText_byID(policylib.showState) strategyName2 = policylib.getText_byName( policylib.strategyName) if showState2 == policylibsucess: if float(strategyName2) > float(strategyName): print('更新成功') else: raise Exception('更新失败') elif DetectedFailed in showState: logger.info(showState, strategyName, u'检测失败') CapPic(self.driver) raise Exception('检测失败2') else: logger.info(showState, strategyName, u'检测失败') CapPic(self.driver) raise Exception('策略库检测更新状态 提示异常') else: logger.info(showState, strategyName, u'检测失败') CapPic(self.driver) raise Exception('策略库检测更新状态 提示异常') # self.driver.quit() logger.info('test_001_policylib passed')
def test_reboot2(self): u'''重启 - 系统维护页面''' #系统配置-系统维护-重启设备 页面的重启 WillReboottips = getAssertText('WillReboottips') login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) reboot = MaintenancePage(self.driver, self.url) reboot.click_sysConfig() time.sleep(0.5) reboot.click_Maintenance() time.sleep(1) reboot.click_RebootDevice() time.sleep(1) reboot.click_reboot() time.sleep(1) reboot.click_ok() time.sleep(1) tips = str(reboot.getText_byClass(reboot.u_tim_str)) self.assertEqual(tips, WillReboottips, msg='点击页面上方重启 操作失败') # 设备重启时间不一致,做个判断 time.sleep(30) i = 0 while i < 20: now_url = str(self.driver.current_url) # print(now_url, i) if '/noAuth/login.html' not in now_url: # 如果不同 time.sleep(5) else: break i += 1 self.driver.quit() #待重启后验证 登录是否正常 login.loginWeb(self) #admin账号登录 time.sleep(1) self.driver.quit() print('系统维护页面 设备重启 验证通过') logger.info('test_reboot2 passed')
def test_002_Resert(self): u'''恢复出厂''' nodata = getAssertText('nodata') #用于恢复出厂并验证 login.loginWeb(self) #admin账号登录 self.driver.implicitly_wait(10) config = MaintenancePage(self.driver, self.url) #进入系统配置-系统维护-配置管理 config.click_sysConfig() time.sleep(0.5) config.click_Maintenance() time.sleep(1) config.click_configuration() time.sleep(1) config.click_restore() time.sleep(1) config.click_ok() time.sleep(1) config.click_ok() #确认重启 time.sleep(30) i = 0 while i < 30: now_url = str(self.driver.current_url) # print(now_url,i) if '/noAuth/login.html' not in now_url: # 如果不同 time.sleep(5) else: break i += 1 else: raise Exception('设备重启未正常启动') self.driver.quit() #登录验证是否恢复出厂成功(通过配置的 当天的时间计划) login.loginWeb(self) #admin账号登录 self.driver.implicitly_wait(10) timePlan = timePlanPage(self.driver, self.url) timePlan.click_sysObj() time.sleep(0.5) timePlan.click_timePlan() time.sleep(1) list_nodata = timePlan.getText_byXpath(timePlan.listnodata) self.assertEqual(list_nodata, nodata, msg='配置恢复出厂成功') time.sleep(1) self.driver.quit() logger.info('test_002_Resert passed')
def test_oldSoftware1(self, oldversion1=getweb('oldversion1')): u'''软件升级 - 更新旧版本测试''' # oldversion1 = getweb('oldversion1') self.oldversion1 = oldversion1 UploadingTips = getAssertText('UploadingTips') WillReboottips = getAssertText('WillReboottips') num = 0 Expect_Version = '' oldversioa1 = oldversion1.split(r'-') if len(oldversioa1) == 2: # eg:'nv640Ev1.5.0-130918' Expect_Version = oldversioa1[0] + '-' + oldversioa1[1] else: #eg:'nvA655Wv3.0.0-200116-142208' ; 'TL-BWR-21v3.2.1-200304-171146' while num < len(oldversioa1) - 1: Expect_Version += oldversioa1[num] + '-' num += 1 else: Expect_Version = Expect_Version[:-1] # print(Expect_Version) # if '.bin' in oldversioa1[1]: # oldversioa2 = oldversioa1[0] + '-' + oldversioa1[1] # Expect_Version = oldversioa2[:-4] # else: # Expect_Version = oldversioa1[0] + '-' + oldversioa1[1] # 版本上传 oldSoftware = (str(tmppath) + str(oldversion1) + '.bin') self.driver.implicitly_wait(10) software = MaintenancePage(self.driver, self.url) # 选择文件上传 self.driver.find_element_by_name('updatesoftware').send_keys( oldSoftware) # software.input_updatesoftware(oldSoftware) time.sleep(1) software.click_update() time.sleep(1) software.click_ok() time.sleep(3) # 小设备 上传时间较长,判断sleep时间 tips = str(software.getText_byClass(software.u_tim_str)) if UploadingTips in tips: time.sleep(50) elif tips == WillReboottips: time.sleep(3) # 设备重启时间不一致,做个判断 time.sleep(30) i = 0 while i < 20: now_url = str(self.driver.current_url) print(now_url, i) if '/noAuth/login.html' not in now_url: # 如果不同 time.sleep(5) else: break i += 1 self.driver.quit() #判断是否升级成功 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) software = MaintenancePage(self.driver, self.url) # 进入系统配置-系统维护-系统升级 software.click_sysConfig() time.sleep(0.5) software.click_Maintenance() time.sleep(1) now_Version = str(software.getText_byXpath(software.version)) if Expect_Version != now_Version: CapPic(self.driver) logger.info(u"升级旧版本 升级后版本号与升级版本号不一致") raise Exception('升级旧版本 升级后版本号与升级版本号不一致') else: print('更新 旧型号版本 验证通过') self.driver.quit()