def tearDown(self): # 设置了指定IP,这里增加一个判断联网 host = gettelnet('host').split(r'.') host1 = host[0] + '.' + host[1] + '.' + host[2] + '.' pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) print(pcaddr) pingTestIP() # 避免判断失误 p = pingTestIP() if p == 'N' or host1 not in pcaddr: # 如果不通 or 地址不为lan口网段 # 1、改回DHCP, 调用bat脚本 os.system('%s' % (batpath + 'changeDhcpIp.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') logger.info('tearDown over') logger.info('%s' % ('=' * 50))
def test_002_allowfilter_Notice(self): u'''开启域名过滤,仅允许163&&域名过滤通告''' #开启域名过滤 domainfilter = DomainFilterPage(self.driver, self.url) domainfilter.click_DomainFilterEn() time.sleep(1) #仅允许 domainfilter.click_onlyAllowEn() domainfilter.click_save() time.sleep(1) #断言 DomainFilterEns = domainfilter.getAttribute_byXpath( domainfilter.DomainFilterEs, 'checked') self.assertEqual(str(DomainFilterEns), 'true', msg='域名过滤未开启') actionStatus = domainfilter.getAttribute_byXpath( domainfilter.onlyAllowEs, 'checked') self.assertEqual(str(actionStatus), 'true', msg='动作不是允许') time.sleep(1) # 调用脚本修改dns为114.114.114.114,清空dns缓存 os.system('%s' % (batpath + 'changeStaticDns_flushdns.bat')) time.sleep(3) os.system('%s' % (batpath + 'changeStaticDns_flushdns.bat')) time.sleep(5) # 判断联网 ,应该能解析ping通www.163.com,无法解析ping通访问www.baidu.com p = pingTestIP('www.163.com') if p == 'N': raise Exception('163 无法ping通') p = pingTestIP('www.baidu.com') if p == 'Y': raise Exception('百度 依旧可以ping通') print('DNS过滤仅允许 验证通过') # 打开通告 domainfilter.click_terminalEn() domainfilter.click_save() time.sleep(1) # 断言 noticeStatus = domainfilter.getAttribute_byXpath( domainfilter.terminalEs, 'checked') self.assertEqual(str(noticeStatus), 'true', msg='通告未开启') self.driver.quit() # 测试通告 self.driver = webdriver.Chrome() # self.driver.maximize_window() self.driver.implicitly_wait(10) self.driver.get('http://www.utt.com.cn') title1 = str(self.driver.title) # print(title1) self.assertEqual(title1, DomainFilterNotice, msg='通告未弹出') self.driver.quit() logger.info('test_002_allowfilter_Notice passed')
def test_DNSfilter(self): u'''DNS过滤 www.baidu.com,无法ping通百度,可以ping news.baidu.com和官网''' # 调用脚本修改dns为114.114.114.114,清空dns缓存 os.system('%s' % (batpath + 'changeStaticDns_flushdns.bat')) time.sleep(5) login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) #配置防火墙 firewall = AccessControlPage(self.driver, self.url) firewall.click_FireWall() time.sleep(0.5) firewall.click_AccessControl() time.sleep(1) firewall.click_add() time.sleep(1) firewall.input_PolicyNames('DNSfilter') selFilterTypes = firewall.selelement_byName(firewall.selFilterTypes) time.sleep(1) Select(selFilterTypes).select_by_value('4') #DNS过滤 firewall.input_glnrdns('www.baidu.com') firewall.click_save() time.sleep(1) # 开启访问控制 checkTrafficS = firewall.getAttribute_byId( firewall.checkTrafficS, 'checktype') # checktype 0未开启,1开启 if checkTrafficS == '0': firewall.click_checkTraffic() time.sleep(2) print('访问控制策略 已添加') #断言 list_content = str(firewall.getText_byXpath(firewall.list_Content)) self.assertEqual(list_content, 'www.baidu.com', msg='过滤内容不为"www.baidu.com"') checkTrafficS = firewall.getAttribute_byId( firewall.checkTrafficS, 'checktype') #checktype 0未开启,1开启 self.assertEqual(checkTrafficS, '1', msg='访问控制 未开启') self.driver.quit() # 判断联网 ,应该无法解析ping通www.baidu.com,能解析ping通访问news.baidu.com和www.utt.com.cn time.sleep(5) p = pingTestIP('www.baidu.com') if p == 'Y': raise Exception('百度 依旧可以ping通') p = pingTestIP('news.baidu.com') if p == 'N': raise Exception('news.baidu.com 无法ping通') p = pingTestIP('www.utt.com.cn') if p == 'N': raise Exception('www.utt.com.cn 无法ping通') time.sleep(1) logger.info('test_DNSfilter passed')
def test_001_openWebAuth(self): u'''web认证开启''' host = gettelnet('host').split(r'.') host1 = host[0] + '.' + host[1] + '.' + host[2] +'.' # 006中设置了指定IP,这里增加一个判断联网 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) print(pcaddr) pingTestIP() # 避免判断失误 p = pingTestIP() if p == 'N' or host1 not in pcaddr: # 如果不通 or 地址不为lan口网段 # 1、改回DHCP, 调用bat脚本 os.system('%s' % (batpath + 'changeDhcpIp.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname(socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') if Support == '√': logger.info(u'参数支持本地认证') organization_group.import_empty_template(self) # 判断组织架构是否有其他组 有则清空 # 打开用户管理 - 用户认证 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) webauth = Organization_userAuthPage(self.driver, self.url) # 打开用户管理 - 用户认证 webauth.click_UserManage() time.sleep(0.5) webauth.click_userAuth() time.sleep(1) #开启web认证 webauth.click_WebAuthEn() time.sleep(1) # 断言 提示信息是否有误 status = str(webauth.getAttribute_byXpath(webauth.WebAuthEs,'checked')) time.sleep(1) self.assertEqual(status,'true',msg='web认证开启出错') self.driver.quit() elif Support == '×': logger.info(u'参数不支持本地认证') logger.info('test_001_openWebAuth passed')
def tearDown(self): #修改lan口为自动模式,谨防lan口速率出问题 太卡 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) lanpage = NetworkConfig_LANpage(self.driver, self.url) lanpage.click_NetworkConfig() time.sleep(0.5) lanpage.click_LANconfig() time.sleep(1) lanpage.click_globalconfig() time.sleep(1) lanmodenow = lanpage.getAttribute_byXpath(lanpage.lanmodenow, 'selected') print(lanmodenow) if lanmodenow != 'true': LanMode = lanpage.selelement_byXpath(lanpage.sellanRate) Select(LanMode).select_by_value('3') time.sleep(0.5) lanpage.click_save() time.sleep(10) n = 0 while n < 20: ping = pingTestIP() if ping != 'Y': time.sleep(1) n += 1 else: break self.driver.quit() logger.info('tearDown over') logger.info('%s' % ('=' * 50))
def test_005_dnsProxy(self): u'''dns代理可以上网''' baidutitle = getAssertText('baidutitle') # 开dns代理 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) dhcpserver = DHCPserverpage(self.driver, self.url) dhcpserver.click_NetworkConfig() time.sleep(0.5) dhcpserver.click_DHCPserver() time.sleep(1) dhcpserver.click_GlobalConfig() time.sleep(1) dhcpserver.click_dnspEn() dhcpserver.click_save() time.sleep(1) # 断言 开启提示信息是否有误 tips = str(dhcpserver.getText_byClass(dhcpserver.tips)) time.sleep(1) self.assertEqual(tips, saveSucess, msg='"DNS代理" 开启出错') print('DNS代理 已开启') # 将IP改回自动获取(设置dns为自动获取) # 调用bat脚本 os.system(('%s' % batpath + 'changeDhcpIp.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) print(pcaddr, n) if '192.168.' not in str(pcaddr): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') pingTestIP('www.baidu.com') #避免失误 self.driver.get('http://www.baidu.com') time.sleep(2) title3 = self.driver.title print(title3) self.assertEqual(title3, baidutitle, msg='dns代理 无法打开网页') self.driver.quit() logger.info('test_005_dnsProxy passed')
def test_001_ServerStatus(self): u'''DHCP服务器功能默认开启''' host = gettelnet('host') #即插即用中修改了IP 这里加一个判断联网 pingTestIP() #避免失误 p = pingTestIP() if p == 'N': # 将IP改回自动获取(设置dns为自动获取) # 调用bat脚本 os.system('%s' % (batpath + 'changeDhcpIp.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr, n) if '192.168.' not in str(pcaddr): time.sleep(2) n += 1 else: logger.info(u'IP地址已自动获取成功') break else: raise Exception('未获取到地址') pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) logger.info(u'IP地址为:%s' % pcaddr) login.loginWeb(self) self.driver.implicitly_wait(10) dhcpserver = DHCPserverpage(self.driver, self.url) # 打开网络配置 - 内网配置 dhcpserver.click_NetworkConfig() time.sleep(0.5) dhcpserver.click_DHCPserver() time.sleep(1) #确认 DHCP服务器功能 是否 默认开启 dhcp_status = dhcpserver.getAttribute_byXpath(dhcpserver.dhcpEn, 'checked') self.assertEqual(str(dhcp_status), 'true', msg='DHCP服务器功能默认未开启') self.driver.quit() logger.info('test_001_ServerStatus passed')
def test_001_ntpClockServer(self): u'''时钟管理''' ntpServer = getweb('ntpServer') i = 0 while i < 80: p = pingTestIP('www.baidu.com') if p != 'Y': time.sleep(1) else: break login.loginWeb(self) self.driver.implicitly_wait(10) config = MaintenancePage(self.driver, self.url) # 进入系统配置-系统维护 config.click_sysConfig() time.sleep(0.5) config.click_Maintenance() time.sleep(1) TimeInternetA = getAssertText('TimeInternetA') sysTime = sysTimePage(self.driver, self.url) sysTime.click_SystemTime() time.sleep(1) switch = str(sysTime.getAttribute_byXpath(sysTime.SntpEns, 'checked')) tips = str(sysTime.getText_byXpath(sysTime.withInternet1)) self.assertEqual(switch, 'true', msg='网络时间同步 默认开启 有误') self.assertEqual(tips, TimeInternetA, msg='网络时间同步 按钮有误') #判断页面时间 日期 dates = sysTime.getText_byID(sysTime.dates) now = time.strftime("%Y-%m-%d") if dates != now: #判断默认配置下是否能同步 不同同步则更改ntp server使同步 同时报默认不能同步错 sysTime.input_NTPServerIP(ntpServer) sysTime.click_save() time.sleep(2) i = 0 while i < 20: sysTime.click_SystemTime() time.sleep(1) dates = sysTime.getText_byID(sysTime.dates) if dates == now: break else: i += 1 else: raise Exception('时间不同步,输入新ntp sever依旧不能更新') raise Exception('默认配置下ntp 时间不同步') self.driver.quit() logger.info('test_001_ntpClockServer passed')
def tearDown(self): pingTestIP() p = pingTestIP() if p == 'N': # 将IP改回自动获取 os.system('%s' % batpath + 'changeDhcpIp.bat') time.sleep(5) n = 0 while n < 30: pcaddr1 = socket.gethostbyname( socket.getfqdn(socket.gethostname())) # print(pcaddr1, n) if '192.168.' not in str(pcaddr1): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') logger.info('tearDown over') logger.info('%s' % ('=' * 50))
def tearDown(self): #避免未改回 p = pingTestIP() if p == 'N': # 调用bat脚本 地址修改为 192.168.34.39 网关192.168.34.1 os.system('%s' % (batpath + 'changeStaticIP3_34duan.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr, n) if str(pcaddr) != '192.168.34.39': time.sleep(2) n += 1 else: print('地址已修改为地址 192.168.34.39', n) time.sleep(2) break else: raise Exception('地址修改为192.168.34.39 失败') # 更改pc 交换机接口与lan口通 try: swconfig.test_WanToLan(self) except TimeoutError: logger.info(u'telnet不到交换机') pass # 将IP改回自动获取 应获取到被测设备下发的地址 os.system('%s' % (batpath + 'changeDhcpIp.bat')) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') logger.info('tearDown over') logger.info('%s' % ('=' * 50))
def setUp(self): logger.info('setUp start') os.system('taskkill /im "tftpd32.exe" /F') #谨防007 重启AC报错,提示失败 但设备已在重启导致无法登录路由 i = 0 while i < 50: ping = pingTestIP() if ping == 'Y': time.sleep(2) break else: time.sleep(1) i += 1 login.loginWeb(self) self.driver.implicitly_wait(10) time.sleep(0.5)
def test_001_open(self): u'''开启即插即用 错误的IP,依旧上网''' plug = NetworkConfig_LANpage(self.driver, self.url) saveSucess = getAssertText('saveSucess') #开启UPNP plug.click_upnpEN() time.sleep(0.5) plug.click_save() time.sleep(1) # 断言 开启提示信息是否有误 tips = str(plug.getText_byClass(plug.tips)) time.sleep(1) self.assertEqual(tips, saveSucess, msg='即插即用 开启出错') print('即插即用 已开启') # 判断联网 ,不能上网则报错 pingTestIP('www.163.com') # 避免失误 p = pingTestIP('www.163.com') if p == 'N': raise Exception('connect failed.') # 调用bat脚本 地址修改为 192.168.189.39 网关192.168.189.1 os.system('%s' % (batpath + 'changeStaticIP.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) print(pcaddr, n) if str(pcaddr) != '192.168.198.39': time.sleep(2) n += 1 else: print('地址已修改为地址 192.168.198.39', n) break else: raise Exception('地址修改为192.168.198.39 失败') # 判断联网 ,不能上网则报错 pingTestIP('www.163.com') # 避免失误 p = pingTestIP('www.163.com') if p == 'N': raise Exception('connect failed.') self.driver.quit() logger.info('test_001_open passed')
def tearDown(self): nodata = getAssertText('nodata') # 判断联网 ,不能则改回mac p = pingTestIP('www.baidu.com') if p == 'N': # 将mac改回 # 调用bat脚本 os.system('%s' % (batpath + 'changeMacToBack.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') # 删除黑名单绑定 blacklist = Organization_userBlackPage(self.driver, self.url) blacklist.click_delete() time.sleep(1) blacklist.click_ok() time.sleep(1) # 断言 开启提示信息是否有误 listtips = str(blacklist.getText_byXpath(blacklist.list_tips)) time.sleep(1) self.assertEqual(listtips, nodata, msg='黑名单用户删除失败') print('黑名单用户已删除') self.driver.quit() logger.info('tearDown over') logger.info('%s' % ('=' * 50))
def test_002_static(self): u'''外网配置 - 固定接入''' wan_config = NetworkConfig_wanpage(self.driver, self.url) Staticline = getAssertText('Staticline') ConnectState = getAssertText('ConnectState') # 从外网配置页面获取WAN1口地址 # 判断联网状态 i = 0 while i < 21: wan_config.click_refresh() time.sleep(1) list_conState = wan_config.getText_byXpath( wan_config.connectState1) print(str(list_conState), i) if str(list_conState) != ConnectState: time.sleep(3) i += 1 else: break else: CapPic(self.driver) logger.info(u"WAN口未连接") raise Exception('WAN1 未连接') # WAN1 ip变量赋值,页面读取 WAN1_ip = wan_config.getText_byXpath(wan_config.line1IP) # print('WAN1_ip=',WAN1_ip) WAN1_gw = wan_config.getText_byXpath(wan_config.line1gw) # print('WAN1_gw=',WAN1_gw) WAN1_dns = wan_config.getText_byXpath(wan_config.line1Dns) # print('WAN1_dns=',WAN1_dns) time.sleep(1) # 将wan1口的IP/网关/dns 拿来输入 wan_config.click_line1edit() time.sleep(1) access_mode = wan_config.selelement_byName(wan_config.connectionType) Select(access_mode).select_by_value('STATIC') time.sleep(1) wan_config.input_staticIp(WAN1_ip) wan_config.input_staticGateway(WAN1_gw) wan_config.input_staticPriDns(WAN1_dns) wan_config.click_save() time.sleep(10) self.driver.quit() # 修改接口后 可能会回到登录页面 所以关闭,再打开 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) wan_config = NetworkConfig_wanpage(self.driver, self.url) # 进入网络配置-外网配置 wan_config.click_NetworkConfig() time.sleep(0.5) wan_config.click_WANconfig() time.sleep(1) #断言 list_lineType = wan_config.getText_byXpath(wan_config.line1Type) print('list_lineType', list_lineType) self.assertEqual(str(list_lineType), Staticline, msg='连接类型 不为 固定接入') # 判断联网状态 i = 0 while i < 21: wan_config.click_refresh_s() time.sleep(1) list_conState = wan_config.getText_byXpath( wan_config.connectState1) print(str(list_conState), i) if str(list_conState) != ConnectState: time.sleep(3) i += 1 else: break else: CapPic(self.driver) logger.info(u"WAN口未连接") raise Exception('WAN1 未连接') i = 0 while i < 21: # 判断联网 ,不能上网则报错 # pingTestIP('114.114.114.114') p = pingTestIP('www.baidu.com') print(p, i) if p == 'N': i += 1 time.sleep(3) else: break else: logger.info(u"connect failed") raise Exception('connect failed.') self.driver.quit() logger.info('test_002_static passed')
def test_001_Forbidfilter_Notice(self): u'''开启域名过滤,禁止163&&域名过滤通告''' #未开启时候可以ping通163和百度 p = pingTestIP('114.114.114.114') if p == 'N': raise Exception('114.114.114.114 无法ping通') p = pingTestIP('www.163.com') if p == 'N': raise Exception('www.163.com 无法ping通') p = pingTestIP('www.baidu.com') if p == 'N': raise Exception('www.baidu.com 无法ping通') #开启域名过滤 domainfilter = DomainFilterPage(self.driver, self.url) time.sleep(1) domainfilter.click_DomainFilterEn() time.sleep(1) domainfilter.input_DnsFilterName('filter') # 仅禁止 domainfilter.click_onlyBlockEn() domainfilter.click_cleanDns() time.sleep(1) domainfilter.click_ok() time.sleep(1) domainfilter.input_addHostFilter('www.163.com') domainfilter.click_addDns() time.sleep(1) domainfilter.click_save() time.sleep(1) #断言 DomainFilterEns = domainfilter.getAttribute_byXpath( domainfilter.DomainFilterEs, 'checked') self.assertEqual(str(DomainFilterEns), 'true', msg='域名过滤未开启') onlyBlockEns = domainfilter.getAttribute_byXpath( domainfilter.onlyBlockEs, 'checked') self.assertEqual(str(onlyBlockEns), 'true', msg='动作不是禁止') # 调用脚本修改dns为114.114.114.114,清空dns缓存 os.system('%s' % (batpath + 'changeStaticDns_flushdns.bat')) time.sleep(5) os.system('%s' % (batpath + 'changeStaticDns_flushdns.bat')) time.sleep(5) # 判断联网 ,应该无法解析ping通www.163.com,能解析ping通访问www.baidu.com pingTestIP('114.114.114.114') time.sleep(5) p = pingTestIP('www.163.com') if p == 'Y': raise Exception('163 依旧可以ping通') p = pingTestIP('www.baidu.com') if p == 'N': raise Exception('www.baidu.com 无法ping通') print('DNS过滤仅禁止 验证通过') # 打开通告 domainfilter.click_terminalEn() domainfilter.click_save() time.sleep(1) #断言 noticeStatus = domainfilter.getAttribute_byXpath( domainfilter.terminalEs, 'checked') self.assertEqual(str(noticeStatus), 'true', msg='通告未开启') self.driver.quit() #测试通告 time.sleep(3) self.driver = webdriver.Chrome() # self.driver.maximize_window() self.driver.implicitly_wait(10) # 尝试访问163 应不可以 self.driver.get('http://www.163.com') title1 = str(self.driver.title) print('title1:', title1) self.assertEqual(title1, DomainFilterNotice, msg='通告未弹出') self.driver.quit() #注意通告打开情况下,可以ping通,在setdown中关闭 logger.info('test_001_Forbidfilter_Notice passed')
def test_001_userList(self): u'''用户状态 列表''' tempUser = getAssertText('tempUser') Minute = getAssertText('minute') Ban = getAssertText('Ban') #003中设置了ip/mac绑定上网,这里增加一个判断联网 pingTestIP() # 避免判断失误 p = pingTestIP() if p == 'N': # 如果不通 # 1、改回DHCP, 调用bat脚本 os.system('%s' % (batpath + 'changeDhcpIp.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') pingTestIP('www.baidu.com') #避免判断失误 p = pingTestIP('www.baidu.com') if p == 'N': # 1、将mac改回, 调用bat脚本 os.system('%s' % (batpath + 'changeMacToBack.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: # raise Exception('未获取到地址1') # 开启绑定情况下 仅更改mac 可能会获取不到地址 os.system('%s' % (batpath + 'ipconfig_release.bat')) time.sleep(5) os.system('%s' % (batpath + 'ipconfig_renew.bat')) time.sleep(5) i = 0 while i < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, i) if '192.168.' not in str(pcaddr_new): time.sleep(2) i += 1 else: print('IP地址已自动获取成功2', i) break else: raise Exception('未获取到地址2') #3、关闭"仅MAC绑定用户能上网" 关闭ip/mac绑定 以访003出错 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) group = OrganizationMembersPage(self.driver, self.url) # 打开用户管理 - 组织成员 group.click_UserManage() time.sleep(0.5) group.click_userGroup() time.sleep(1) group = OrganizationMembersPage(self.driver, self.url) group.click_globalconfig() time.sleep(1) group.click_IPMACb_C() group.click_MACb_C() time.sleep(0.5) group.click_saveAllSetting() time.sleep(1) IPMACb_Cs = str( group.getAttribute_byXpath(group.IPMACb_Cs, 'checked')) self.assertEqual(IPMACb_Cs, 'true', msg='"仅IP/MAC绑定用户能上网" 关闭出错') print('"仅IP/MAC绑定用户能上网" 关闭') Macb_Cs = str(group.getAttribute_byXpath(group.MACb_Cs, 'checked')) self.assertEqual(Macb_Cs, 'true', msg='"仅MAC绑定用户能上网" 关闭出错') print('"仅MAC绑定用户能上网" 关闭') self.driver.quit() # 打开用户管理 - 用户状态 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) status = Organization_userStatusPage(self.driver, self.url) status.click_UserManage() time.sleep(0.5) status.click_userstatus() time.sleep(1) # 将页面刷新按钮改成“手动” sel = status.selelement_byXpath(status.selmanual) Select(sel).select_by_value('manual') time.sleep(1) status.click_refreshtable() time.sleep(1) #定义页面显示元素变量 ID = str(status.getText_byXpath(status.ID)) username = str(status.getText_byXpath(status.username)) group = str(status.getText_byXpath(status.group)) VlanID = str(status.getText_byXpath(status.VlanID)) IP = str(status.getText_byXpath(status.IP)) mac = str(status.getText_byXpath(status.mac)) authmode = str(status.getText_byXpath(status.authmode)) online_time_length = str( status.getText_byXpath(status.online_time_length)) Uploading_data = str(status.getText_byXpath(status.Uploading_data)) Downing_data = str(status.getText_byXpath(status.Downing_data)) Uploading_speed = str(status.getText_byXpath(status.Uploading_speed)) Downing_speed = str(status.getText_byXpath(status.Downing_speed)) edit = str(status.getText_byXpath(status.edit)) # 断言 用户列表是否显示有误 time.sleep(1) self.assertEqual(ID, '1', msg='ID出错') print('用户状态 - ID 验证成功') self.assertIsNotNone(username, msg='用户名 出错') print('用户状态 - 用户名 验证成功') self.assertEqual(group, tempUser, msg='所属组 出错') #脚本在最后会清空组织架构,所以脚本在一开始新建组,用户都是 临时用户 print('用户状态 - 所属组 验证成功') self.assertIsNotNone(VlanID, msg='VLANID 出错') print('用户状态 - VLANID 验证成功') self.assertIn('192.168.', IP, msg='IP 出错') #lan口地址段 print('用户状态 - IP 验证成功') self.assertEqual(len(mac), 17, msg='mac 出错') #判断mac地址长度 print('用户状态 - mac 验证成功') self.assertIsNotNone(authmode, msg='认证方式 出错') print('用户状态 - 认证方式 验证成功') self.assertIn(Minute, online_time_length, msg='在线时长 出错') # 在线时长是否包含“分” print('用户状态 - 在线时长 验证成功') self.assertIsNotNone(Uploading_data, msg='上传数据 出错') print('用户状态 - 上传数据 验证成功') self.assertIsNotNone(Downing_data, msg='下载数据 出错') print('用户状态 - 下载数据 验证成功') self.assertIsNotNone(Uploading_speed, msg='上传速度 出错') print('用户状态 - 上传速度 验证成功') self.assertIsNotNone(Downing_speed, msg='下载速度 出错') print('用户状态 - 下载速度 验证成功') self.assertEqual(edit, Ban, msg='拉黑菜单显示 出错') print('用户状态 - 拉黑菜单显示 验证成功') self.driver.quit() logger.info('test_001_userList passed')
def test_003_pppoe(self): u'''外网配置 - PPPoE接入''' wan_config = NetworkConfig_wanpage(self.driver, self.url) PPPoEline = getAssertText('PPPoEline') ConnectState = getAssertText('ConnectState') wan_config.click_line1edit() time.sleep(1) access_mode = wan_config.selelement_byName(wan_config.connectionType) Select(access_mode).select_by_value('PPPOE') time.sleep(1) wan_config.input_pppoeUser('111') wan_config.input_pppoePass('111') wan_config.click_save() time.sleep(10) self.driver.quit() # 修改接口后 可能会回到登录页面 所以关闭,再打开 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) wan_config = NetworkConfig_wanpage(self.driver, self.url) # 进入网络配置-外网配置 wan_config.click_NetworkConfig() time.sleep(0.5) wan_config.click_WANconfig() time.sleep(1) #断言 list_lineType = wan_config.getText_byXpath(wan_config.line1Type) # print('list_lineType:',list_lineType) self.assertEqual(str(list_lineType), PPPoEline, msg='连接类型 不为 PPPoE接入') # PPPoE接入 拨号成功才会显示已连接 i = 0 while i < 21: wan_config.click_refresh() time.sleep(1) list_conState = wan_config.getText_byXpath( wan_config.connectState1) print(str(list_conState), i) if str(list_conState) != ConnectState: time.sleep(3) i += 1 else: break else: CapPic(self.driver) logger.info(u"WAN口未连接") raise Exception('WAN1 未连接') i = 0 while i < 21: # 判断联网 ,不能上网则报错 # pingTestIP('114.114.114.114') p = pingTestIP('www.baidu.com') print(p, i) if p == 'N': i += 1 time.sleep(3) else: break else: logger.info(u"connect failed") raise Exception('connect failed.') # list_connectState1 = wan_config.getText_byXpath(wan_config.connectState1) # print('list_connection_state:',str(list_connectState1)) # if str(list_connectState1) != ConnectState: # PPPoE接入 拨号成功才会显示已连接 # time.sleep(5) # wan_config.click_refresh() # time.sleep(0.5) # list_connectState1 = wan_config.getText_byXpath(wan_config.connectState1) # if str(list_connectState1) != ConnectState: # wan_config.click_connectState1() # wan_config.click_dial() # time.sleep(10) # wan_config.click_refresh() # time.sleep(0.5) # list_connectState1 = wan_config.getText_byXpath(wan_config.connectState1) # if str(list_connectState1) != ConnectState: # raise Exception('WAN1 未连接') # else: # 已连接 # time.sleep(3) # pingTestIP('114.114.114.114') #避免失误 # pingTestIP('www.baidu.com') #避免失误 # p = pingTestIP('www.baidu.com') # if p == 'N': # raise Exception('connect failed.') # else: # 已连接 # time.sleep(3) # pingTestIP('114.114.114.114') #避免失误 # pingTestIP('www.baidu.com') #避免失误 # p = pingTestIP('www.baidu.com') # if p == 'N': # raise Exception('connect failed.') # else: # 已连接 # time.sleep(3) # pingTestIP('114.114.114.114') # pingTestIP('www.baidu.com') # p = pingTestIP('www.baidu.com') # if p == 'N': # raise Exception('connect failed.') self.driver.quit() print(u'外网配置 - PPPoE接入 验证通过') #改回动态接入 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) wan_config = NetworkConfig_wanpage(self.driver, self.url) # 进入网络配置-外网配置 wan_config.click_NetworkConfig() time.sleep(0.5) wan_config.click_WANconfig() time.sleep(1) wan_config.click_line1edit() time.sleep(1) access_mode = wan_config.selelement_byName(wan_config.connectionType) Select(access_mode).select_by_value('DHCP') wan_config.click_save() time.sleep(10) self.driver.quit() logger.info('test_003_pppoe passed')
def test_blacklist(self): u'''黑名单用户禁止上网''' login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) blacklist = Organization_userBlackPage(self.driver, self.url) # 打开用户管理 - 组织成员 blacklist.click_UserManage() time.sleep(0.5) blacklist.click_blacklist() time.sleep(1) # 操作删除 以访已有规则 blacklist.click_selall() time.sleep(0.2) blacklist.click_delall() time.sleep(2) try: self.driver.implicitly_wait(2) blacklist.find_ok() except NoSuchElementException: try: blacklist.find_tipsshowin() time.sleep(1) except NoSuchElementException: pass else: time.sleep(1) print('ipsec VPN列表为空') blacklist.click_add() time.sleep(0.5) blacklist.input_bname('blicklistTest') blacklist.input_bmac( '107B44AAAAAA' ) #mac为不能上网的mac,非实际pc的mac 要与changeMacToBack.bat中mac地址一致 blacklist.click_save() time.sleep(1) # 断言 增加的组名称是否相同:相同代表验证通过 bilcklist_name = str( blacklist.getText_byXpath(blacklist.blicklist_name)) self.assertEqual(bilcklist_name, 'blicklistTest', msg='新增黑名单出错 用户名不一致') bilcklist_mac = str(blacklist.getText_byXpath(blacklist.blicklist_mac)) self.assertEqual(bilcklist_mac, '10:7b:44:aa:aa:aa', msg='新增黑名单出错 MAC不一致') print('新增黑名单用户 完成') pingTestIP('www.baidu.com') #避免判断失误 # 判断联网 ,不能上网则报错 p = pingTestIP('www.baidu.com') if p == 'N': raise Exception('connect failed.') # 修改MAC为 黑名单中绑定的MAC地址 # 调用bat脚本 os.system('%s' % (batpath + 'changeMac.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功1', n) break else: # raise Exception('未获取到地址1') # 开启绑定情况下 仅更改mac 可能会获取不到地址 os.system('%s' % (batpath + 'ipconfig_release.bat')) time.sleep(5) os.system('%s' % (batpath + 'ipconfig_renew.bat')) time.sleep(5) i = 0 while i < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, i) if '192.168.' not in str(pcaddr_new): time.sleep(2) i += 1 else: print('IP地址已自动获取成功2', i) break else: raise Exception('未获取到地址2') time.sleep(3) # 判断联网 ,测试该项改完mac之后前几个包有可能可以ping通,为避免判断失误,加一个缓冲 pingTestIP('www.baidu.com') #避免判断失误 pingTestIP('www.163.com') #避免判断失误 time.sleep(2) #判断联网 ,黑名单中绑定的用户应该不能上网 p = pingTestIP('www.sina.com.cn') if p == 'Y': raise Exception('黑名单中用户依旧可以上网') print('黑名单用户不能上网 验证成功') time.sleep(1) #将mac改回 # 调用bat脚本 os.system('%s' % (batpath + 'changeMacToBack.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') pingTestIP('www.baidu.com') # 避免判断失误 pingTestIP('www.163.com') # 避免判断失误 time.sleep(2) # 判断联网 ,不能上网则报错 p = pingTestIP('www.baidu.com') if p == 'N': raise Exception('connect failed.') logger.info('test_blacklist passed')
def test_002_backupLineSW(self): u'''双固定IP接入时的线路切换:主、备份线路''' wan_config = NetworkConfig_wanpage(self.driver, self.url) #1、获取wan1、wan2 网关及mac line1_mac = str(wan_config.getText_byXpath(wan_config.line1Mac)) # print('WAN1_dns=',line1_mac) line2_mac = str(wan_config.getText_byXpath(wan_config.line2Mac)) # print('WAN1_dns=',line2_mac) # 处理wan口的mac地址 # 字母变大写 line1_mac1 = line1_mac.upper() line2_mac1 = line2_mac.upper() # 加冒号 line1_mac2 = line1_mac1[0:2] + ':' + line1_mac1[ 2:4] + ':' + line1_mac1[4:6] + ':' + line1_mac1[ 6:8] + ':' + line1_mac1[8:10] + ':' + line1_mac1[10:] line2_mac2 = line2_mac1[0:2] + ':' + line2_mac1[ 2:4] + ':' + line2_mac1[4:6] + ':' + line2_mac1[ 6:8] + ':' + line2_mac1[8:10] + ':' + line2_mac1[10:] print(line1_mac2, line2_mac2) #WAN1改为备份线路 wan_config.click_line1edit() time.sleep(1) line_type = wan_config.selelement_byXpath(wan_config.line_type) Select(line_type).select_by_value('0') #1为主 0为备份 wan_config.click_save() time.sleep(10) n = 0 while n < 20: ping = pingTestIP() if ping != 'Y': time.sleep(1) n += 1 else: break self.driver.quit() # telnet获取接口名称及确认默认路由(wan1备份应该只剩下wan2默认路由) hostip = gettelnet('host') port = gettelnet('port') username = bytes(getweb('User'), encoding="utf8") password = bytes(getweb('Passwd'), encoding="utf8") # 获取接口名称 tn = telnetlib.Telnet(host=hostip, port=port, timeout=10) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 tn.read_until(b'login:'******'Password:'******'#') tn.write(b'ifconfig | grep eth' + b'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 执行多条命令时只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 获取WAN口对应接口名称 result1 = result[3:-9] # print(result1) result2 = result1.split(r'\r\n') print('result2:', result2) for i in range(len(result2)): if line1_mac2 in result2[i]: result2_num = (result2[i]) print(result2[i]) line1_Interface_name = result2_num.split()[0] print(line1_Interface_name) if line2_mac2 in result2[i]: result2_num = (result2[i]) print(result2[i]) line2_Interface_name = result2_num.split()[0] print(line2_Interface_name) if line1_Interface_name == None: raise Exception('获取wan1口对应接口名称失败') if line2_Interface_name == None: raise Exception('获取wan2口对应接口名称失败') # 确认默认路由情况 roure1 = bytes(('ip route | grep "%s"') % line2_Interface_name, encoding="utf8") tn.write(roure1 + b'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 执行多条命令时只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 print('result:', result) # 获取WAN1对应接口名称 result1 = result[2:-7] print('result1', result1) result2 = result1.split(r'\r\n') print('result2', result2) #wan1已备份,只剩wan2路由,这里只判断wan2的 wan2route = 'dev ' + line2_Interface_name print('wan2route:', wan2route) for i in range(len(result2)): if 'default' in result2[i] and wan2route in result2[i]: wan2route_status = not None print('wan2路由在') if wan2route_status == None: raise Exception('wan2默认路由显示有误') #单线路默认路由变为:default via 192.168.11.1 dev eth2.3 equalize 不再有weight值 # (高通没有equalize):default via 192.168.12.1 dev eth0.3 #多线mtk # default equalize # nexthop via 192.168.32.1 dev eth2.2 weight 1 # nexthop via 192.168.200.1 dev eth2.3 weight 1 # 多线高通 # default # nexthop via 192.168.11.1 dev eth0.2 weight 1 # nexthop via 192.168.11.1 dev eth0.3 weight 1 tn.close() # tn.write('exit\n') #2、设置线路检测地址,验证线路切换 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) self.driver.maximize_window() wan_config = NetworkConfig_wanpage(self.driver, self.url) # 进入网络配置-外网配置 wan_config.click_NetworkConfig() time.sleep(0.5) wan_config.click_WANconfig() time.sleep(1) #配置线路检测 检测3s 检测 3次,地址为223.5.5.5 wan_config.click_GlobalConfig() time.sleep(1) wan_config.input_KeepLive1('3') wan_config.input_RetryTimes1('3') sel1 = wan_config.selelement_byName(wan_config.PriAddrType1) Select(sel1).select_by_value('others') time.sleep(0.5) wan_config.input_DestIP1('223.5.5.5') wan_config.input_KeepLive2('3') wan_config.input_RetryTimes2('3') sel2 = wan_config.selelement_byName(wan_config.PriAddrType2) Select(sel2).select_by_value('others') time.sleep(0.5) wan_config.input_DestIP2('1.2.3.4') #WAN2配一个ping不通的地址,测试线路切换 wan_config.click_save() time.sleep(2) # 等待弹窗提示成功 i = 0 while i < 80: try: self.driver.implicitly_wait(1) wan_config.find_tipsshowin() except NoSuchElementException: time.sleep(1) i = i + 1 print(i) else: tips = str( wan_config.getAttribute_byClass(wan_config.tipsshowin, 'tip-sign')) print(tips, i) if tips != 'success': CapPic(self.driver) logger.info(u'线路检测保存 异常') raise Exception(u'线路检测保存 异常') break else: raise Exception(u'线路检测保存 未弹出提示框') #切换标签页判断配置正确 wan_config.click_WANconfig() time.sleep(1) wan_config.click_GlobalConfig() time.sleep(1) KeepLive2 = str( wan_config.getAttribute_byName(wan_config.KeepLive2v, 'value')) RetryTimes2 = str( wan_config.getAttribute_byName(wan_config.RetryTimes2v, 'value')) DestIP2 = str( wan_config.getAttribute_byName(wan_config.DestIP2v, 'value')) self.assertEqual(KeepLive2, '3', msg='wan2检测间隔与设置不一致') self.assertEqual(RetryTimes2, '3', msg='wan2检测次数与设置不一致') self.assertEqual(DestIP2, '1.2.3.4', msg='wan2检测地址与设置不一致') # 确认默认路由情况 # 单线路默认路由变为:default via 192.168.11.1 dev eth2.2 equalize 不再有weight值 wan1route1 = 'dev ' + line1_Interface_name print('wan1route:', wan1route1) roure1 = bytes(('ip route | grep "%s"') % line1_Interface_name, encoding="utf8") time.sleep(10) # 等待检测,路由切换 x = 0 while x < 60: tn = telnetlib.Telnet(host=hostip, port=port, timeout=10) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 tn.read_until(b'login:'******'Password:'******'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 执行多条命令时只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 # print('result:', result) result4 = result[1:] # print('result4', result4) result5 = result4.replace('\r\n', ' ') print('result5', result5) tn.close() # wan2、wan3检测不通,这里判断仅wan1在 if 'default' in result5 and wan1route1 in result5: print('wan1路由在') break else: print(x) time.sleep(2) x += 1 else: logger.info(u'wan1route1: %s' % wan1route1) logger.info(u'result5: %s' % result5) raise Exception('wan1默认路由显示有误') #3、将wan2检测目标改正确,线路、路由切换回来 wan_config.input_DestIP2('223.5.5.5') # WAN2检测地址改可ping通,测试线路切换 wan_config.click_save() time.sleep(2) # 等待弹窗提示成功 i = 0 while i < 80: try: self.driver.implicitly_wait(1) wan_config.find_tipsshowin() except NoSuchElementException: time.sleep(1) i = i + 1 print(i) else: tips = str( wan_config.getAttribute_byClass(wan_config.tipsshowin, 'tip-sign')) print(tips, i) if tips != 'success': CapPic(self.driver) logger.info(u'线路检测保存 异常') raise Exception(u'线路检测保存 异常') break else: raise Exception(u'线路检测保存 未弹出提示框') # 切换标签页判断配置正确 wan_config.click_WANconfig() time.sleep(1) wan_config.click_GlobalConfig() time.sleep(1) DestIP2 = str( wan_config.getAttribute_byName(wan_config.DestIP2v, 'value')) self.assertEqual(DestIP2, '223.5.5.5', msg='wan2检测地址与设置不一致') time.sleep(20) # 等待检测,路由切换 # 确认默认路由情况(wan2检测地址通,默认路由应切换成wan2) # 单线路默认路由变为:default via 192.168.11.1 dev eth2.2 equalize 不再有weight值 wan2route1 = 'dev ' + line2_Interface_name print('wan2route1:', wan2route1) roure1 = bytes(('ip route | grep "%s"') % wan2route1, encoding="utf8") x = 0 while x < 60: tn = telnetlib.Telnet(host=hostip, port=port, timeout=10) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 tn.read_until(b'login:'******'Password:'******'\n') # 输出结果,判断 time.sleep(1) result = str(tn.read_very_eager()) # 执行多条命令时只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 # print('result:', result) result4 = result[1:] # print('result4', result4) result5 = result4.replace('\r\n', ' ') print('result5', result5) # wan2、wan3检测不通,这里只判断wan1的 tn.close() if 'default' in result5 and wan2route1 in result5: print('wan2路由在') break else: print(x) time.sleep(2) x += 1 else: logger.info(u'wan2route1: %s' % wan2route1) logger.info(u'result5: %s' % result5) raise Exception('wan2默认路由显示有误') #4、wan1口改回主线路 wan_config.click_WANconfig() time.sleep(1) wan_config.click_line1edit() time.sleep(1) line_type = wan_config.selelement_byXpath(wan_config.line_type) Select(line_type).select_by_value('1') # 1为主 0为备份 wan_config.click_save() time.sleep(10) # 修改接口后 可能会回到登录页面 所以关闭,再打开 self.driver.quit() # telnet获取接口名称及确认默认路由 wan1route_2 = 'dev ' + line1_Interface_name + ' weight ' wan2route_2 = 'dev ' + line2_Interface_name + ' weight ' print('wan1route_2:', wan1route_2, 'wan2route_2:', wan2route_2) time.sleep(10) # 获取接口名称 x = 0 while x < 60: tn = telnetlib.Telnet(host=hostip, port=port, timeout=10) tn.set_debuglevel(5) # 级别越高输出的调试信息越多,并没有看出区别 tn.read_until(b'login:'******'Password:'******'#') # 确认默认路由情况 tn.write(b'ip route' + b'\n') # 输出结果,判断 time.sleep(1) result9 = str(tn.read_very_eager()) # 执行多条命令时只会存最后一条命令的结果 print('-------------------输出结果------------------------') # 命令执行结果 # print('result9:', result9) # 获取WAN1对应接口名称 result10 = result9[1:] # print('result10', result10) result11 = result10.replace('\r\n', ' ') print('result11', result11) tn.close() if (wan1route_2 in result11) and (wan2route_2 in result11): print('wan1/wan2路由在') break else: print(x) time.sleep(2) x += 1 else: logger.info(u'wan1route_2: %s' % wan1route_2) logger.info(u'wan2route_2: %s' % wan2route_2) logger.info(u'result11 %s' % result11) raise Exception('wan1/wan2默认路由显示有误') logger.info('test_002_backupLineSW passed')
def test_001_openPPPoEAuth_addAcc(self): u'''开启PPPoE认证 - 创建PPPoE账号''' # 005中设置了黑名单上网,这里增加一个判断联网 nodata = getAssertText('nodata') # 判断联网 ,不能则改回mac p = pingTestIP('www.baidu.com') if p == 'N': # 将mac改回 # 调用bat脚本 os.system('%s' % (batpath + 'changeMacToBack.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: # raise Exception('未获取到地址1') # 开启绑定情况下 仅更改mac 可能会获取不到地址 os.system('%s' % (batpath + 'ipconfig_release.bat')) time.sleep(5) os.system('%s' % (batpath + 'ipconfig_renew.bat')) time.sleep(5) i = 0 while i < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, i) if '192.168.' not in str(pcaddr_new): time.sleep(2) i += 1 else: print('IP地址已自动获取成功2', i) break else: raise Exception('未获取到地址2') # 删除黑名单绑定 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) blacklist = Organization_userBlackPage(self.driver, self.url) # 打开用户管理 - 组织成员 blacklist.click_UserManage() time.sleep(0.5) blacklist.click_blacklist() time.sleep(1) blacklist.click_delete() time.sleep(1) blacklist.click_ok() time.sleep(1) # 断言 开启提示信息是否有误 listtips = str(blacklist.getText_byXpath(blacklist.list_tips)) time.sleep(1) self.assertEqual(listtips, nodata, msg='黑名单用户删除失败') print('黑名单用户已删除') self.driver.quit() organization_group.import_empty_template(self) # 判断组织架构是否有其他组 有则清空 #调用新增组 “SelfComputerTest” organization_group.group_add(self) time.sleep(1) #开启PPPoE认证 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) pppoeauth = Organization_userAuthPage(self.driver, self.url) # 打开用户管理 - 用户认证 pppoeauth.click_UserManage() time.sleep(0.5) pppoeauth.click_userAuth() time.sleep(1) #修改PPPoE服务器配置 pppoeauth.click_PPPoEConfig() time.sleep(2) pppoeauth.input_pppoeStart('10.10.10.1') pppoeauth.input_pppoePriDns('114.114.114.114') pppoeauth.click_PppoeNoticeEn() pppoeauth.input_remainDays('50') #账号到期提前通告时间50天 配合账号将要过期的通告 pppoeauth.click_save() time.sleep(2) #启用pppoe server pppoeauth.click_pppoeAuthEn() time.sleep(1) # 断言 开启提示信息是否有误 status = str( pppoeauth.getAttribute_byXpath(pppoeauth.pppoeAuthEns, 'checked')) time.sleep(1) print(status) self.assertEqual(status, 'true', msg='PPPoE认证开启出错') print('PPPoE认证开启 验证成功') #配置一个不计费的PPPoE账号 pppoeauth.click_account() time.sleep(1) pppoeauth.click_addUser() time.sleep(1) pppoeauth.input_name('pppoeauth') #仅有一个用户组,这里省略 select = pppoeauth.selelement_byName(pppoeauth.authType) Select(select).select_by_value('PPPoE') time.sleep(1) pppoeauth.input_authAccount('pppoeauth') pppoeauth.input_authPassword('pppoeauth') pppoeauth.click_save() time.sleep(2) #断言 添加的账号 认证方式和认证账号 是否正常 list_authtype = pppoeauth.getText_byXpath(pppoeauth.list_authtype) list_authAcc = pppoeauth.getText_byXpath(pppoeauth.list_authAcc) self.assertEqual(str(list_authtype), 'PPPoE', msg='认证方式显示不为“PPPoE”') self.assertEqual(str(list_authAcc), 'pppoeauth', msg='认证账号不为“pppoeauth”') self.driver.quit() logger.info('test_001_openPPPoEAuth_addAcc passed')
def test_001_dhcp(self): u'''外网配置 - 动态接入''' wan_config = NetworkConfig_wanpage(self.driver, self.url) #先判断几条外线接入,删除其他几条外线 wan_config.click_line1edit() time.sleep(1) value_list = [] wan_num = wan_config.selelement_byName(wan_config.PortName) options_list = wan_num.find_elements_by_tag_name( wan_config.PortNameOptions) for option in options_list: print("Value is:%s Text is:%s" % (option.get_attribute("value"), option.text)) value_list.append(option.get_attribute("value")) print(value_list) wan_config.click_back() time.sleep(1) if 'WAN2' in value_list: wan_config.click_line2delete() time.sleep(1) wan_config.click_cfm_ok() time.sleep(10) if 'WAN3' in value_list: wan_config.click_line3delete() time.sleep(1) wan_config.click_cfm_ok() time.sleep(10) if 'WAN4' in value_list: wan_config.click_line4delete() time.sleep(1) wan_config.click_cfm_ok() time.sleep(10) if 'WAN5' in value_list: wan_config.click_line5delete() time.sleep(1) wan_config.click_cfm_ok() time.sleep(10) # 获取外线的链接类型 line1_type = wan_config.getText_byXpath(wan_config.line1Type) linetype = getAssertText('DHCPline') ConnectState = getAssertText('ConnectState') # 先改为动态接入,得到正确的IP地址及网关地址 # WAN1 if str(line1_type) != linetype: wan_config.click_line1edit() time.sleep(1) access_mode = wan_config.selelement_byName( wan_config.connectionType) Select(access_mode).select_by_value('DHCP') wan_config.click_save() time.sleep(10) # 修改接口后 可能会回到登录页面 所以关闭,再打开 self.driver.quit() login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) wan_config = NetworkConfig_wanpage(self.driver, self.url) wan_config.click_NetworkConfig() time.sleep(0.5) wan_config.click_WANconfig() time.sleep(1) else: print('wan1 动态接入') #断言 list_lineType = wan_config.getText_byXpath(wan_config.line1Type) print('list_lineType:', list_lineType) self.assertEqual(str(list_lineType), linetype, msg='连接类型 不为 动态接入') # 判断联网状态 i = 0 while i < 21: wan_config.click_refresh() time.sleep(1) list_conState = wan_config.getText_byXpath( wan_config.connectState1) print(str(list_conState), i) if str(list_conState) != ConnectState: time.sleep(3) i += 1 else: break else: CapPic(self.driver) logger.info(u"WAN口未连接") raise Exception('WAN1 未连接') i = 0 while i < 21: # 判断联网 ,不能上网则报错 # pingTestIP('114.114.114.114') p = pingTestIP('www.baidu.com') print(p, i) if p == 'N': time.sleep(3) i += 1 else: break else: logger.info(u"connect failed") raise Exception('connect failed.') self.driver.quit() logger.info('test_001_dhcp passed')
def test_001_ipsec(self): u'''ipsec VPN''' vpnRouteLan = getweb('vpnRouteLan') host = gettelnet('host') StateVPN1 = getAssertText('StateVPN1') WillReboottips = getAssertText('WillReboottips') #先判断是否可以上网 p = pingTestIP() if p == 'N': os.system('%s' % (batpath + 'changeDhcpIp.bat')) time.sleep(5) n = 0 while n < 30: pcaddr = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr, n) if '192.168.' not in str(pcaddr): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') # 删除绑定绑定 清空组 organization_group.group_delete(self) 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(2) try: self.driver.implicitly_wait(2) ipsec.find_ok() except NoSuchElementException: try: ipsec.find_tipsshowin() time.sleep(1) except NoSuchElementException: pass else: time.sleep(1) print('ipsec VPN列表为空') ipsec.click_add() time.sleep(1) ipsec.input_ids('test') ipsec.input_peer(vpnRouteWan) ipsec.input_remoteAddr(vpnRouteLan) # ipsec.input_remoteMask('255.255.255.0') ipsec.input_preshareKey('12345678') ipsec.click_save() time.sleep(2) try: #无线设备增加ac功能后 配置第一条ipsec时会提示重启 ipsec.find_ok() except NoSuchElementException: pass else: time.sleep(2) tips = str(ipsec.getText_byClass(ipsec.u_tim_str)) self.assertEqual(tips, WillReboottips, msg='点击提示重启 操作失败') # 设备重启时间不一致,做个判断 time.sleep(30) i = 0 while i < 20: now_url = str(self.driver.current_url) # print(now_url,i) if '/noAuth/login.html' not in now_url: # 如果不同 time.sleep(5) else: break i += 1 else: raise Exception('设备重启未正常启动') self.driver.quit() login.loginWeb(self) # 从外网配置页面获取WAN1口地址 wanpage = NetworkConfig_wanpage(self.driver, self.url) wanpage.click_NetworkConfig() time.sleep(0.5) wanpage.click_WANconfig() time.sleep(1) # 判断联网状态 i = 0 while i < 21: wanpage.click_refresh() time.sleep(1) list_conState = wanpage.getText_byXpath(wanpage.connectState1) print(str(list_conState), i) if str(list_conState) != ConnectState: time.sleep(3) i += 1 else: break else: CapPic(self.driver) logger.info(u"WAN口未连接") raise Exception('WAN1 未连接') i = 0 while i < 21: # 判断联网 ,不能上网则报错 p = pingTestIP('www.baidu.com') print(p, i) if p == 'N': time.sleep(3) i += 1 else: break else: logger.info(u"connect failed") raise Exception('connect failed.') # WAN1 ip变量赋值,页面读取 WAN1_ip = str(wanpage.getText_byXpath(wanpage.line1IP)) # print('WAN1_ip=',WAN1_ip) time.sleep(1) self.driver.quit() # 另外一台路由器 配置ipsec i = 0 #以访刚重启wan口还不通 while i < 60: pingTestIP(vpnRouteWan) if p == 'N': time.sleep(1) i += 1 else: break else: raise Exception(u'无法ping通vpnRoute') # time.sleep(5) 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) try: self.driver.implicitly_wait(2) ipsec.find_ok() except NoSuchElementException: try: ipsec.find_tipsshowin() time.sleep(1) except NoSuchElementException: pass else: time.sleep(1) print('ipsec VPN列表为空') ipsec.click_add() time.sleep(1) ipsec.input_ids('test') ipsec.input_peer(WAN1_ip) ipsec.input_remoteAddr(host) # ipsec.input_remoteMask('255.255.255.0') ipsec.input_preshareKey('12345678') ipsec.click_save() time.sleep(2) i = 0 while i < 100: ipsec.click_IPSec() time.sleep(1) list_status = ipsec.getText_byXpath(ipsec.list_status) print(list_status) if list_status == StateVPN1: logger.info(u'ipsec 已建立') break else: time.sleep(3) i += 1 else: logger.info(u'ipsec 未建立成功') CapPic(self.driver) raise Exception(u'ipsec未建立成功') self.driver.quit() logger.info('test_001_ipsec passed')
def test_006_binding(self): u'''启用ip/mac绑定生效;删除组织架构中的成员,查看绑定是否生效(是否可上网)''' host = gettelnet('host') # 判断联网 ,不能上网则报错 p = pingTestIP('www.163.com') if p == 'N': raise Exception('connect failed.') # # 获取本机ip 默认有线地址,有线断开会显示无线 # pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) # 调用bat脚本 地址修改为非绑定地址 192.168.1.39 网关192.168.1.1 if '192.168.1.1' in host: os.system(('%s' % batpath + 'changeStaticIP2_1duan.bat')) elif '192.168.16.1' in host: os.system(('%s' % batpath + 'changeStaticIP2_16duan.bat')) else: raise Exception('lan口非 1网段、16网段') time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr1 = socket.gethostbyname(socket.getfqdn( socket.gethostname())) print(pcaddr1, n) if str(pcaddr1) != batSameIP: time.sleep(2) n += 1 else: print('地址已修改为非绑定地址 192.168.1.39', n) break else: raise Exception('地址修改为非绑定地址 192.168.1.39失败') # 判断联网 ,切换非绑定IP后应该不能上网 time.sleep(5) pingTestIP('114.114.114.114') pingTestIP('www.baidu.com') time.sleep(2) p = pingTestIP('www.baidu.com') if p == 'Y': logger.info('非绑定IP 依旧可以上网') logger.info(u'pc当前mac为:%s' % pcaddr1) raise Exception('非绑定IP 依旧可以上网') # 将IP改回自动获取(设置dns为自动获取) # 调用bat脚本 os.system(('%s' % batpath + 'changeDhcpIp.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr1 = socket.gethostbyname(socket.getfqdn( socket.gethostname())) print(pcaddr1, n) if '192.168.' not in str(pcaddr1): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') #删除绑定绑定 清空组 organization_group.group_delete(self) # 调用bat脚本 地址修改为非绑定地址 192.168.1.39 网关192.168.1.1 if '192.168.1.1' in host: os.system(('%s' % batpath + 'changeStaticIP2_1duan.bat')) elif '192.168.16.1' in host: os.system(('%s' % batpath + 'changeStaticIP2_16duan.bat')) else: raise Exception('lan口非 1网段、16网段') time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr1 = socket.gethostbyname(socket.getfqdn( socket.gethostname())) print(pcaddr1, n) if str(pcaddr1) != batSameIP: time.sleep(2) n += 1 else: print('地址已修改为非绑定地址 192.168.1.39', n) break else: raise Exception('地址修改为非绑定地址 192.168.1.39失败') # 判断联网 ,删除绑定后 切换非绑定IP后应该能上网 time.sleep(3) p = pingTestIP('www.163.com') if p == 'N': raise Exception('connect failed.') # 将IP改回自动获取(设置dns为自动获取) # 调用bat脚本 os.system(('%s' % batpath + 'changeDhcpIp.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr1 = socket.gethostbyname(socket.getfqdn( socket.gethostname())) print(pcaddr1, n) if '192.168.' not in str(pcaddr1): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') logger.info('test_006_binding passed')
def test_002_static(self): u'''配置向导 - 固定接入''' wan_config = NetworkConfig_wanpage(self.driver, self.url) Staticline = getAssertText('Staticline') ConnectState = getAssertText('ConnectState') # 从外网配置页面获取WAN1口地址 wan_config.click_NetworkConfig() time.sleep(0.5) wan_config.click_WANconfig() time.sleep(1) # 判断联网状态 i = 0 while i < 21: wan_config.click_refresh() time.sleep(1) list_conState = wan_config.getText_byXpath( wan_config.connectState1) print(str(list_conState), i) if str(list_conState) != ConnectState: time.sleep(3) i += 1 else: break else: CapPic(self.driver) logger.info(u"WAN口未连接") raise Exception('WAN1 未连接') WAN1_ip = wan_config.getText_byXpath(wan_config.line1IP) WAN1_gw = wan_config.getText_byXpath(wan_config.line1gw) WAN1_dns = wan_config.getText_byXpath(wan_config.line1Dns) time.sleep(1) # 进入配置向导 将wan1口的IP/网关/dns 拿来输入 guide = ConfigGuidepage(self.driver, self.url) guide.click_configGuide() time.sleep(1) guide.click_next() time.sleep(1) connectionTypew = guide.selelement_byName(guide.connectionTypew) Select(connectionTypew).select_by_value('STATIC') time.sleep(1) guide.input_staticIp(WAN1_ip) guide.input_staticGateway(WAN1_gw) guide.input_staticPriDns(WAN1_dns) try: self.driver.implicitly_wait(2) guide.find_okey() except NoSuchElementException: print('设备支持无线') if support2 != '--': logger.info(u'参数支持2.4G') logger.info(u'支持2.4G,与参数表相符') else: CapPic(self.driver) logger.info(u'支持2.4G,与参数表不相符') raise Exception('支持2.4G,与参数表不相符') guide.click_next() time.sleep(1) guide.input_ssid('ssid_2.4G') try: guide.find_ssid_5g() except NoSuchElementException: if support5 != '--': CapPic(self.driver) logger.info(u'不支持5G,与参数表不相符') raise Exception('不支持5G,与参数表不相符') else: logger.info(u'不支持5G,与参数表相符') else: print('设备支持5G') if support5 != '--': CapPic(self.driver) logger.info(u'支持5G,与参数表相符') else: CapPic(self.driver) logger.info(u'支持5G,与参数表不相符') raise Exception('支持5G,与参数表不相符') guide.input_ssid_5g('ssid_5G') guide.click_okey() time.sleep(8) else: print('设备不支持无线') if support2 != '--': CapPic(self.driver) logger.info(u'不支持2.4G,与参数表不相符') raise Exception('不支持2.4G,与参数表不相符') else: logger.info(u'不支持2.4G,与参数表相符') self.driver.implicitly_wait(10) time.sleep(15) wan_config = NetworkConfig_wanpage(self.driver, self.url) # 进入网络配置-外网配置 wan_config.click_NetworkConfig() time.sleep(0.5) wan_config.click_WANconfig() time.sleep(1) # 断言 list_lineType = wan_config.getText_byXpath(wan_config.line1Type) print('list_lineType', list_lineType) self.assertEqual(str(list_lineType), Staticline, msg='连接类型 不为 固定接入') # 判断联网状态 i = 0 while i < 21: wan_config.click_refresh_s() time.sleep(1) list_conState = wan_config.getText_byXpath( wan_config.connectState1) print(str(list_conState), i) if str(list_conState) != ConnectState: time.sleep(3) i += 1 else: break else: CapPic(self.driver) logger.info(u"WAN口未连接") raise Exception('WAN1 未连接') i = 0 while i < 21: # 判断联网 ,不能上网则报错 # pingTestIP('114.114.114.114') p = pingTestIP('www.baidu.com') print(p, i) if p == 'N': i += 1 time.sleep(3) else: break else: logger.info(u"connect failed") raise Exception('connect failed.') self.driver.quit() logger.info('test_002_static passed')
def test_004_WanAcessFTP(self): u'''WAN口访问FTP''' ftpSmaba = NetworkSharingPage(self.driver, self.url) #1、验证未打开 ‘wan口访问’ 无法从wan访问FTP #1)验证未打开 WANEnable = str( self.driver.find_element_by_name('WANEnable').get_attribute( 'checked')) print(WANEnable) if WANEnable == 'true': self.driver.find_element_by_name('WANEnable').click() ftpSmaba.click_save() time.sleep(1) ftpSmaba.click_NetworkSharing2() # 点击网络共享子页面 time.sleep(1) WANEnable = str( self.driver.find_element_by_name('WANEnable').get_attribute( 'checked')) self.assertEqual(WANEnable, 'None', msg='允许wan口访问 关闭失败') #2)从外网配置页面获取WAN1口地址 wanpage = NetworkConfig_wanpage(self.driver, self.url) wanpage.click_WANconfig() time.sleep(1) # WAN1 ip变量赋值,页面读取 WAN1_ip = str(wanpage.getText_byXpath(wanpage.line1IP)) time.sleep(1) #3) 更改pc 交换机接口与wan口/上联口通 swconfig.test_LanToWan(self) # 重新获取地址 应获取到上层网关下发的地址 pcaddr = str(socket.gethostbyname(socket.getfqdn( socket.gethostname()))) # 调用bat脚本 IP地址释放 os.system('%s' % (batpath + 'ipconfig_release.bat')) time.sleep(2) pcaddr1 = str( socket.gethostbyname(socket.getfqdn(socket.gethostname()))) print(pcaddr1) if pcaddr1 != str(pcaddr): print('IP地址已释放') else: time.sleep(3) time.sleep(2) # 重新获取地址 os.system('%s' % (batpath + 'ipconfig_renew.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) print(pcaddr, n) if '192.168.' not in str(pcaddr): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') time.sleep(2) #4)尝试访问FTP # ftp验证登录 IP = WAN1_ip Port = 21 ftp = ftplib.FTP() ftp.encoding = 'utf-8' try: ftp.connect(host=IP, port=Port, timeout=5) ftp.login(user='******') # 相当于没有验证账号密码 except socket.error or socket.gaierror: print("未开启“WAN口访问开关”无法访问FTP服务 验证通过") except ftplib.error_perm: # 当前未开启wan口访问,wan口访问时候会弹出账号密码框,但输入会提示密码错误 print("未开启“WAN口访问开关”访问FTP服务会密码错误 验证通过") else: raise Exception("未开启“WAN口访问开关” 依旧可以访问FTP服务") ftp.quit() #5)改为lan口 并重新获取地址 switchURL2 = gettelnet('switchURL2') # 调用bat脚本 地址修改为 192.168.34.39 网关192.168.34.1 os.system('%s' % (batpath + 'changeStaticIP3_34duan.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) print(pcaddr, n) if str(pcaddr) != '192.168.34.39': time.sleep(2) n += 1 else: print('地址已修改为地址 192.168.34.39', n) break else: raise Exception('地址修改为192.168.34.39 失败') # 更改pc 交换机接口与lan口通 p = pingTestIP(switchURL2) if p == 'Y': swconfig.test_WanToLan(self) # 将IP改回自动获取 应获取到被测设备下发的地址 os.system('%s' % (batpath + 'changeDhcpIp.bat')) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') time.sleep(3) #2 验证打开 ‘wan口访问’ 可以从wan口访问FTP #1)打开 ftpSmaba = NetworkSharingPage(self.driver, self.url) ftpSmaba.click_NetworkSharing() time.sleep(1) ftpSmaba.click_NetworkSharing2() # 点击网络共享子页面 time.sleep(1) self.driver.find_element_by_name('WANEnable').click() ftpSmaba.click_save() time.sleep(2) WANEnable = self.driver.find_element_by_name( 'WANEnable').get_attribute('checked') self.assertEqual(WANEnable, 'true', msg='允许wan口访问 启用失败') #2) 更改pc 交换机接口与wan口/上联口通 swconfig.test_LanToWan(self) # 重新获取地址 应获取到上层网关下发的地址 pcaddr = str(socket.gethostbyname(socket.getfqdn( socket.gethostname()))) # 调用bat脚本 IP地址释放 os.system('%s' % (batpath + 'ipconfig_release.bat')) time.sleep(2) pcaddr1 = str( socket.gethostbyname(socket.getfqdn(socket.gethostname()))) print(pcaddr1) if pcaddr1 != str(pcaddr): print('IP地址已释放') else: time.sleep(3) time.sleep(2) # 重新获取地址 os.system('%s' % (batpath + 'ipconfig_renew.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) print(pcaddr, n) if '192.168.' not in str(pcaddr): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') time.sleep(2) # 3)ftp验证登陆 try: ftp.connect(host=IP, port=Port, timeout=5) except socket.error or socket.gaierror: raise Exception("无法访问FTP服务") try: ftp.login(user='******') # 相当于没有验证账号密码 except ftplib.error_perm: raise Exception("FTP账号密码验证错误") ftpFile = ftp.nlst('1') # 获取指定目录下的文件 print('ftpFile', ftpFile) ftp.quit() self.driver.quit() logger.info('test_004_WanaAcess passed')
def tearDown(self): switchURL2 = gettelnet('switchURL2') p = pingTestIP() if p == 'N': # 调用bat脚本 地址修改为 192.168.34.39 网关192.168.34.1 os.system('%s' % (batpath + 'changeStaticIP3_34duan.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr, n) if str(pcaddr) != '192.168.34.39': time.sleep(2) n += 1 else: print('地址已修改为地址 192.168.34.39', n) time.sleep(2) break else: raise Exception('地址修改为192.168.34.39 失败') time.sleep(2) # 更改pc 交换机接口与lan口通 p = pingTestIP(switchURL2) if p == 'N': raise Exception(u'无法ping通交换机switchURL2地址') swconfig.test_WanToLan(self) # 将IP改回自动获取 应获取到被测设备下发的地址 os.system('%s' % (batpath + 'changeDhcpIp.bat')) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr_new = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr_new, n) if '192.168.' not in str(pcaddr_new): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') login.loginWeb(self) self.driver.implicitly_wait(10) staticMapping = staticMappingPage(self.driver, self.url) # 配置映射 staticMapping.click_NetworkConfig() time.sleep(0.5) staticMapping.click_portMapping() time.sleep(1) try: self.driver.implicitly_wait(2) staticMapping.find_delete1() except NoSuchElementException: pass else: time.sleep(1) staticMapping.click_ok() time.sleep(1) list_tips = staticMapping.getText_byXpath(staticMapping.list_tips) self.assertEqual(str(list_tips), ' ', msg='映射删除失败') self.driver.quit() logger.info('tearDown over') logger.info('%s' % ('=' * 50))
def test_003_pppoe(self): u'''配置向导 - PPPoE接入''' guide = ConfigGuidepage(self.driver, self.url) PPPoEline = getAssertText('PPPoEline') ConnectState = getAssertText('ConnectState') # 进入配置向导 guide.click_configGuide() time.sleep(0.5) guide.click_next() time.sleep(1) connectionTypew = guide.selelement_byName(guide.connectionTypew) Select(connectionTypew).select_by_value('PPPOE') time.sleep(1) guide.input_pppoeUser('111') #输入上层网关配置的PPPoE账号密码 guide.input_pppoePass('111') self.driver.implicitly_wait(2) # 无线设备会定位不到okey,这里让等待时间缩短一些 try: guide.find_okey() except NoSuchElementException: print('设备支持无线') if support2 != '--': logger.info(u'参数支持2.4G') logger.info(u'支持2.4G,与参数表相符') else: CapPic(self.driver) logger.info(u'支持2.4G,与参数表不相符') raise Exception('支持2.4G,与参数表不相符') guide.click_next() time.sleep(1) guide.input_ssid('ssid_2.4G') try: guide.find_ssid_5g() except NoSuchElementException: if support5 != '--': CapPic(self.driver) logger.info(u'不支持5G,与参数表不相符') raise Exception('不支持5G,与参数表不相符') else: logger.info(u'不支持5G,与参数表相符') else: print('设备支持5G') if support5 != '--': CapPic(self.driver) logger.info(u'支持5G,与参数表相符') else: CapPic(self.driver) logger.info(u'支持5G,与参数表不相符') raise Exception('支持5G,与参数表不相符') guide.input_ssid_5g('ssid_5G') guide.click_okey() time.sleep(8) else: print('设备不支持无线') if support2 != '--': CapPic(self.driver) logger.info(u'不支持2.4G,与参数表不相符') raise Exception('不支持2.4G,与参数表不相符') else: logger.info(u'不支持2.4G,与参数表相符') time.sleep(15) self.driver.implicitly_wait(10) wan_config = NetworkConfig_wanpage(self.driver, self.url) # 进入网络配置-外网配置 wan_config.click_NetworkConfig() time.sleep(0.5) wan_config.click_WANconfig() time.sleep(1) # 断言 list_lineType = wan_config.getText_byXpath(wan_config.line1Type) # print('list_lineType:',list_lineType) self.assertEqual(str(list_lineType), PPPoEline, msg='连接类型 不为 PPPoE接入') # PPPoE接入 拨号成功才会显示已连接 i = 0 while i < 21: wan_config.click_refresh() time.sleep(1) list_conState = wan_config.getText_byXpath( wan_config.connectState1) print(str(list_conState), i) if str(list_conState) != ConnectState: time.sleep(3) i += 1 else: break else: CapPic(self.driver) logger.info(u"WAN口未连接") raise Exception('WAN1 未连接') i = 0 while i < 21: # 判断联网 ,不能上网则报错 # pingTestIP('114.114.114.114') p = pingTestIP('www.baidu.com') print(p, i) if p == 'N': i += 1 time.sleep(3) else: break else: logger.info(u"connect failed") raise Exception('connect failed.') # # list_conState = guide.getText_byXpath(guide.list_connState) # print('list_connection_state:',str(list_conState)) # if str(list_conState) != ConnectState: # PPPoE接入 拨号成功才会显示已连接 # time.sleep(5) # guide.click_refresh() # time.sleep(0.5) # list_conState = guide.getText_byXpath(guide.list_connState) # if str(list_conState) != ConnectState: # PPPoE接入 拨号成功才会显示已连接 # guide.click_list_connState() # guide.click_dial() # time.sleep(10) # guide.click_refresh() # time.sleep(0.5) # list_conState = guide.getText_byXpath(guide.list_connState) # if str(list_conState) != ConnectState: # raise Exception('WAN1 未连接') # else: # 已连接 # time.sleep(3) # pingTestIP('114.114.114.114') # pingTestIP('www.baidu.com') # p = pingTestIP('www.baidu.com') # if p == 'N': # raise Exception('connect failed.') # else: # 已连接 # time.sleep(3) # pingTestIP('114.114.114.114') # pingTestIP('www.baidu.com') # p = pingTestIP('www.baidu.com') # if p == 'N': # raise Exception('connect failed.') # else: # 已连接 # time.sleep(3) # pingTestIP('114.114.114.114') # pingTestIP('www.baidu.com') # p = pingTestIP('www.baidu.com') # if p == 'N': # raise Exception('connect failed.') self.driver.quit() logger.info('test_003_pppoe passed')
def test_002_close(self): u'''关闭即插即用 错误的IP,无法上网''' plug = NetworkConfig_LANpage(self.driver, self.url) saveSucess = getAssertText('saveSucess') # 关闭UPNP plug.click_upnpClose() time.sleep(0.5) plug.click_save() time.sleep(1) # 断言 开启提示信息是否有误 tips = str(plug.getText_byClass(plug.tips)) time.sleep(1) self.assertEqual(tips, saveSucess, msg='即插即用 开启出错') print('即插即用 已关闭') #判断联网 ,关闭即插即用后 错误IP用户应该不能上网 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) if pcaddr != '192.168.189.39': # 调用bat脚本 地址修改为 192.168.189.39 网关192.168.198.1 os.system('%s' % (batpath + 'changeStaticIP.bat')) time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname( socket.getfqdn(socket.gethostname())) print(pcaddr, n) if str(pcaddr) != '192.168.198.39': time.sleep(2) n += 1 else: print('地址已修改为地址 192.168.198.39', n) break else: raise Exception('地址修改为192.168.198.39 失败') time.sleep(3) pingTestIP('114.114.114.114') #避免失误 pingTestIP() #避免失误 p = pingTestIP('114.114.114.114') if p == 'Y': raise Exception('错误IP用户依旧可以上网') p = pingTestIP() if p == 'Y': raise Exception('错误IP用户依旧可以访问路由器') time.sleep(1) #将IP改回自动获取 os.system('%s' % batpath + 'changeDhcpIp.bat') time.sleep(5) n = 0 while n < 30: # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr1 = socket.gethostbyname(socket.getfqdn( socket.gethostname())) print(pcaddr1, n) if '192.168.' not in str(pcaddr1): time.sleep(2) n += 1 else: print('IP地址已自动获取成功', n) break else: raise Exception('未获取到地址') # 判断联网 ,不能上网则报错 pingTestIP('www.163.com') # 避免失误 p = pingTestIP('www.163.com') if p == 'N': raise Exception('connect failed.') self.driver.quit() logger.info('test_002_close passed')
from common.ReadConfig import getweb, getParameter from common.pingTest import pingTestIP from common.GetRouteCPU import getCPUmodel from common.swconfig import swconfig from common.swconfig import test_initSwPortNext from common.initTestPC import initTestPC from common.GetWanNum import getWanNum # from common.ParametersFileU import parametersFile from common.SoftwareReplace import softwareReplac if testCount > 1: #判断切换到下一个型号对应的wan/lan口 并初始化交换机 test_initSwPortNext() time.sleep(2) p = 0 #更换板子后要等arp更新 while p < 30: ping = pingTestIP() print('ping:', ping) if ping != 'Y': time.sleep(1) p += 1 else: break else: raise Exception('切换交换机端口后 无法ping通下一个测试主机') ReplaceVersion = 'ReplaceVersion' + str(testCount - 1) print('更换到的版本号:', getweb(ReplaceVersion)) softwareReplac(getweb(ReplaceVersion)) # telnet更换路由器软件 #1、性能参数 from test_case import Parameter_010_DefaultInfo #出厂信息(包含了恢复出厂)
def test_001_dhcp(self): u'''配置向导 - 动态接入''' guide = ConfigGuidepage(self.driver, self.url) linetype = getAssertText('DHCPline') ConnectState = getAssertText('ConnectState') # 进入配置向导 guide.click_configGuide() time.sleep(0.5) guide.click_next() time.sleep(1) connectionTypew = guide.selelement_byName(guide.connectionTypew) Select(connectionTypew).select_by_value('DHCP') try: self.driver.implicitly_wait(2) guide.find_okey() except NoSuchElementException: print('设备支持无线') if support2 != '--': logger.info(u'参数支持2.4G') logger.info(u'支持2.4G,与参数表相符') else: CapPic(self.driver) logger.info(u'支持2.4G,与参数表不相符') raise Exception('支持2.4G,与参数表不相符') guide.click_next() time.sleep(1) guide.input_ssid('ssid_2.4G') try: guide.find_ssid_5g() except NoSuchElementException: if support5 != '--': CapPic(self.driver) logger.info(u'不支持5G,与参数表不相符') raise Exception('不支持5G,与参数表不相符') else: logger.info(u'不支持5G,与参数表相符') else: print('设备支持5G') if support5 != '--': CapPic(self.driver) logger.info(u'支持5G,与参数表相符') else: CapPic(self.driver) logger.info(u'支持5G,与参数表不相符') raise Exception('支持5G,与参数表不相符') guide.input_ssid_5g('ssid_5G') guide.click_okey() time.sleep(8) else: print('设备不支持无线') if support2 != '--': CapPic(self.driver) logger.info(u'不支持2.4G,与参数表不相符') raise Exception('不支持2.4G,与参数表不相符') else: logger.info(u'不支持2.4G,与参数表相符') time.sleep(15) self.driver.implicitly_wait(10) wan_config = NetworkConfig_wanpage(self.driver, self.url) # 进入网络配置-外网配置 wan_config.click_NetworkConfig() time.sleep(0.5) wan_config.click_WANconfig() time.sleep(1) # 断言 list_lineType = wan_config.getText_byXpath(wan_config.line1Type) print('list_lineType:', list_lineType) self.assertEqual(str(list_lineType), linetype, msg='连接类型 不为 动态接入') # 判断联网状态 i = 0 while i < 21: wan_config.click_refresh() time.sleep(1) list_conState = wan_config.getText_byXpath( wan_config.connectState1) print(str(list_conState), i) if str(list_conState) != ConnectState: time.sleep(3) i += 1 else: break else: CapPic(self.driver) logger.info(u"WAN口未连接") raise Exception('WAN1 未连接') i = 0 while i < 21: # 判断联网 ,不能上网则报错 # pingTestIP('114.114.114.114') p = pingTestIP('www.baidu.com') print(p, i) if p == 'N': time.sleep(3) i += 1 else: break else: logger.info(u"connect failed") raise Exception('connect failed.') self.driver.quit() logger.info('test_001_dhcp passed')