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_PortMirror(self): u'''端口镜像(某些设备可能不支持)''' Monitorport = getAssertText('Monitorport') Monitoredport = getAssertText('Monitoredport') portmirrorP = getParameter('portmirrorP') Support = getExcelValue(portmirrorP) switchconfig = switchConfigPage(self.driver, self.url) if Support == '√': try: self.driver.implicitly_wait(2) switchconfig.find_switchConfig() except NoSuchElementException: CapPic(self.driver) logger.info(u'不支持交换配置,则不支持端口镜像,与参数表不相符') raise Exception('不支持交换配置,则不支持端口镜像,与参数表不相符') else: time.sleep(1) try: switchconfig.find_portMirror() except NoSuchElementException: raise Exception('不支持端口镜像,与参数表不相符') else: logger.info(u'支持端口镜像,与参数表相符') MirrorEns = str( switchconfig.getAttribute_byXpath( switchConfigPage.MirrorEns, 'checked')) self.assertEqual(MirrorEns, 'true', msg='端口镜像 默认未关闭') line1 = str( switchconfig.getText_byXpath(switchconfig.Monitorport)) self.assertEqual(line1, Monitorport, msg='监控端口 名称不一致') line2 = str( switchconfig.getText_byXpath( switchconfig.Monitoredport)) self.assertEqual(line2, Monitoredport, msg='被监控端口 名称不一致') elif Support == '×': try: self.driver.implicitly_wait(2) switchconfig.find_switchConfig() except NoSuchElementException: logger.info('不支持交换配置,则不支持端口镜像,与参数表相符') else: time.sleep(1) try: switchconfig.find_portMirror() except NoSuchElementException: logger.info(u'不支持 端口镜像,与参数表相符') 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_002_PortMirror passed')
def tearDown(self): nodata = getAssertText('nodata') #删除ipsec login.loginWeb(self) self.driver.implicitly_wait(10) ipsec = IPsecPage(self.driver, self.url) ipsec.click_VPNConfig() time.sleep(0.5) ipsec.click_IPSec() time.sleep(1) ipsec.click_selall() time.sleep(0.2) ipsec.click_delall() time.sleep(1) ipsec.click_ok() time.sleep(2) list_nodata = ipsec.getText_byXpath(ipsec.list_nodata) if list_nodata == nodata: logger.info(u'R1 ipsec 已删除') else: CapPic(self.driver) logger.info(u'R1 ipsec删除失败') raise Exception(u'R1 ipsec删除失败') self.driver.quit() login.test_enableLoginWeb(self, url=vpnRouteUrl) ipsec = IPsecPage(self.driver, self.url) ipsec.click_VPNConfig() time.sleep(0.5) ipsec.click_IPSec() time.sleep(1) ipsec.click_selall() time.sleep(0.2) ipsec.click_delall() time.sleep(1) ipsec.click_ok() time.sleep(2) try: #VPN 路由器是中文简体,在测试其他语言版本时,删除的nodata会不一致 ipsec.find_list_nodataX() except NoSuchElementException: CapPic(self.driver) logger.info(u'R2 ipsec删除失败') raise Exception(u'R2 ipsec删除失败') else: logger.info(u'R2 ipsec 已删除') # list_nodata = ipsec.getText_byXpath(ipsec.list_nodata) # if list_nodata == nodata: # logger.info(u'R2 ipsec 已删除') # else: # CapPic(self.driver) # logger.info(u'R2 ipsec删除失败') # raise Exception(u'R2 ipsec删除失败') logger.info('tearDown over') logger.info('%s' % ('=' * 50))
def test_005_RemoteAuth(self): u'''远程认证(某些设备可能不支持)''' remoteAuthP = getParameter('remoteAuthP') Support = getExcelValue(remoteAuthP) remoteauth = Organization_userAuthPage(self.driver, self.url) remoteauth.click_userAuth() time.sleep(1) if Support == '√': logger.info(u'参数支持远程认证') try: self.driver.implicitly_wait(2) remoteauth.click_remoteConfig() except AttributeError or NoSuchElementException: CapPic(self.driver) logger.info(u'软件不支持远程认证,与参数表不符') raise Exception(u'软件不支持远程认证,与参数表不符') else: logger.info(u'软件支持远程认证,与参数表相符') self.driver.implicitly_wait(10) time.sleep(1) #判断没有无流量下线 try: self.driver.implicitly_wait(2) remoteauth.find_wllxxsj() except ElementNotVisibleException: pass except ElementNotInteractableException: pass else: raise Exception('远程认证界面存在无流量下线') #域名名称 remoteauth.click_ymmc() # 白名单列表 remoteauth.click_bmdlb() elif Support == '×': logger.info(u'参数不支持远程认证') try: self.driver.implicitly_wait(2) remoteauth.click_remoteConfig() except AttributeError or NoSuchElementException: logger.info(u'软件不支持远程认证,与参数表相符') 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_005_RemoteAuth passed')
def test_001_Modelcorrelation(self): u'''系统状态 型号相关''' vmodel = getExcelValue(getParameter('ProductmodelP')) print('性能参数中产品型号', vmodel) login.loginWeb(self) sysstatic = sysStaticPage(self.driver, self.url) sysstatic.click_systemWatch() time.sleep(0.5) sysstatic.click_sysStatic() time.sleep(1) #系统负载 - 产品型号 webmodel = (sysstatic.getText_byXpath(sysstatic.Model)).upper() print('页面产品型号', webmodel) if webmodel in vmodel: logger.info('产品型号 一致') elif webmodel.replace(' ', '') in vmodel: #部分性能参数型号中未包含空格 logger.info('产品型号 一致') elif 'HiPER' or '商睿' in vmodel: vmodel1 = '商睿 ' + vmodel.split(r' ')[1] vmodel2 = 'HIPER ' + vmodel.split(r' ')[1] #字母已切换大写 # print(vmodel1,vmodel2) if webmodel in vmodel1 or webmodel in vmodel2: logger.info('产品型号 一致') else: print('页面产品型号', webmodel) print('性能参数中产品型号', vmodel) logger.info(u'软件页面产品型号 与性能参数显示不一致1') logger.info('页面产品型号', webmodel) logger.info('性能参数中产品型号', vmodel) CapPic(self.driver) raise Exception('软件页面产品型号 与性能参数显示不一致1') else: logger.info(u'软件页面产品型号 与性能参数显示不一致2') CapPic(self.driver) raise Exception('软件页面产品型号 与性能参数显示不一致2') if '硬件' in vmodel: hdVersion = 'V' + vmodel.split(r'V')[1][:-1] else: hdVersion = 'V1.0' print(hdVersion) wb_hdmodel = sysstatic.getText_byXpath(sysstatic.hdmodel) if wb_hdmodel == hdVersion: logger.info(u'硬件版本 与性能参数一致') else: logger.info(u'硬件版 与性能参数显示不一致') CapPic(self.driver) raise Exception('硬件版 与性能参数显示不一致') self.driver.quit() logger.info('test_001_Modelcorrelation 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_003_PortVLAN(self): u'''Port VLAN(某些设备可能不支持)''' portVlanP = getParameter('portVlanP') Support = getExcelValue(portVlanP) switchconfig = switchConfigPage(self.driver, self.url) if Support == '√': try: self.driver.implicitly_wait(2) switchconfig.find_switchConfig() except NoSuchElementException: CapPic(self.driver) logger.info(u'不支持交换配置,则不支持端口VLAN,与参数表不相符') raise Exception('不支持交换配置,则不支持端口VLAN,与参数表不相符') else: time.sleep(1) try: switchconfig.find_portVlan() except NoSuchElementException: raise Exception('不支持 端口VLAN,与参数表不相符') else: logger.info(u'支持 端口VLAN,与参数表相符') time.sleep(0.5) line1 = str( switchconfig.getText_byXpath(switchconfig.VLAN1)) self.assertEqual(line1, 'VLAN1', msg='VLAN1 名称不一致') elif Support == '×': try: self.driver.implicitly_wait(2) switchconfig.find_switchConfig() except NoSuchElementException: logger.info('不支持交换配置,则不支持端口VLAN,与参数表相符') else: time.sleep(1) try: switchconfig.find_portVlan() except NoSuchElementException: logger.info(u'不支持 端口VLAN,与参数表相符') else: CapPic(self.driver) logger.info(u'软件支持端口VLAN,与参数表不符') raise Exception(u'软件支持端口VLAN,与参数表不符') else: logger.info(u'参数表读取异常') logger.info(u'参数表读取值为:', Support) raise Exception(u'参数表读取异常') self.driver.quit() logger.info('test_003_PortVLAN 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_test3(self): u'''已删除账号验证 只读权限验证''' pageTipWarnA = getAssertText('pageTipWarnA') #使用test账号不能登陆管理DUT login.test_unableLoginWeb(self, username='******', password='******') self.driver.implicitly_wait(10) self.driver.quit() #使用test1账号可以登陆管理DUT login.test_enableLoginWeb(self, username='******', password='******') self.driver.implicitly_wait(10) # 只读权限test1 尝试删除test1/test1账号,应该不成功 administrator = ManagementPolicyPage(self.driver, self.url) administrator.click_sysConfig() time.sleep(0.5) administrator.click_ManagementPolicy() time.sleep(1) #尝试删除test1/test1账号,应该不成功 administrator.click_listDelete1() time.sleep(1) administrator.click_ok() time.sleep(1) # 断言删除时候提示信息(logout_span)元素不为空:代表无法删除 pageTip_warn = administrator.getText_byClass( administrator.pageTip_warn) if pageTip_warn != pageTipWarnA: 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_003_NetSniper(self): u'''内网网络尖兵(某些型号不支持)''' nodata = getAssertText('nodata') NetSniperP = getParameter('NetSniperP') Support = getExcelValue(NetSniperP) print(Support) netSniper = NetSniperPage(self.driver, self.url) netSniper.click_BehaviorManagement() time.sleep(0.5) if Support == '√': try: self.driver.implicitly_wait(2) netSniper.click_NetSniper() except AttributeError or NoSuchElementException: CapPic(self.driver) logger.info(u'软件不支持内网网络尖兵,与参数表不符') raise Exception(u'软件不支持内网网络尖兵,与参数表不符') else: logger.info(u'软件支持内网网络尖兵,与参数表相符') self.driver.implicitly_wait(10) time.sleep(1) listtips = str(netSniper.getText_byXpath(netSniper.listnodata)) self.assertEqual(listtips, nodata, msg='管制IP列表 默认不为空') netSniper.click_NetSniperconfig() time.sleep(0.5) switch = str( netSniper.getAttribute_byName(netSniper.enable, 'checked')) self.assertEqual(switch, 'None', msg='网络尖兵 默认开启') elif Support == '×': try: self.driver.implicitly_wait(2) netSniper.click_NetSniper() except AttributeError or NoSuchElementException: logger.info(u'软件不支持内网网络尖兵,与参数表相符') 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_003_NetSniper passed')
def find_element(self, *loc): try: WebDriverWait(self.driver, 10).until(EC.visibility_of_all_elements_located(loc)) return self.driver.find_element(*loc) except: CapPic(self.driver) logger.info(u"%s 页面中未能找到 %s 元素" % (self, loc)) self.driver.quit()
def click(self, loc): try: loc = getattr(self, "_%s" % loc) self.find_element(*loc).click except AttributeError: # 当元素找不到的时候调用截图函数 CapPic(self.driver) # 元素找不到时在日志中记录信息 logger.info(u'%s 页面中未找到 %s 元素' % (self, loc))
def browserstart(): browsername = getbrowserinfo('browser') Url = getbrowserinfo('Url') if browsername == 'Chrome': driver = webdriver.Chrome() driver.get(Url) elif browsername == 'Ie': driver = webdriver.Ie() driver.get(Url) CapPic(driver)
def send_keys(self, loc, value): try: #获取元素的属性值,以便识别元素 loc = getattr(self, "_%s" % loc) #查找元素并输入相关数据 self.find_element(*loc).send_keys(value) except AttributeError: # 当元素找不到的时候调用截图函数 CapPic(self.driver) # 元素找不到时在日志中记录信息 logger.info(u'%s 页面中未找到 %s 元素' % (self, loc))
def test_001_vlanInterface(self): u'''VLAN 虚接口''' vlanPortP = getParameter('vlanPortP') Support = getExcelValue(vlanPortP) lanpage = NetworkConfig_LANpage(self.driver, self.url) lanpage.click_LANconfig() time.sleep(1) lanpage.click_add() time.sleep(1) selsxjk = lanpage.selelement_byName(lanpage.selsxjk) if Support == '√': try: self.driver.implicitly_wait(2) Select(selsxjk).select_by_value('vlanid') except NoSuchElementException: CapPic(self.driver) logger.info(u'软件不支持VLAN 虚接口,与参数表不符') raise Exception(u'软件不支持VLAN 虚接口,与参数表不符') else: logger.info(u'软件支持VLAN 虚接口,与参数表相符') time.sleep(0.5) elif Support == '×': try: self.driver.implicitly_wait(2) Select(selsxjk).select_by_value('vlanid') except NoSuchElementException: logger.info(u'软件支持VLAN 虚接口,与参数表不符') else: CapPic(self.driver) logger.info(u'软件支持VLAN 虚接口,与参数表不符') raise Exception(u'软件支持VLAN 虚接口,与参数表不符') else: logger.info(u'参数表读取异常') logger.info(u'参数表读取值为:', Support) raise Exception(u'参数表读取异常') Select(selsxjk).select_by_value('default') time.sleep(0.5) self.driver.quit() logger.info('test_001_vlanInterface passed')
def send_keys(self, loc, vaule, clear_first=True, click_first=True): try: loc = getattr(self, "%s" % loc) if clear_first: self.find_element(*loc).click() if click_first: self.find_element(*loc).clear() self.find_element(*loc).send_keys(vaule) except AttributeError: CapPic(self.driver) logger.info(u"%s 页面中未能找到 %s 元素" % (self, loc)) self.driver.quit()
def find_element(self, *loc): try: #loc是表示属性元组本身,*loc表示属性元组的值,EC.visibility_of_element_located需要传入两个参数 #因此,此处智能是loc WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(loc)) #此处返回元素的属性及属性值,故使用*loc return self.driver.find_element(*loc) except: #当元素找不到的时候调用截图函数 CapPic(self.driver) #元素找不到时在日志中记录信息 logger.info(u'%s 页面中未找到 %s 元素' % (self, loc))
def test_007_RemotePlannedTask(self): u'''计划任务(某些型号不支持AP的计划任务)''' APnumP = getParameter('APnumP') Support = getExcelValue(APnumP) scheduled = ScheduledTaskPage(self.driver, self.url) scheduled.click_ScheduledTask() time.sleep(1) scheduled.click_add() time.sleep(1) selobj = scheduled.selelement_byName(scheduled.obj) Select(selobj).select_by_value('01') #01本设备 time.sleep(0.5) if Support != None and Support != '×': logger.info(u'参数支持 AP管理') try: Select(selobj).select_by_value('02') # 02 AP except ElementNotVisibleException: CapPic(self.driver) logger.info(u'软件不支持AP的计划任务,与参数表不符') raise Exception('软件不支持AP的计划任务,与参数表不符') else: logger.info(u'软件支持AP的计划任务,与参数表相符') time.sleep(0.5) selcontent = scheduled.selelement_byName(scheduled.selContent) Select(selcontent).select_by_value('rebootS') # 仅一个选择 time.sleep(0.5) else: logger.info(u'参数不支持 AP管理') try: self.driver.implicitly_wait(2) Select(selobj).select_by_value('02') except ElementNotVisibleException: logger.info(u'软件不支持AP的计划任务,与参数表相符') else: CapPic(self.driver) logger.info(u'软件支持AP的计划任务,与参数表不符') raise Exception(u'软件支持AP的计划任务,与参数表不符') self.driver.quit() logger.info('test_007_RemotePlannedTask passed')
def test_002_editDelSSID(self): u'''网络名称修改、删除''' netname = netNamePage(self.driver, self.url) # 修改网络名称 netname.click_wirelessExtension() time.sleep(0.5) netname.click_netName() time.sleep(1) #编辑第4个ssid netname.click_list_edit4() time.sleep(1) netname.input_ssid('ssid_all中2') netname.click_next_tab() time.sleep(0.5) netname.click_next_tab() time.sleep(0.5) netname.click_save() time.sleep(1) list_ssid4 = str(netname.getText_byXpath(netname.list_ssid4)) self.assertEqual(list_ssid4, 'ssid_all中2', msg='ssid4 与修改不一致') #删除 netname.click_list_del4() time.sleep(1) netname.click_ok() time.sleep(1) list_nodata4 = str(netname.getText_byXpath(netname.list_nodata4)) if list_nodata4 == '' or ' ': print('ssid 删除成功') else: CapPic(self.driver) logger.info(u'ssid 删除失败') raise Exception('删除失败') # 再新增第四个ssid netname.click_add() time.sleep(1) netname.input_zoneName('all') netname.input_ssid('ssid_all中') netname.click_next_tab() time.sleep(0.5) netname.click_next_tab() time.sleep(0.5) netname.click_save() time.sleep(1) list_ssid4 = str(netname.getText_byXpath(netname.list_ssid4)) self.assertEqual(list_ssid4, 'ssid_all中', msg='ssid4 与设置不一致') self.driver.quit() logger.info('test_002_editDelSSID passed')
def test_002_UserFlowRanking(self): u'''今日用户网络流量排名 显示及跳转''' login.loginWeb(self) sysstatic = sysStaticPage(self.driver, self.url) sysstatic.click_systemWatch() time.sleep(0.5) sysstatic.click_sysStatic() time.sleep(1) sysstatic.click_more2() time.sleep(2) url = self.driver.current_url if '#/user_management/user_state' in url: logger.info(u'今日用户网络流量排名 跳转到用户状态 验证正常') else: CapPic(self.driver) logger.info(u'今日用户网络流量排名 跳转到用户状态 验证正常') raise Exception(u'今日用户网络流量排名 跳转到用户状态 验证正常') self.driver.back() sysstatic = sysStaticPage(self.driver, self.url) try: list_user = sysstatic.getText_byXpath(sysstatic.list_user) except NoSuchElementException: CapPic(self.driver) logger.info(u'系统状态-今日用户网络流量排名 未显示数据') raise Exception(u'系统状态-今日用户网络流量排名 未显示数据') else: if 'Guest' in list_user: logger.info(u'系统状态-今日用户网络流量排名 显示数据验证通过 ') else: CapPic(self.driver) logger.info(u'系统状态-今日用户网络流量排名 显示数据 异常') raise Exception(u'系统状态-今日用户网络流量排名 显示数据 异常') self.driver.quit() logger.info('test_002_UserFlowRanking passed')
def BrowserStart(): browsername = GetBrowserInfo("BrowserName") url = GetBrowserInfo('Url') if browsername == 'Chrome': logger.info('启动Chrome浏览器') driver = webdriver.Chrome() if browsername == 'Firefox': logger.info('启动Firefox浏览器') driver = webdriver.firefox() if browsername == 'IE': ogger.info('启动IE浏览器') driver = webdriver.ie() logger.info('打开测试网页') driver.get(url) CapPic(driver)
def BrowserStart(): browsername = getBrowserinfo('BrowserName') url = getBrowserinfo('Url') # print(browsername) # 判断浏览器的类型,浏览器的分解 if (browsername == 'Chrome'): driver = webdriver.Chrome() logger.info("启动浏览器") driver.get(url) logger.info("打开测试网页") CapPic(driver) if (browsername == 'Firefox'): driver = webdriver.Firefox() driver.get(url)
def tearDown(self): #修改回默认 以访中间出错 wanpage = NetworkConfig_wanpage(self.driver, self.url) save = 0 enable1 = wanpage.getAttribute_byXpath(wanpage.enable1, 'selected') if hwNatP == '√': # 包含硬件转转发开关 if enable1 != 'true': FastForwardEnable = wanpage.selelement_byName('FastForwardEnable') Select(FastForwardEnable).select_by_value('NatAuto') save = 1 enable2 = wanpage.getAttribute_byXpath(wanpage.enable2, 'selected') if enable2 != 'true': FastForwardMode = wanpage.selelement_byName('FastForwardMode') Select(FastForwardMode).select_by_value('hwNat') save = 1 else: if enable1 != 'true': FastForwardEnable = wanpage.selelement_byName('FastForwardEnable') Select(FastForwardEnable).select_by_value('NatAuto') save = 1 if save == 1: wanpage.click_save() time.sleep(2) # 等待弹窗提示成功 i = 0 while i < 80: try: self.driver.implicitly_wait(1) wanpage.find_tipsshowin() except NoSuchElementException: time.sleep(1) i = i + 1 print(i) else: tips = str(wanpage.getAttribute_byClass(wanpage.tipsshowin, 'tip-sign')) print(tips, i) if tips != 'success': CapPic(self.driver) logger.info(u'极速模式保存 异常') raise Exception(u'极速模式保存 异常') break else: raise Exception(u'极速模式保存 未弹出提示框') time.sleep(2) self.driver.quit() logger.info('tearDown over') logger.info('%s' % ('=' * 50))
def test_003_WEBtimeout(self, timeout='1'): #因为字母顺序问题 该项会在最后执行 u'''修改UI超时时间''' #修改UI超时时间 accessStrategy = ManagementPolicyPage(self.driver, self.url) accessStrategy.input_sessionLife(timeout) accessStrategy.click_save() self.driver.quit() login.loginWeb(self) #任意点击一个页面,这里点击网络配置-内网配置 lanconfig = NetworkConfig_LANpage(self.driver, self.url) lanconfig.click_NetworkConfig() time.sleep(0.5) lanconfig.click_LANconfig() time.sleep(1) print('等待超时时间,在这里等待80s') time.sleep(120) #等待超时时间后,任意点击其他页面 测试超时(返回登录页面) accessStrategy = ManagementPolicyPage(self.driver, self.url) accessStrategy.click_sysConfig() time.sleep(0.5) accessStrategy.click_ManagementPolicy() time.sleep(2) url = self.driver.current_url if '/login.html' not in url: CapPic(self.driver) logger.info(u"未跳回登录页面") raise Exception('未跳回登录页面') self.driver.quit() # 将超时时间改回默认值 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) accessStrategy = ManagementPolicyPage(self.driver, self.url) # 进入系统配置-网管策略-网管访问策略 accessStrategy.click_sysConfig() time.sleep(0.5) accessStrategy.click_ManagementPolicy() time.sleep(1) accessStrategy.click_AccessPolicy() time.sleep(1) accessStrategy.input_sessionLife('10') accessStrategy.click_save() self.driver.quit() logger.info('test_003_WEBtimeout passed')
def test_002_PolicyRoute(self): u'''策略路由''' policyP = getParameter('policyP') Support = getExcelValue(policyP) if Support != '×': logger.info(u'参数支持策略路由') routeconfig = RouteConfigPage(self.driver,self.url) try: self.driver.implicitly_wait(2) routeconfig.click_Routeconfig() time.sleep(1) routeconfig.click_PolicyRoute() time.sleep(0.5) except AttributeError or NoSuchElementException: CapPic(self.driver) logger.info(u'软件不支持策略路由,与参数表不符') raise Exception(u'软件不支持策略路由,与参数表不符') self.driver.implicitly_wait(10) # 新增 routeconfig.click_addPolicy() time.sleep(1) routeconfig.click_sourceIP() time.sleep(1) routeconfig.click_userall() time.sleep(0.5) routeconfig.click_usergroup() time.sleep(0.5) routeconfig.click_userip() time.sleep(0.5) routeconfig.click_saveW() time.sleep(0.5) routeconfig.click_dstAddr() time.sleep(1) routeconfig.click_dstgroup() time.sleep(0.5) routeconfig.click_destIP() time.sleep(0.5) self.driver.quit() logger.info('test_002_PolicyRoute passed')
def test_004_test4(self): u'''删除新增账号 admin登录验证''' #删除test1/test1,会退出当前登陆(test1已经修改了权限 用admin删除) login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) administrator = ManagementPolicyPage(self.driver, self.url) # 进入系统配置-网管策略-系统管理员 administrator.click_sysConfig() time.sleep(0.5) administrator.click_ManagementPolicy() time.sleep(1) #删除test1/test1 administrator.click_listDelete1() time.sleep(1) administrator.click_ok() time.sleep(1) # 断言列表框里第二行没有值、元素为空:代表删除成功 list2_nodata = administrator.getText_byXpath( administrator.list2_nodata) if list2_nodata != ' ': CapPic(self.driver) logger.info(u'删除test1/test1 有误') raise Exception('删除test1/test1 有误') else: print('删除test1/test1 通过') self.driver.quit() #删除后使用test1不可以登录 login.test_unableLoginWeb(self, username='******', password='******') time.sleep(1) self.driver.quit() #使用admin/admin可以登陆 login.test_enableLoginWeb(self, username='******', password='******') time.sleep(1) self.driver.quit() print('管理员账号测试 验证通过')
def test_003_Template(self): u'''AP配置模板''' login.loginWeb(self) self.driver.implicitly_wait(10) rftemplate = RftemplatePage(self.driver, self.url) if str(Support).isdigit(): #判断字符串是否为数字 logger.info(u'参数支持AP管理') try: self.driver.implicitly_wait(2) # 进入无线拓展_射频模板 rftemplate.click_wirelessExtension() time.sleep(0.5) rftemplate.click_rfTemplate() 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) rftemplate.click_list_edit1() time.sleep(1) #2.4G #无线功能开启/关闭 en_wireless = str( rftemplate.getAttribute_byXpath(rftemplate.en_wirelessS, 'checked')) self.assertEqual(en_wireless, 'true', msg='模板2.4G ssid默认未开启') rftemplate.click_C_wireless() time.sleep(0.2) rftemplate.click_C_wireless1() time.sleep(0.2) selmode = rftemplate.selelement_byName(rftemplate.mode) Select(selmode).select_by_value('1') #1 仅11g time.sleep(0.5) selrate = rftemplate.selelement_byName(rftemplate.rate) Select(selrate).select_by_value('54') #54M time.sleep(0.2) Select(selrate).select_by_value('0') # 自动 time.sleep(0.2) Select(selmode).select_by_value('2') # 2 仅11n time.sleep(0.5) Select(selrate).select_by_value('150') # 150M time.sleep(0.2) Select(selrate).select_by_value('300') # 300M time.sleep(0.2) Select(selrate).select_by_value('0') # 自动 time.sleep(0.2) Select(selmode).select_by_value('3') # 3 b/g/n time.sleep(0.5) selpower = rftemplate.selelement_byName( rftemplate.power) #无线传输功率 Select(selpower).select_by_value('1') #1 手动 time.sleep(1) selmanual = rftemplate.selelement_byName(rftemplate.manual) Select(selmanual).select_by_value('2') # 中 time.sleep(0.2) Select(selmanual).select_by_value('1') # 低 time.sleep(0.2) Select(selmanual).select_by_value('3') # 高 time.sleep(0.2) Select(selpower).select_by_value('0') # 0 自动 time.sleep(0.5) selchannel = rftemplate.selelement_byName(rftemplate.channel) Select(selchannel).select_by_value('1') time.sleep(0.2) Select(selchannel).select_by_value('2') time.sleep(0.2) Select(selchannel).select_by_value('3') time.sleep(0.2) Select(selchannel).select_by_value('4') time.sleep(0.2) Select(selchannel).select_by_value('5') time.sleep(0.2) Select(selchannel).select_by_value('6') time.sleep(0.2) Select(selchannel).select_by_value('7') time.sleep(0.2) Select(selchannel).select_by_value('8') time.sleep(0.2) Select(selchannel).select_by_value('9') time.sleep(0.2) Select(selchannel).select_by_value('10') time.sleep(0.2) Select(selchannel).select_by_value('11') time.sleep(0.2) Select(selchannel).select_by_value('0') # 0 自动 time.sleep(0.5) selBW = rftemplate.selelement_byName(rftemplate.BW) Select(selBW).select_by_value('0') #0 20M time.sleep(0.2) Select(selBW).select_by_value('1') #自动 time.sleep(0.2) rftemplate.click_gjxxa() #高级选项 time.sleep(0.5) SGI = str( rftemplate.getAttribute_byXpath(rftemplate.SGIs, 'checked')) self.assertEqual(SGI, 'true', msg='短间隔 默认未开启') rftemplate.click_SGIc() wmm = str( rftemplate.getAttribute_byXpath(rftemplate.wmms, 'checked')) self.assertEqual(wmm, 'true', msg='wmm 默认未开启') rftemplate.click_wmmc() preamble = str( rftemplate.getAttribute_byXpath(rftemplate.preambles, 'checked')) self.assertEqual(preamble, 'true', msg='短前导码 默认未开启') rftemplate.click_preamblesc() rftemplate.input_BeaconPeriod('200') #信标间隔 #5G # 无线功能开启/关闭 en_wireless_5 = str( rftemplate.getAttribute_byXpath(rftemplate.en_wireless5S, 'checked')) self.assertEqual(en_wireless_5, 'true', msg='模板2.4G ssid默认未开启') rftemplate.click_C_wireless5() time.sleep(0.2) rftemplate.click_C_wireless51() time.sleep(0.2) selmode_5 = rftemplate.selelement_byName( rftemplate.mode_5) # 无线模式 Select(selmode_5).select_by_value('4') # 仅11a time.sleep(0.2) BW_5 = rftemplate.selelement_byName(rftemplate.BW_5) # 频道带宽 Select(BW_5).select_by_value('0') # 0 20M time.sleep(0.2) Select(BW_5).select_by_value('1') # 自动 time.sleep(0.2) Select(selmode_5).select_by_value('5') # 11a/n混合 time.sleep(0.2) Select(BW_5).select_by_value('0') # 0 20M time.sleep(0.2) Select(BW_5).select_by_value('1') # 自动 time.sleep(0.2) Select(selmode_5).select_by_value('6') # 11vht AC/AN/A time.sleep(0.2) VHTBW = rftemplate.selelement_byName(rftemplate.VHTBW) # 频道带宽 Select(VHTBW).select_by_value('0') # 0 20M/40 time.sleep(0.2) Select(VHTBW).select_by_value('1') # 80M time.sleep(0.2) Select(BW_5).select_by_value('0') # 0 20M time.sleep(0.2) Select(BW_5).select_by_value('1') # 自动 time.sleep(0.2) Select(selmode_5).select_by_value('7') # 11vht AC/AN time.sleep(0.2) Select(VHTBW).select_by_value('0') # 0 20M/40 time.sleep(0.2) Select(VHTBW).select_by_value('1') # 80M time.sleep(0.2) Select(BW_5).select_by_value('0') # 0 20M time.sleep(0.2) Select(BW_5).select_by_value('1') # 自动 time.sleep(0.2) power_5 = rftemplate.selelement_byName( rftemplate.power_5) # 无线传输功率 Select(power_5).select_by_value('1') # 1 手动 time.sleep(1) manual_5 = rftemplate.selelement_byName(rftemplate.manual_5) CapPic(self.driver) Select(manual_5).select_by_value('2') # 中 time.sleep(0.2) Select(manual_5).select_by_value('1') # 低 time.sleep(0.2) Select(manual_5).select_by_value('3') # 高 time.sleep(0.2) Select(power_5).select_by_value('0') # 0 自动 time.sleep(0.5) channel_5 = rftemplate.selelement_byName(rftemplate.channel_5) Select(channel_5).select_by_value('36') time.sleep(0.2) Select(channel_5).select_by_value('40') time.sleep(0.2) Select(channel_5).select_by_value('44') time.sleep(0.2) Select(channel_5).select_by_value('48') time.sleep(0.2) Select(channel_5).select_by_value('149') time.sleep(0.2) Select(channel_5).select_by_value('153') time.sleep(0.2) Select(channel_5).select_by_value('157') time.sleep(0.2) Select(channel_5).select_by_value('161') time.sleep(0.2) Select(channel_5).select_by_value('165') time.sleep(0.2) Select(channel_5).select_by_value('0') # 0 自动 time.sleep(0.2) #高级选项 SGI_5 = str( rftemplate.getAttribute_byXpath(rftemplate.SGI5s, 'checked')) self.assertEqual(SGI_5, 'true', msg='5G短间隔 默认未开启') rftemplate.click_SGI5c() wmm_5 = str( rftemplate.getAttribute_byXpath(rftemplate.wmm5s, 'checked')) self.assertEqual(wmm_5, 'true', msg='5G wmm 默认未开启') rftemplate.click_wmm5c() preamble_5 = str( rftemplate.getAttribute_byXpath(rftemplate.preamble5s, 'checked')) self.assertEqual(preamble_5, 'true', msg='5G 短前导码 默认未开启') rftemplate.click_preambles5c() rftemplate.input_BeaconPeriod5('200') # 信标间隔 time.sleep(0.2) else: logger.info(u'参数不支持AP管理') try: self.driver.implicitly_wait(2) rftemplate.click_wirelessExtension() time.sleep(0.5) rftemplate.click_rfTemplate() 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_003_Template 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_002_SSIDconfig(self): u'''网络名称设置&加密方式''' APnumP = getParameter('APnumP') Support = getExcelValue(APnumP) login.loginWeb(self) self.driver.implicitly_wait(10) if str(Support).isdigit(): #判断字符串是否为数字 logger.info(u'参数支持AP管理') wirelessTipsA = getAssertText('wirelessTipsA') vlanPortP = getParameter('vlanPortP') Support = getExcelValue(vlanPortP) if Support == '√': # 支持vlan接口 logger.info(u'参数表支持vlan接口') # 进入网络配置-内网配置 配置vlan接口 lanpage = NetworkConfig_LANpage(self.driver, self.url) lanpage.click_NetworkConfig() time.sleep(0.5) lanpage.click_LANconfig() time.sleep(1) #vlan 1000 lanpage.click_add() time.sleep(1) lanpage.input_lanIpName('1000') lanpage.input_lanIp('192.168.10.1') lanpage.input_lanNetmask('255.255.255.0') selsxjk = lanpage.selelement_byName(lanpage.selsxjk) Select(selsxjk).select_by_value('vlanid') time.sleep(1) lanpage.input_dhcpVid('1000') lanpage.click_save() time.sleep(1) # vlan 1999 lanpage.click_add() time.sleep(1) lanpage.input_lanIpName('1999') lanpage.input_lanIp('192.168.100.1') lanpage.input_lanNetmask('255.255.255.0') selsxjk = lanpage.selelement_byName(lanpage.selsxjk) Select(selsxjk).select_by_value('vlanid') time.sleep(1) lanpage.input_dhcpVid('1999') lanpage.click_save() time.sleep(1) #断言 list_name2 = str(lanpage.getText_byXpath(lanpage.list_name2)) list_name3 = str(lanpage.getText_byXpath(lanpage.list_name3)) list_ip2 = str(lanpage.getText_byXpath(lanpage.list_ip2)) list_ip3 = str(lanpage.getText_byXpath(lanpage.list_ip3)) list_vlanid2 = str( lanpage.getText_byXpath(lanpage.list_vlanid2)) list_vlanid3 = str( lanpage.getText_byXpath(lanpage.list_vlanid3)) self.assertEqual(list_name2, '1000', msg='vlan1000名称与设置的不一致') self.assertEqual(list_name3, '1999', msg='vlan1999名称与设置的不一致') self.assertEqual(list_ip2, '192.168.10.1', msg='vlan1000IP与设置的不一致') self.assertEqual(list_ip3, '192.168.100.1', msg='vlan1000IP与设置的不一致') self.assertEqual(list_vlanid2, '1000', msg='vlan1000 ID与设置的不一致') self.assertEqual(list_vlanid3, '1999', msg='vlan1000 ID与设置的不一致') #配置dhcp dhcppage = DHCPserverpage(self.driver, self.url) #1000 dhcppage.click_DHCPserver() time.sleep(1) dhcppage.click_addpool() time.sleep(1) dhcppage.input_poolName('1000') seldhcppool = dhcppage.selelement_byName(dhcppage.poolVid) Select(seldhcppool).select_by_value('VIF1000') time.sleep(1) dhcppage.click_save() time.sleep(1) # 1999 dhcppage.click_DHCPserver() time.sleep(1) dhcppage.click_addpool() time.sleep(1) dhcppage.input_poolName('1999') seldhcppool = dhcppage.selelement_byName(dhcppage.poolVid) Select(seldhcppool).select_by_value('VIF1999') time.sleep(1) dhcppage.click_save() time.sleep(1) # 断言 list_name2 = str(dhcppage.getText_byXpath(dhcppage.list_name2)) list_name3 = str(dhcppage.getText_byXpath(dhcppage.list_name3)) list_int2 = str(dhcppage.getText_byXpath(dhcppage.list_int2)) list_int3 = str(dhcppage.getText_byXpath(dhcppage.list_int3)) self.assertEqual(list_name2, '1000', msg='pool1000名称与设置的不一致') self.assertEqual(list_name3, '1999', msg='pool1999名称与设置的不一致') self.assertEqual(list_int2, '1000', msg='pool1000IP与设置的不一致') self.assertEqual(list_int3, '1999', msg='pool1000IP与设置的不一致') # 配置网络名称 netname = netNamePage(self.driver, self.url) try: self.driver.implicitly_wait(2) netname.click_wirelessExtension() time.sleep(0.5) #网络名称页面的提示 netname.click_netName() except AttributeError or NoSuchElementException: CapPic(self.driver) logger.info(u'软件不支持无线扩展/网络名称,与参数表不符') raise Exception(u'软件不支持无线扩展/网络名称,与参数表不符') else: self.driver.implicitly_wait(10) time.sleep(1) checkOpen = str( netname.getAttribute_byId(netname.checkOpens, '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(3) else: raise Exception('无线扩展默认未关闭') # 断言 开关打开 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, '0', msg='兼容模式默认未关闭') # 0关闭,1打开 # 打开兼容模式 netname.click_ManageProtocols() time.sleep(5) ManageProtocols = str( netname.getAttribute_byId(netname.ManageProtocolss, 'checktype')) self.assertEqual(ManageProtocols, '1', msg='兼容模式未打开') # 0关闭,1打开 #判断自动下发是否开启 Auto = str( netname.getAttribute_byXpath(netname.list_autosend1, 'checked')) self.assertEqual(str(Auto), 'true', msg='默认自动下发未开启') # 编辑默认ssid netname.click_list_edit1() time.sleep(1) netname.input_ssid('ssid_1中') netname.click_next_tab() time.sleep(1) selencryType = netname.selelement_byName(netname.encryType) Select(selencryType).select_by_value( '1') # 0不加密 3 WPA-PSK/WPA2-PSK time.sleep(0.3) Select(selencryType).select_by_value('0') time.sleep(0.3) Select(selencryType).select_by_value('2') time.sleep(0.3) Select(selencryType).select_by_value('3') time.sleep(0.5) netname.input_pskPsswd('12345678') netname.click_next_tab() time.sleep(0.5) netname.click_sharelimit() # 共享 netname.input_txBand('1000') netname.input_rxBand('1000') netname.click_save() time.sleep(1) list_ssid1 = str(netname.getText_byXpath(netname.list_ssid1)) self.assertEqual(list_ssid1, 'ssid_1中', msg='ssid1 与设置不一致') # 新增2Gssid netname.click_add() time.sleep(1) netname.input_zoneName('2G') netname.input_ssid('2.4Gz中') netname.click_cli_5g() # 默认全选,点5G=勾掉,剩下2.4G if Support == '√': # 支持vlan接口 selvlanId = netname.selelement_byName( netname.vlanId) # 选vlan接口 Select(selvlanId).select_by_value('1000') time.sleep(1) netname.click_gjxx() # 点开高级选项 time.sleep(0.5) netname.click_broadcastEn() # 隐藏ssid netname.click_isolateEn() # 无线客户端隔离 time.sleep(0.5) netname.click_next_tab() time.sleep(1) selencryType = netname.selelement_byName(netname.encryType) Select(selencryType).select_by_value( '3') # 0不加密 3 WPA-PSK/WPA2-PSK time.sleep(1) netname.input_pskPsswd('12345678') netname.click_next_tab() time.sleep(0.5) netname.input_txBand('1000') netname.input_rxBand('1000') netname.click_save() time.sleep(2) # 断言 开关打开 list_ssid2 = str(netname.getText_byXpath(netname.list_ssid2)) self.assertEqual(list_ssid2, '2.4Gz中', msg='ssid2 与设置不一致') # 新增5Gssid netname.click_add() time.sleep(1) netname.input_zoneName('5G') netname.input_ssid('5Gz中') selSSIDmode = netname.selelement_byName(netname.encodeType) Select(selSSIDmode).select_by_value('0') #0电脑优先 1手机优先 time.sleep(1) netname.click_cli_2g() # 默认全选,点2G=勾掉,剩下5G if Support == '√': # 支持vlan接口 selvlanId = netname.selelement_byName( netname.vlanId) # 选vlan接口 Select(selvlanId).select_by_value('1999') time.sleep(1) netname.click_gjxx() # 点开高级选项 time.sleep(0.5) netname.click_broadcastEn() # 隐藏ssid netname.click_isolateEn() # 无线客户端隔离 time.sleep(0.5) netname.click_next_tab() time.sleep(1) selencryType = netname.selelement_byName(netname.encryType) Select(selencryType).select_by_value( '3') # 0不加密 3 WPA-PSK/WPA2-PSK time.sleep(1) netname.input_pskPsswd('12345678') netname.click_next_tab() time.sleep(0.5) netname.input_txBand('1000') netname.input_rxBand('1000') netname.click_save() time.sleep(1) list_ssid3 = str(netname.getText_byXpath(netname.list_ssid3)) self.assertEqual(list_ssid3, '5Gz中', msg='ssid3 与设置不一致') # 新增默认接口ssid netname.click_add() time.sleep(1) netname.input_zoneName('all') netname.input_ssid('ssid_all中') netname.click_next_tab() time.sleep(0.5) netname.click_next_tab() time.sleep(0.5) netname.click_save() time.sleep(1) # 断言 list_ssid4 = str(netname.getText_byXpath(netname.list_ssid4)) self.assertEqual(list_ssid4, 'ssid_all中', msg='ssid4 与设置不一致') #再新建提示保存成功(ssid数量后续版本做了调整) netname.click_add() time.sleep(1) netname.input_zoneName('5') netname.input_ssid('5') netname.click_next_tab() time.sleep(0.5) netname.click_next_tab() time.sleep(0.5) netname.click_save() time.sleep(1) # 断言 开关打开 list_ssid5 = str(netname.getText_byXpath(netname.list_ssid5)) self.assertEqual(list_ssid5, '5', msg='ssid5 与设置不一致') print('网络名称设置 验证通过') #删除ssid netname.click_selall() time.sleep(0.2) netname.click_sellist1() time.sleep(0.2) netname.click_delete() time.sleep(2) netname.click_ok() time.sleep(1) if Support == '√': # 支持vlan接口 # 删除dhcp dhcppage = DHCPserverpage(self.driver, self.url) dhcppage.click_NetworkConfig() time.sleep(0.5) dhcppage.click_DHCPserver() time.sleep(0.5) dhcppage.click_DHCPserver() time.sleep(1) dhcppage.click_list_delpool2() time.sleep(1) dhcppage.click_ok() time.sleep(1) dhcppage.click_list_delpool2() time.sleep(1) dhcppage.click_ok() time.sleep(1) # 删除vlan接口 lanpage = NetworkConfig_LANpage(self.driver, self.url) lanpage.click_LANconfig() time.sleep(1) lanpage.click_allsel() time.sleep(1) lanpage.click_delete() time.sleep(1) lanpage.click_ok() time.sleep(1) else: logger.info(u'参数不支持AP管理') try: netname = netNamePage(self.driver, self.url) 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_002_SSIDconfig passed')