def test_001_information(self): u'''默认关闭,网络名称、设备管理页面提示正确''' wirelessTipsA = getAssertText('wirelessTipsA') netname = netNamePage(self.driver, self.url) #网络名称页面的提示 netname.click_netName() time.sleep(1) boxtips = netname.getText_byClass(netname.u_cfm_boxT) if wirelessTipsA not in boxtips: CapPic(self.driver) logger.info(u'网络名称页面 无线扩展提示有误') raise Exception('网络名称页面 无线扩展提示有误') netname.click_u_cfm_nox() #提示窗右上角×号 time.sleep(1) #确认按钮默认关闭 checkOpens = netname.getAttribute_byId(netname.checkOpens, 'checktype') self.assertEqual(checkOpens, '0', msg='无限扩展默认未关闭') #0关闭,1打开 # 设备管理页面的提示 device = deviceMgmtPage(self.driver, self.url) device.click_deviceMgmt() time.sleep(1) boxtips = netname.getText_byClass(netname.u_cfm_boxT) if wirelessTipsA not in boxtips: CapPic(self.driver) logger.info(u'设备管理页面 无线扩展提示有误') raise Exception('设备管理页面 无线扩展提示有误') device.click_no() #取消按钮 time.sleep(1) self.driver.quit() logger.info('test_001_information passed')
def test_002_close(self): u'''关闭负载均衡''' v1APname = getweb('v1APname') port = gettelnet('port') username = bytes(getweb('User'), encoding="utf8") password = bytes(getweb('Passwd'), encoding="utf8") device = deviceMgmtPage(self.driver, self.url) device.click_wirelessExtension() time.sleep(0.5) device.click_deviceMgmt() time.sleep(1) device.input_search(v1APname) device.click_searchB() list_ip1 = device.getText_byXpath(device.list_IP1) load = loadBalancingPage(self.driver, self.url) load.click_loadBalancing() time.sleep(1) load.click_checkOpen() time.sleep(1) checkOpens = load.getAttribute_byId(load.checkOpens, 'checktype') self.assertEqual(checkOpens, '0', msg='负载均衡 关闭失败') time.sleep(8) tn = telnetlib.Telnet(host=list_ip1, port=port) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # 输入登录用户名 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'iwpriv ra0 get Config | grep uttMaxStaNum' + b'\n') # 无线隔离 # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 # print('result:', result) # 判断 if "uttMaxStaNum: 32" in result: logger.info('负载均衡关闭 AP资源数正常') else: logger.info('负载均衡关闭 AP资源数异常') logger.info('result:', result) raise Exception('负载均衡关闭 AP资源数异常') tn.close() # tn.write('exit\n') self.driver.quit() logger.info('test_002_close passed')
def test_001_APconfig(self): u'''AP配置管理''' wirelessTipsA = getAssertText('wirelessTipsA') OnlineA = getAssertText('OnlineA') Support5GAP = getweb('Support5GAP') #环境中支持5G的AP login.loginWeb(self) self.driver.implicitly_wait(10) # 先进入网络名称 判断无线扩展是否打开 netname = netNamePage(self.driver, self.url) # print(Support) if str(Support).isdigit(): #判断字符串是否为数字 logger.info(u'参数支持AP管理') try: self.driver.implicitly_wait(2) netname.click_wirelessExtension() time.sleep(0.5) netname.click_netName() time.sleep(1) except AttributeError or NoSuchElementException: CapPic(self.driver) logger.info(u'软件不支持无线扩展/网络名称,与参数表不符') raise Exception(u'软件不支持无线扩展/网络名称,与参数表不符') else: logger.info(u'软件支持无线扩展,与参数表相符') self.driver.implicitly_wait(10) checkOpen = str( netname.getAttribute_byId(netname.checkOpens, 'checktype')) ManageProtocols = str( netname.getAttribute_byId(netname.ManageProtocolss, 'checktype')) if checkOpen == '0': # 0为关闭,1打开 tips = netname.getText_byClass(netname.u_cfm_boxT) time.sleep(1) self.assertIn(wirelessTipsA, tips, msg='提示信息有误') netname.click_ok() # 点确认开启 time.sleep(30) #等AP上线 时间久一点 else: time.sleep(5) # 002中打开 等待时间稍短一些 if ManageProtocols == '0': # 0为关闭,1打开 netname.click_ManageProtocols() # 开启 time.sleep(10) #等v1AP上线 # 断言 开关打开 checkOpen = str( netname.getAttribute_byId(netname.checkOpens, 'checktype')) self.assertEqual(checkOpen, '1', msg='无线扩展默认未打开') # 0关闭,1打开 ManageProtocols = str( netname.getAttribute_byId(netname.ManageProtocolss, 'checktype')) self.assertEqual(ManageProtocols, '1', msg='兼容模式未打开') #进入设备管理 device = deviceMgmtPage(self.driver, self.url) device.click_deviceMgmt() time.sleep(1) #判断AP已正常上线 x = 0 while x < 120: 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无线接口') #需选择一个同时支持2.4G 5G的AP 并搜索 device.input_search(Support5GAP) device.click_searchB() time.sleep(1) device.click_list_name1() time.sleep(0.5) device.input_list_namein1('1') time.sleep(0.5) device.find_list_nameS1() #2.4G 信道 device.click_list_channel1c() time.sleep(0.5) select_2 = device.selelement_byXpath(device.selchannel2_1) Select(select_2).select_by_value('1') time.sleep(0.2) Select(select_2).select_by_value('2') time.sleep(0.2) Select(select_2).select_by_value('3') time.sleep(0.2) Select(select_2).select_by_value('4') time.sleep(0.2) Select(select_2).select_by_value('5') time.sleep(0.2) Select(select_2).select_by_value('6') time.sleep(0.2) Select(select_2).select_by_value('7') time.sleep(0.2) Select(select_2).select_by_value('8') time.sleep(0.2) Select(select_2).select_by_value('9') time.sleep(0.2) Select(select_2).select_by_value('10') time.sleep(0.2) Select(select_2).select_by_value('11') time.sleep(0.2) Select(select_2).select_by_value('auto') time.sleep(0.2) device.find_selchannel2S_1() #5G device.click_list_channel51c() time.sleep(0.5) select_5 = device.selelement_byXpath(device.selchannel5_1) Select(select_5).select_by_value('36') time.sleep(0.2) Select(select_5).select_by_value('40') time.sleep(0.2) Select(select_5).select_by_value('44') time.sleep(0.2) Select(select_5).select_by_value('48') time.sleep(0.2) Select(select_5).select_by_value('149') time.sleep(0.2) Select(select_5).select_by_value('153') time.sleep(0.2) Select(select_5).select_by_value('157') time.sleep(0.2) Select(select_5).select_by_value('161') time.sleep(0.2) Select(select_5).select_by_value('165') time.sleep(0.2) Select(select_5).select_by_value('auto') time.sleep(0.2) device.find_selchannel5S_1() #漫游阈值 device.click_deviceMgmt() time.sleep(1) device.click_list_mangement1() time.sleep(2) device.click_modifyPw() #修改密码 time.sleep(0.2) device.click_roamingSet() time.sleep(0.5) # rpaming_en_2G = str(device.getAttribute_byXpath(device.roaming_cs,'checked')) # self.assertEqual(rpaming_en_2G,'true',msg='2.4G漫游阈值 默认未关闭') device.click_roaming_en() time.sleep(0.5) device.input_roaming_th('-80') time.sleep(0.2) # rpaming_en_5G = str(device.getAttribute_byXpath(device.roaming_c5s,'checked')) # self.assertEqual(rpaming_en_5G, 'true', msg='5G漫游阈值 默认未关闭') device.click_roaming_en5() time.sleep(0.5) device.input_roaming_th5('-80') time.sleep(0.2) device.click_modal_hide() time.sleep(1) #重启 device.find_list_reboot1() #批量管理 device.click_list_sel1() device.click_BatchManagement() time.sleep(2) #射频模板 spmb = device.selelement_byName(device.spmb) Select(spmb).select_by_value('default2') time.sleep(0.2) Select(spmb).select_by_value('default1') time.sleep(0.2) Select(spmb).select_by_value('default3') time.sleep(0.2) #网络名称 device.click_ssidM() time.sleep(1) device.click_list_selwn1() device.click_selall_w() device.find_sendToApM() #系统设置 device.click_Syssetup() time.sleep(1) device.click_TaskS_En() #计划任务 time.sleep(0.2) device.click_TaskS_C() time.sleep(0.2) device.click_sleepMode_En() # 睡眠模式 time.sleep(0.2) device.click_sleepMode_C() time.sleep(0.2) # 配置重启 device.click_configreboot() time.sleep(0.5) device.find_restart() device.find_factory_reset() device.click_close() time.sleep(0.5) #备份配置 device.click_backupconfig() time.sleep(1) device.find_allDelete() device.find_backup() device.find_uploadBackup() #软件升级 apsoftware = APSoftwarePage(self.driver, self.url) apsoftware.click_APsoftware() time.sleep(1) apsoftware.find_checkUpdata() apsoftware.find_upData() apsoftware.find_upDataLocal() else: logger.info(u'参数不支持AP管理') try: self.driver.implicitly_wait(2) netname.click_wirelessExtension() time.sleep(0.5) netname.click_netName() time.sleep(1) except AttributeError or NoSuchElementException: logger.info(u'软件不支持无线扩展,与参数表相符') else: CapPic(self.driver) logger.info(u'软件支持无线扩展,与参数表不符') raise Exception(u'软件支持无线扩展,与参数表不符') self.driver.quit() logger.info('test_001_APconfig passed')
def test_000_makeconfig(self): u'''对AP进行操作,谨防AP恢复后没有配置文件生成''' # 在恢复出厂后 未对V1 AP操作 会没有V1对应AP的配置文件生成(主要是针对v1 AP ,这里直接修改设备名称) # 003中 重启和恢复出厂有引用test_001_configlist 所以单独出来,不放在001中 OnlineA = getAssertText('OnlineA') login.loginWeb(self) self.driver.implicitly_wait(10) configlist = deviceMgmtPage(self.driver, self.url) configlist.click_wirelessExtension() time.sleep(0.5) configlist.click_deviceMgmt() time.sleep(1) x = 0 while x < 100: configlist.click_refreshtable() time.sleep(1) list_status1 = configlist.getText_byXpath(configlist.list_status1) list_status2 = configlist.getText_byXpath(configlist.list_status2) list_status3 = configlist.getText_byXpath(configlist.list_status3) list_status4 = configlist.getText_byXpath(configlist.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( configlist.getAttribute_byXpath(configlist.list_channel1, 'data-local')) channel2 = str( configlist.getAttribute_byXpath(configlist.list_channel2, 'data-local')) channel3 = str( configlist.getAttribute_byXpath(configlist.list_channel3, 'data-local')) channel4 = str( configlist.getAttribute_byXpath(configlist.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 修改AP名称 configlist.click_list_name1() time.sleep(0.5) configlist.input_list_namein1('1') time.sleep(0.5) configlist.click_list_nameS1() time.sleep(8) name_save1 = str( configlist.getAttribute_byXpath(configlist.list_name1s, 'data-local')) self.assertEqual(name_save1, '1', msg='V2 AP1名称修改出错') configlist.click_list_name2() time.sleep(0.5) configlist.input_list_namein2('1') time.sleep(0.5) configlist.click_list_nameS2() time.sleep(8) name_save2 = str( configlist.getAttribute_byXpath(configlist.list_name2s, 'data-local')) self.assertEqual(name_save2, '1', msg='V2 AP1名称修改出错') configlist.click_list_name3() time.sleep(0.5) configlist.input_list_namein3('1') time.sleep(0.5) configlist.click_list_nameS3() time.sleep(8) name_save3 = str( configlist.getAttribute_byXpath(configlist.list_name3s, 'data-local')) self.assertEqual(name_save3, '1', msg='V1 AP1名称修改出错') configlist.click_list_name4() time.sleep(0.5) configlist.input_list_namein4('1') time.sleep(0.5) configlist.click_list_nameS4() time.sleep(8) name_save4 = str( configlist.getAttribute_byXpath(configlist.list_name4s, 'data-local')) self.assertEqual(name_save4, '1', msg='V1 AP2名称修改出错') time.sleep(5) #等待AP的配置文件生成 self.driver.quit() logger.info('test_000_makeconfig passed')
def test_002_configOperation(self): u'''配置文件导入、删除、导出''' apconfig_gz = getAssertText('apconfig_gz') apconfig_gz3 = getAssertText('apconfig_gz3') path_gz = os.path.dirname(os.path.abspath('.')) + '/tmp/' batpath = os.path.dirname(os.path.abspath('.')) + '/script/' nodata = getAssertText('nodata') # 先删除AP配置文件路径中的 apUpdateConf开头 的gz文件 call_Firefox.del_apconfig_gz(self) # 调用Firefox 导出组织架构 call_Firefox.Firefox_login_web(self) self.driver.implicitly_wait(10) device = deviceMgmtPage(self.driver, self.url) device.click_wirelessExtension() time.sleep(0.5) device.click_deviceMgmt() time.sleep(1) # 配置文件列表中 4个在线AP的配置信息 APseq1 = device.getText_byXpath(device.list_seq1) APseq2 = device.getText_byXpath(device.list_seq2) APseq3 = device.getText_byXpath(device.list_seq3) APseq4 = device.getText_byXpath(device.list_seq4) APModel1 = device.getText_byXpath(device.list_modes1) APModel2 = device.getText_byXpath(device.list_modes2) APmodel3 = device.getText_byXpath(device.list_modes3) APModel4 = device.getText_byXpath(device.list_modes4) configlist = deviceMgmtPage(self.driver, self.url) configlist.click_backupconfig() time.sleep(1) # 导出AP配置 configlist.click_backup() time.sleep(1) configlist.click_ok() time.sleep(2) # 进行配置文件命名修改 sys.path.append(r'%s' % path_gz) files = os.listdir( r'%s' % path_gz) # os.listdir(path) 返回path指定的文件夹包含的文件或文件夹的名字的列表 # 通过文件名称判断 修改为指定的文件名 for filename in files: portion = os.path.splitext(filename) # splitext()用于返回 文件名和扩展名 元组 # print(portion2) if apconfig_gz in str(portion[0]): # 如果文件名种包含"组织成员20" if portion[1] == '.gz': # 如果后缀是 .gz newname = apconfig_gz3 + '.gz' # 重新组合文件名和后缀名,直接修改名称的话 程序和文件必须在一个目录下 filenamedir = (r'%s' % path_gz) + filename newnamedir = (r'%s' % path_gz) + newname # 修改文件名称(与autoIt上传脚本中上传的文件名称一致) os.rename(filenamedir, newnamedir) # print(newname) self.driver.quit() print('AP配置 - 备份 验证成功') #删除AP配置 login.loginWeb2(self) # admin账号登录 self.driver.implicitly_wait(10) configlist = deviceMgmtPage(self.driver, self.url) configlist.click_wirelessExtension() time.sleep(0.5) configlist.click_deviceMgmt() time.sleep(1) configlist.click_backupconfig() time.sleep(1) # 全选 删除AP配置 while 1 > 0: configlist.click_selall_b() time.sleep(0.2) configlist.click_allDelete() time.sleep(1) configlist.click_ok() time.sleep(3) try: self.driver.implicitly_wait(2) configlist.find_listback_nodata() except NoSuchElementException: print('AP配置未删除完 继续删除') else: tips = str( configlist.getText_byXpath(configlist.listback_nodata)) self.assertEqual(tips, nodata, msg='AP配置删除后列表提示信息有误') break self.driver.implicitly_wait(10) print('AP配置 删除验证通过') time.sleep(2) #导入AP配置 configlist.click_uploadBackup() time.sleep(1) configlist.click_chooseFile() time.sleep(1) # 调用autoIt脚本上传组的cvs文件 os.system('%s' % (batpath + 'SE_APconfig_import.exe')) time.sleep(2) configlist.click_demo_id() time.sleep(3) configlist.input_searchBack(APseq1) configlist.click_searchBackb() time.sleep(1) try: list_seqnum = str( configlist.getText_byXpath(configlist.bconfigseq1)) self.assertEqual(list_seqnum, APseq1, msg='seqnum1 序列号不一致') list_model = str( configlist.getText_byXpath(configlist.bconfigmodel1)) self.assertEqual(list_model, APModel1, msg='model1 型号不一致') configlist.input_searchBack(APseq2) configlist.click_searchBackb() time.sleep(1) list_seqnum = str( configlist.getText_byXpath(configlist.bconfigseq1)) self.assertEqual(list_seqnum, APseq2, msg='seqnum2 序列号不一致') list_model = str( configlist.getText_byXpath(configlist.bconfigmodel1)) self.assertEqual(list_model, APModel2, msg='model2 型号不一致') except NoSuchElementException: logger.info(u'v2AP配置文件不存在') CapPic(self.driver) raise Exception(u'v2AP配置文件不存在') configlist.input_searchBack(APseq3) configlist.click_searchBackb() time.sleep(1) try: list_seqnum = str( configlist.getText_byXpath(configlist.bconfigseq1)) self.assertEqual(list_seqnum, APseq3, msg='seqnum3 序列号不一致') list_model = str( configlist.getText_byXpath(configlist.bconfigmodel1)) self.assertEqual(list_model, APmodel3, msg='model3 型号不一致') configlist.input_searchBack(APseq4) configlist.click_searchBackb() time.sleep(1) list_seqnum = str( configlist.getText_byXpath(configlist.bconfigseq1)) self.assertEqual(list_seqnum, APseq4, msg='seqnum4 序列号不一致') list_model = str( configlist.getText_byXpath(configlist.bconfigmodel1)) self.assertEqual(list_model, APModel4, msg='mode4 型号不一致') except NoSuchElementException: logger.info(u'v1AP配置文件不存在') CapPic(self.driver) raise Exception(u'v1AP配置文件不存在') print('导入AP配置正常') self.driver.quit() logger.info('test_002_configOperation passed')
def test_001_configlist(self): u'''配置文件列表显示''' OnlineA = getAssertText('OnlineA') login.loginWeb(self) self.driver.implicitly_wait(10) netname = netNamePage(self.driver, self.url) netname.click_wirelessExtension() time.sleep(0.5) netname.click_netName() time.sleep(1) try: self.driver.implicitly_wait(3) netname.find_ok() except NoSuchElementException: pass else: print('打开无线扩展,等待AP上线') time.sleep(5) ManageProtocol = netname.getAttribute_byId( netname.ManageProtocolss, 'checktype') if ManageProtocol == '0': # 1为打开 0为关闭 开启兼容模式 netname.click_ManageProtocols() print('打开兼容模式,等待AP上线') time.sleep(70) self.driver.implicitly_wait(10) configlist = deviceMgmtPage(self.driver, self.url) configlist.click_deviceMgmt() time.sleep(5) # 确认在线AP序列号,确认配置文件列表中包含有对应ap的配置文件 # 先确认AP在线 x = 0 while x < 100: configlist.click_refreshtable() time.sleep(1) list_status1 = configlist.getText_byXpath(configlist.list_status1) list_status2 = configlist.getText_byXpath(configlist.list_status2) list_status3 = configlist.getText_byXpath(configlist.list_status3) list_status4 = configlist.getText_byXpath(configlist.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( configlist.getAttribute_byXpath(configlist.list_channel1, 'data-local')) channel2 = str( configlist.getAttribute_byXpath(configlist.list_channel2, 'data-local')) channel3 = str( configlist.getAttribute_byXpath(configlist.list_channel3, 'data-local')) channel4 = str( configlist.getAttribute_byXpath(configlist.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序列号 APseq1 = configlist.getText_byXpath(configlist.list_seq1) APseq2 = configlist.getText_byXpath(configlist.list_seq2) APseq3 = configlist.getText_byXpath(configlist.list_seq3) APseq4 = configlist.getText_byXpath(configlist.list_seq4) APModel1 = configlist.getText_byXpath(configlist.list_modes1) APModel2 = configlist.getText_byXpath(configlist.list_modes2) APmodel3 = configlist.getText_byXpath(configlist.list_modes3) APModel4 = configlist.getText_byXpath(configlist.list_modes4) configlist.click_backupconfig() time.sleep(1) configlist.input_searchBack(APseq1) configlist.click_searchBackb() time.sleep(1) try: list_seqnum = str( configlist.getText_byXpath(configlist.bconfigseq1)) self.assertEqual(list_seqnum, APseq1, msg='seqnum1 序列号不一致') list_model = str( configlist.getText_byXpath(configlist.bconfigmodel1)) self.assertEqual(list_model, APModel1, msg='model1 型号不一致') configlist.input_searchBack(APseq2) configlist.click_searchBackb() time.sleep(1) list_seqnum = str( configlist.getText_byXpath(configlist.bconfigseq1)) self.assertEqual(list_seqnum, APseq2, msg='seqnum2 序列号不一致') list_model = str( configlist.getText_byXpath(configlist.bconfigmodel1)) self.assertEqual(list_model, APModel2, msg='model2 型号不一致') except NoSuchElementException: logger.info(u'v2AP配置文件不存在') CapPic(self.driver) raise Exception(u'v2AP配置文件不存在') configlist.input_searchBack(APseq3) configlist.click_searchBackb() time.sleep(1) try: list_seqnum = str( configlist.getText_byXpath(configlist.bconfigseq1)) self.assertEqual(list_seqnum, APseq3, msg='seqnum3 序列号不一致') list_model = str( configlist.getText_byXpath(configlist.bconfigmodel1)) self.assertEqual(list_model, APmodel3, msg='model3 型号不一致') configlist.input_searchBack(APseq4) configlist.click_searchBackb() time.sleep(1) list_seqnum = str( configlist.getText_byXpath(configlist.bconfigseq1)) self.assertEqual(list_seqnum, APseq4, msg='seqnum4 序列号不一致') list_model = str( configlist.getText_byXpath(configlist.bconfigmodel1)) self.assertEqual(list_model, APModel4, msg='mode4 型号不一致') except NoSuchElementException: logger.info(u'v1AP配置文件不存在') CapPic(self.driver) raise Exception(u'v1AP配置文件不存在') self.driver.quit() logger.info('test_001_configlist 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_002_autoUpodate(self): u'''自动更新:批量3个按钮提示正常,批量更新''' CapPic(self.driver) noAPupdateA = getAssertText('noAPupdateA') v1APname = getweb('v1APname') v1APnewversion = getweb('v1APnewversion') APexecStatus1 = getAssertText('APexecStatus1') APexecStatus2 = getAssertText('APexecStatus2') APexecStatus3 = getAssertText('APexecStatus3') OnlineA = getAssertText('OnlineA') OfflineA = getAssertText('OfflineA') 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(5) apsoftware = APSoftwarePage(self.driver, self.url) apsoftware.click_APsoftware() time.sleep(1) # #全选 # apsoftware.click_list_selall() apsoftware.click_list_sel1() apsoftware.click_list_sel3() time.sleep(0.5) apsoftware.click_checkUpdata() # 检测更新 time.sleep(3) #点一个没有检测到更新的 apsoftware.click_list_updata1() time.sleep(1) tips = str(apsoftware.getText_byClass(apsoftware.tipsshowin)) self.assertEqual(tips, noAPupdateA, msg='更新 按钮异常') #自动更新 apsoftware.click_list_selall() time.sleep(0.5) apsoftware.click_upData() time.sleep(25) apsoftware.input_serach(v1APname) apsoftware.click_serachB() time.sleep(1) list_status1 = apsoftware.getText_byXpath(apsoftware.list_status1) execStatus = [APexecStatus1, APexecStatus2, APexecStatus3] if list_status1 in execStatus: pass else: CapPic(self.driver) logger.info(u'点击自动更新 AP更新状态不对') print('list_status1:', list_status1) raise Exception('点击自动更新 AP更新状态不对') time.sleep(30) i = 0 while i < 40: list_status1 = apsoftware.getText_byXpath(apsoftware.list_status1) if list_status1 != '检测更新': # print(list_status1,i) time.sleep(3) i = i + 1 else: print('自动更新 已升级成功', i) break device = deviceMgmtPage(self.driver, self.url) device.click_deviceMgmt() time.sleep(1) device.input_search(v1APname) device.click_searchB() time.sleep(1) i = 0 while i < 30: device.click_refreshtable() time.sleep(1) list_status1 = device.getText_byXpath(device.list_status1) try: self.driver.implicitly_wait(3) device.find_list_status2() except NoSuchElementException: time.sleep(3) i = i + 1 else: self.driver.implicitly_wait(10) list_status2 = device.getText_byXpath(device.list_status2) print(list_status1, list_status2, i) if list_status1 == OnlineA or list_status2 == OnlineA: print('v1 AP已上线', i) break else: time.sleep(3) i = i + 1 else: raise Exception('v1 AP 未上线') #清除离线AP(ap升级后mac变为fc 会有两条记录 清除掉另一个) if list_status1 == OfflineA: device.click_list_sel1() elif list_status2 == OfflineA: device.click_list_sel2() device.click_clearOutlineAP() time.sleep(1) x = 0 while x < 60: device.click_refreshtable() time.sleep(1.5) list_status1 = device.getText_byXpath(device.list_status1) # print(list_status1, x) if list_status1 == OnlineA: print('v1 AP已上线', x) ip1 = str(device.getText_byXpath(device.list_IP1)) # print('ip1=', ip1, x) if ip1 != '192.168.1.253': print('v1 信息已同步', x) break else: time.sleep(3) else: time.sleep(3) x = x + 1 else: raise Exception('v1 信息未能同步') apsoftware = APSoftwarePage(self.driver, self.url) apsoftware.click_APsoftware() time.sleep(1) apsoftware.input_serach(v1APname) apsoftware.click_serachB() time.sleep(1) v1_version = str(apsoftware.getText_byXpath(apsoftware.list_version1)) v1APversion2 = v1APnewversion[-12:] if v1APversion2 not in v1_version: print('AP版本确认正常') else: raise Exception('AP升级后 版本依旧与升级前一致') self.driver.quit() logger.info('test_002_autoUpodate passed')
def test_002_ExpansionSW(self): u'''开启、关闭 无线扩展 正常''' nodata = getAssertText('nodata') OnlineA = getAssertText('OnlineA') OfflineA = getAssertText('OfflineA') device = deviceMgmtPage(self.driver, self.url) device.click_deviceMgmt() time.sleep(1) device.click_no() # 取消按钮 time.sleep(1) list_nodata = device.getText_byXpath(device.list_nodata) self.assertEqual(list_nodata, nodata, msg='未开启开关 设备管理列表显示有误') netname = netNamePage(self.driver, self.url) netname.click_netName() time.sleep(1) netname.click_ok() # 点确认开启 time.sleep(1) checkOpens = netname.getAttribute_byId(netname.checkOpens, 'checktype') self.assertEqual(checkOpens, '1', msg='无线扩展默认未打开') # 0关闭,1打开 #发现AP device = deviceMgmtPage(self.driver, self.url) device.click_deviceMgmt() time.sleep(15) device.click_refreshtable() time.sleep(1) x = 0 while x < 100: device.click_refreshtable() time.sleep(1) list_state1 = device.getText_byXpath(device.list_state1) if str(list_state1) == OnlineA or OfflineA: print('扩展开启 验证通过') break else: time.sleep(3) x = x + 1 else: raise Exception('扩展打开 未发现AP上线') #关闭无线拓展 netname = netNamePage(self.driver, self.url) netname.click_netName() time.sleep(1) netname.click_checkOpen() time.sleep(1) # 断言 开关关闭 checkOpens = netname.getAttribute_byId(netname.checkOpens, 'checktype') self.assertEqual(checkOpens, '0', msg='无线扩展默认未关闭') # 0关闭,1打开 # AP列表为空 device = deviceMgmtPage(self.driver, self.url) device.click_deviceMgmt() time.sleep(1) list_nodata = device.getText_byXpath(device.list_nodata) self.assertEqual(list_nodata, nodata, msg='关闭开关 列表显示有误') print('扩展关闭 验证通过') #再打开无线扩展 netname.click_ok() # 点确认开启 time.sleep(1) self.driver.quit() logger.info('test_002_ExpansionSW passed')
def test_004_wifiMode(self): u'''无线模式、信道、带宽、无限速率''' device = deviceMgmtPage(self.driver, self.url) device.click_deviceMgmt() time.sleep(1) # 点击管理通讯协议,v2在上 device.click_Priorityv2() time.sleep(1) #003中v2 AP1 V1 AP1已经引用配置过的模板5,这里仅需要验证是否生效 # v2协议列表中的操作(排序后第一行) channel2_v2 = str( device.getAttribute_byXpath(device.list_channel1, 'data-local')) mode2_v2 = str(device.getText_byXpath(device.list_2mode1)) channel5_v2 = str( device.getAttribute_byXpath(device.list_channel51, 'data-local')) mode5_v2 = str(device.getText_byXpath(device.list_5mode1)) self.assertEqual(channel2_v2, '7', msg='v2 AP1 2.4G信道不符') self.assertEqual(mode2_v2, '11g', msg='v2 AP1 2.4G模式不符') self.assertEqual(channel5_v2, '48', msg='v2 AP1 5G信道不符') self.assertEqual(mode5_v2, '11a', msg='v2 AP1 5G模式不符') V2_AP1IP = str(device.getText_byXpath(device.list_IP1)) print(V2_AP1IP) port = gettelnet('port') username = bytes(getweb('User'), encoding="utf8") password = bytes(getweb('Passwd'), encoding="utf8") tn = telnetlib.Telnet(host=V2_AP1IP, port=port, timeout=10) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # 输入登录用户名 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'iwconfig ra0' + b'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 判断 if "Channel=7" and 'Bit Rate=54 Mb/s' in result: print('v2 AP1 2.4G信道、无线速率验证通过') else: raise Exception('v2 AP1 2.4G信道、无线速率 异常') # 如果没有则报错 tn.close() # tn.write('exit\n') tn = telnetlib.Telnet(host=V2_AP1IP, port='60023', timeout=10) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # 输入登录用户名 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'iwconfig rai0' + b'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 判断 if "Channel=48" in result: print('v2 AP1 5G信道验证通过') else: raise Exception('v2 AP1 5G信道 异常') # 如果没有则报错 tn.close() # tn.write('exit\n') tn = telnetlib.Telnet(host=V2_AP1IP, port='60023', timeout=10) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # 输入登录用户名 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'cat /etc/Wireless/RT2860/RT2860.dat | grep HT_BW' + b'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 判断 if "HT_BW=0" in result: print('v2 AP1 2.4G频道带宽验证通过') else: raise Exception('v2 AP1 2.4G频道带宽 异常') # 如果没有则报错 tn.close() # tn.write('exit\n') tn = telnetlib.Telnet(host=V2_AP1IP, port='60023', timeout=10) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # 输入登录用户名 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'cat /etc/Wireless/iNIC/iNIC_ap.dat | grep HT_BW ' + b'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 判断 if "HT_BW=0" in result: print('v2 AP1 5G频道带宽验证通过') else: raise Exception('v2 AP1 5G频道带宽 异常') # 如果没有则报错 tn.close() # tn.write('exit\n') # v1协议列表中的操作(排序后第4行) channel2_v1 = str( device.getAttribute_byXpath(device.list_channel4, 'data-local')) mode2_v1 = str(device.getText_byXpath(device.list_2mode4)) # channel5_v1 = str(device.getAttribute_byXpath(device.list_channel54,'data-local')) # mode5_v1 = str(device.getText_byXpath(device.list_5mode4)) self.assertEqual(channel2_v1, '7', msg='v2 AP1 2.4G信道不符') self.assertEqual(mode2_v1, '11g', msg='v2 AP1 2.4G模式不符') # self.assertEqual(channel5_v1, '48', msg='v2 AP1 5G信道不符') # self.assertEqual(mode5_v1, '11a', msg='v2 AP1 5G模式不符') V1_AP1IP = str(device.getText_byXpath(device.list_IP4)) print(V1_AP1IP) username = b'admin' password = b'admin' tn = telnetlib.Telnet(host=V1_AP1IP, port='60023', timeout=10) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # 输入登录用户名 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'iwconfig ra0' + b'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 判断 if "Channel=7" and 'Bit Rate=54 Mb/s' in result: print('v1 AP1 2.4G信道、无线速率验证通过') else: raise Exception('v1 AP1 2.4G信道、无线速率 异常') # 如果没有则报错 tn.close() # tn.write('exit\n') # tn = telnetlib.Telnet(host=V1_AP1IP, port='60023',timeout=10) # tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # # 输入登录用户名 # tn.read_until(b'login:'******'Password:'******'#') # tn.write(b'iwconfig rai0' + b'\n') # # 输出结果,判断 # time.sleep(1) # result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 # print('-------------------输出结果------------------------') # # 命令执行结果 # print('result:', result) # # 判断 # if "Channel=48" and 'Bit Rate=54 Mb/s' in result: # print('v1 AP1 5G信道、无线速率验证通过') # else: # raise Exception('v1 AP1 5G信道、无线速率 异常') # 如果没有则报错 # tn.close() # tn.write('exit\n') tn = telnetlib.Telnet(host=V1_AP1IP, port='60023') tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # 输入登录用户名 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'cat /etc/Wireless/RT2860/RT2860.dat | grep HT_BW' + b'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 判断 if "HT_BW=0" in result: print('v1 AP1 2.4G频道带宽验证通过') else: raise Exception('v1 AP1 2.4G频道带宽 异常') # 如果没有则报错 tn.close() # tn.write('exit\n') # tn = telnetlib.Telnet(host=V2_AP1IP, port='60023') # tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # # 输入登录用户名 # tn.read_until(b'login:'******'Password:'******'#') # tn.write(b'cat /etc/Wireless/iNIC/iNIC_ap.dat | grep HT_BW ' + b'\n') # # 输出结果,判断 # time.sleep(1) # result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 # print('-------------------输出结果------------------------') # # 命令执行结果 # print('result:', result) # # 判断 # if "HT_BW=0" in result: # print('v2 AP1 5G频道带宽验证通过') # else: # raise Exception('v2 AP1 5G频道带宽 异常') # 如果没有则报错 # tn.close() # tn.write('exit\n') self.driver.quit() logger.info('test_004_wifiMode passed')
def test_003_interface(self): u'''启用、禁用无线接口''' OnlineA = getAssertText('OnlineA') device = deviceMgmtPage(self.driver, self.url) device.click_deviceMgmt() time.sleep(1) device.click_deviceMgmt() time.sleep(1) device.click_Priorityv2() 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无线接口') # v2协议列表中的操作(排序后第一行) device.click_list_sel1() time.sleep(0.5) device.click_BatchManagement() time.sleep(3) spmb = device.selelement_byName(device.spmb) # 射频设置 time.sleep(0.5) Select(spmb).select_by_value('4') #第4个模板关闭2.4/5G接口 time.sleep(0.5) device.click_save() time.sleep(17) device.click_tab_modal() # 关闭弹窗 time.sleep(1) x = 0 while x < 20: device.click_refreshtable() time.sleep(1) list_status1 = device.getText_byXpath(device.list_status1) if list_status1 == OnlineA: print('v2 AP在线', x) channel2 = str( device.getAttribute_byXpath(device.list_channel1, 'data-local')) channel5 = str( device.getAttribute_byXpath(device.list_channel51, 'data-local')) if channel2 == '' and channel5 == '': print('v2 AP1模板禁用接口生效', x) break else: time.sleep(3) else: time.sleep(3) x = x + 1 else: raise Exception('v2 AP1模板禁用接口 出错') # v1协议列表中的操作(排序后第4行) device.click_list_sel4() time.sleep(0.5) device.click_BatchManagement() time.sleep(3) spmb = device.selelement_byName(device.spmb) # 射频设置 time.sleep(0.5) Select(spmb).select_by_value('4') # 第4个模板关闭2.4/5G接口 time.sleep(0.5) device.click_save() time.sleep(17) device.click_tab_modal() # 关闭弹窗 time.sleep(1) i = 0 while i < 20: device.click_refreshtable() time.sleep(1) list_status4 = device.getText_byXpath(device.list_status4) if list_status4 == OnlineA: print('v1 AP在线', x) channel2 = str( device.getAttribute_byXpath(device.list_channel4, 'data-local')) # channel5 = str(device.getAttribute_byXpath(device.list_channel54, 'data-local')) if channel2 == '': print('v1 AP2模板禁用接口生效', i) break else: time.sleep(3) else: time.sleep(3) i = i + 1 else: raise Exception('v1 AP2模板禁用接口 出错') #启用接口 # v2协议列表中的操作(排序后第一行) device.click_list_sel1() time.sleep(0.5) device.click_BatchManagement() time.sleep(3) spmb = device.selelement_byName(device.spmb) # 射频设置 time.sleep(0.5) Select(spmb).select_by_value('5') # 第5个模板 time.sleep(0.5) device.click_save() time.sleep(17) device.click_tab_modal() # 关闭弹窗 time.sleep(1) x = 0 while x < 20: device.click_refreshtable() time.sleep(1) list_status1 = device.getText_byXpath(device.list_status1) if list_status1 == OnlineA: print('v2 AP在线', x) channel2 = str( device.getAttribute_byXpath(device.list_channel1, 'data-local')) channel5 = str( device.getAttribute_byXpath(device.list_channel51, 'data-local')) if channel2 == '7' and channel5 == '48': print('v2 AP1模板启用接口生效', x) break else: time.sleep(3) else: time.sleep(3) x = x + 1 else: raise Exception('v2 AP1模板启用接口 出错') # v1协议列表中的操作(排序后第四行) device.click_list_sel4() time.sleep(0.5) device.click_BatchManagement() time.sleep(3) spmb = device.selelement_byName(device.spmb) # 射频设置 time.sleep(0.5) Select(spmb).select_by_value('5') # 第4个模板关闭2.4/5G接口 time.sleep(0.5) device.click_save() time.sleep(17) device.click_tab_modal() # 关闭弹窗 time.sleep(1) i = 0 while i < 20: device.click_refreshtable() time.sleep(1) list_status4 = device.getText_byXpath(device.list_status4) if list_status4 == OnlineA: print('v1 AP在线', i) channel2 = str( device.getAttribute_byXpath(device.list_channel4, 'data-local')) # channel5 = str(device.getAttribute_byXpath(device.list_channel54, 'data-local')) if channel2 == '7': print('v1 AP2模板启用接口生效', i) break else: time.sleep(3) else: time.sleep(3) i = i + 1 else: raise Exception('v1 AP2模板启用接口 出错') self.driver.quit() logger.info('test_003_interface passed')
def test_004_hairDown(self): u'''自动下发功能(重启后也能生效)''' OnlineA = getAssertText('OnlineA') netname = netNamePage(self.driver, self.url) netname.click_wirelessExtension() time.sleep(0.5) netname.click_netName() time.sleep(1) #取消掉第1个ssid的自动下发功能 list_autosend1 = str(netname.getAttribute_byXpath(netname.list_autosend1, 'checked')) if list_autosend1 == 'true': #如果ssid1 自动下发打开(性能参数和002中已经核对默认自动下发是否已打开) netname.click_list_autosend1c() time.sleep(1) list_autosend1 = str(netname.getAttribute_byXpath(netname.list_autosend1, 'checked')) self.assertEqual(list_autosend1, 'None', msg='ssid1自动下发 未取消') #勾选第四个ssid的自动下发 list_sutosend4 = str(netname.getAttribute_byXpath(netname.list_sutosend4, 'checked')) if list_sutosend4 == 'None': netname.click_list_sutosend4c() time.sleep(1) list_sutosend4 = str(netname.getAttribute_byXpath(netname.list_sutosend4, 'checked')) self.assertEqual(list_sutosend4, 'true', msg='ssid4自动下发 未开启') self.driver.quit() #1、先重启路由器 Reboot.test_reboot1(self) time.sleep(40) #刚重启好 操作AP恢复出厂 可能会引起配置未删除的问题,这里等待一下 print('重启后 稍等一下 。。。') #2、确认AP均上线 login.loginWeb(self) self.driver.implicitly_wait(10) device = deviceMgmtPage(self.driver, self.url) device.click_wirelessExtension() time.sleep(0.5) device.click_deviceMgmt() time.sleep(45) # 先确认AP均上线 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: CapPic(self.driver) logger.info(u'AP 未能同步2.4G无线接口') raise Exception('AP 未能同步2.4G无线接口') # 3、设备管理恢复AP验证自动下发功能 APmanagement.test_006_resertAP(self) logger.info('test_004_hairDown passed')
def test_001_open(self): u'''启用负载均衡''' v1APname = getweb('v1APname') OnlineA = getAssertText('OnlineA') port = gettelnet('port') username = bytes(getweb('User'), encoding="utf8") password = bytes(getweb('Passwd'), encoding="utf8") device = deviceMgmtPage(self.driver, self.url) #1 查看未启用负载均衡 device.click_wirelessExtension() time.sleep(0.5) device.click_deviceMgmt() time.sleep(1) # 点击管理通讯协议,v2在上 device.click_Priorityv2() time.sleep(1) # 先确认AP均上线 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: CapPic(self.driver) logger.info(u'AP 未能同步2.4G无线接口') raise Exception('AP 未能同步2.4G无线接口') #获取 wa3000N的IP device.input_search(v1APname) device.click_searchB() list_ip1 = device.getText_byXpath(device.list_IP1) #telnet tn = telnetlib.Telnet(host=list_ip1, port=port) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # 输入登录用户名 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'iwpriv ra0 get Config | grep uttMaxStaNum' + b'\n') # 无线隔离 # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 判断 if ("uttMaxStaNum: 0" in result) or( "uttMaxStaNum: 32") in result: logger.info(u'负载均衡未开启 AP资源数正常') else: logger.info(u'负载均衡未开启 AP资源数异常') logger.info('result:', result) raise Exception('负载均衡未开启 AP资源数异常') tn.close() # tn.write('exit\n') #2 开启负载均衡 enableA = getAssertText('enableA') load = loadBalancingPage(self.driver, self.url) load.click_loadBalancing() time.sleep(1) load.click_add() time.sleep(1) load.input_loadBalanceNames('test') load.click_selAP1() load.click_toright() time.sleep(0.5) load.click_selAP1() load.click_toright() time.sleep(0.5) load.click_selAP1() load.click_toright() time.sleep(0.5) load.click_selAP1() load.click_toright() time.sleep(0.5) load.click_save() time.sleep(1) liststate = load.getText_byXpath(load.list_state) self.assertEqual(liststate,enableA,msg='AP负载均衡未启用') checkOpens = load.getAttribute_byId(load.checkOpens,'checktype') #1开启,0关闭 self.assertEqual(checkOpens,'0',msg='负载均衡 开关默认未关闭') load.click_checkOpen() time.sleep(1) checkOpens = load.getAttribute_byId(load.checkOpens, 'checktype') self.assertEqual(checkOpens, '1', msg='负载均衡 开启失败') time.sleep(10) tn = telnetlib.Telnet(host=list_ip1, port=port) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 # 输入登录用户名 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'iwpriv ra0 get Config | grep uttMaxStaNum' + b'\n') # 无线隔离 # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 判断 if ("uttMaxStaNum: 0") not in result and ("uttMaxStaNum: 32") not in result: logger.info('负载均衡开启 AP资源数正常') else: logger.info('负载均衡开启 AP资源数异常') print('result:', result) logger.info('result:', result) raise Exception('负载均衡开启 AP资源数异常') tn.close() # tn.write('exit\n') self.driver.quit() logger.info('test_001_open passed')