def test_001_groupAdd(self): u'''组织架构 - 新增组''' organization_group.import_empty_template(self)#判断是否有组织架构,有则清空 organization_group.group_add(self) # 新增组 logger.info('test_001_groupAdd passed')
def test_002_StaticList(self): u'''静态列表显示''' organization_group.import_empty_template(self) # 判断组织架构是否有其他组 有则清空 #新增一个组 organization_group.group_add(self) # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) if pcaddr == batSameIP: 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) if pcaddr == batSameIP: raise Exception(u'IP地址已经为1.39') break else: raise Exception('未获取到地址') login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) dhcpserver = DHCPserverpage(self.driver, self.url) # 打开网络配置 - DHCP服务 dhcpserver.click_NetworkConfig() time.sleep(0.5) dhcpserver.click_DHCPserver() time.sleep(1) # 对当前PC 进行静态绑定 dhcpserver.click_StaticDHCP() time.sleep(1) #新增(注意add会有多个元素被识别到 这里用绝对路径) dhcpserver.click_add() time.sleep(1) dhcpserver.input_UserName('oneself') dhcpserver.input_IP(pcaddr) dhcpserver.input_MAC(PcMac) #如更换PC 注意修改config.ini中mac地址 dhcpserver.click_save() time.sleep(1) #静态列表显示变量赋值 list_username = dhcpserver.getText_byXpath(dhcpserver.list_username) list_poolname = dhcpserver.getText_byXpath(dhcpserver.list_poolname) list_IP = dhcpserver.getText_byXpath(dhcpserver.list_IP) list_MAC = dhcpserver.getText_byXpath(dhcpserver.list_MAC) #断言 判断列表显示是否正常 self.assertEqual(list_username, 'oneself', msg='列表中用户名显示不一致') self.assertEqual(list_poolname, 'default', msg='列表中 地址池名称 不为default') #默认地址池名称 self.assertEqual(list_IP, pcaddr, msg='列表中IP地址 显示不一致') self.assertEqual(list_MAC, PcMac, msg='列表中MAC地址池显示不一致') self.driver.quit() logger.info('test_002_StaticList passed')
def test_001_openRemoteAuth(self): u'''开启远程认证''' if Support == '√': logger.info(u'参数支持远程认证') organization_group.import_empty_template(self) # 判断组织架构是否有其他组 有则清空 # 打开用户管理 - 用户认证 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) remoteauth = Organization_userAuthPage(self.driver, self.url) remoteauth.click_UserManage() time.sleep(0.3) remoteauth.click_userAuth() time.sleep(1) # 开启远程认证 remoteauth.click_remoteAuthEn() time.sleep(0.5) # 断言 提示信息是否有误 status = str( remoteauth.getAttribute_byXpath(remoteauth.remoteAuthEs, 'checked')) self.assertEqual(status, 'true', msg='远程认证开启出错') time.sleep(1) self.driver.quit() print('远程认证 开启成功') # 新增用户组及PC的组织架构 organization_group.add_user(self) time.sleep(1) elif Support == '×': logger.info(u'参数不支持远程认证') logger.info('test_001_openRemoteAuth passed')
def test_003_closeWebAuth(self): u'''关闭web认证''' if Support == '√': logger.info(u'参数支持本地认证') # 打开用户管理 - 用户认证 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_WebAuthC() time.sleep(1) # 断言 提示信息是否有误 status = str(webauth.getAttribute_byXpath(webauth.WebAuthCs,'checked')) time.sleep(1) self.assertEqual(status, 'true', msg='web认证关闭出错') self.driver.quit() print('web认证关闭 验证成功') # 清空组织架构组 organization_group.import_empty_template(self) # 判断组织架构是否有其他组 有则清空 print('删除组织架构组 完成') elif Support == '×': logger.info(u'参数不支持本地认证') logger.info('test_003_closeWebAuth 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 test_001_addWebAccNumber(self): u'''认证账号 - web账号''' AccountingType = getAssertText('AccountingType') organization_group.import_empty_template(self) # 判断组织架构是否有其他组 有则清空 # 调用新增组 “SelfComputerTest” organization_group.group_add(self) # 新增web认证账号 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) webauth.click_account() time.sleep(1) webauth.click_addUser() time.sleep(1) webauth.input_name('webtest1') # 仅有一个用户组,这里省略 select = webauth.selelement_byName(webauth.authType) Select(select).select_by_value('Web') time.sleep(1) webauth.input_authAccount('webtest1') webauth.input_authPassword('webtest1') webauth.click_save() time.sleep(2) # 断言 添加的账号 认证方式和认证账号 是否正常 list_authtype = webauth.getText_byXpath(webauth.list_authtype) list_authAcc = webauth.getText_byXpath(webauth.list_authAcc) self.assertEqual(str(list_authtype), 'Web', msg='认证方式显示不为“Web”') self.assertEqual(str(list_authAcc), 'webtest1', msg='认证账号不为“webtest1”') print('认证账号 - 新增web账号 验证成功') # 修改web账号的计费方式为日期计费 time.sleep(1) webauth.click_listedit1() time.sleep(1) webauth.click_accountBillEn() time.sleep(0.5) webauth.click_save() time.sleep(1) # 断言 编辑的账号 计费方式是否已开启 list_AccountingType = str(webauth.getText_byXpath(webauth.list_AccountingType)) self.assertEqual(list_AccountingType, AccountingType, msg='web认证账号 修改成功') self.driver.quit() logger.info('test_001_addWebAccNumber passed')
def test_002_MovetoOther(self): u'''用户 :移动到其他组''' organization_group.import_empty_template(self) # 判断是否有组织架构,有则清空 #新建组 organization_group.group_add(self) #切回用户状态列表 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) #移动 列表中第一个 到 新建组'SelfComputerTest' 中 #获取列表中第一个被移动的用户的IP list_IP1 = str(status.getText_byXpath(status.list_IP1)) status.click_checkbox1() time.sleep(0.5) status.click_move() time.sleep(1) status.click_save() time.sleep(2) # 断言 group = OrganizationMembersPage(self.driver, self.url) group.click_userGroup() time.sleep(1) group.click_list_groupName_c() time.sleep(2) listIP = str(group.getText_byXpath(group.listAddIP)) self.assertEqual(listIP, list_IP1, msg='移动出错 IP不一致') authgroup = str(group.getText_byXpath(group.list_authgroup2)) self.assertEqual(authgroup, 'SelfComputerTest', msg='移动出错 所属组 不一致') self.driver.quit() print('移动到其他组 验证成功') # 删除新建组'SelfComputerTest',使在线用户回到临时用户组 time.sleep(1) organization_group.group_delete(self) logger.info('test_002_MovetoOther passed')
def test_003_closeRemoteAuth(self): u'''关闭远程认证''' if Support == '√': logger.info(u'参数支持远程认证') login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) remoteauth = Organization_userAuthPage(self.driver, self.url) remoteauth.click_UserManage() time.sleep(0.3) remoteauth.click_userAuth() time.sleep(1) # 关闭web认证 remoteauth.click_remoteAuthC() time.sleep(1) # 断言 提示信息是否有误 status = str( remoteauth.getAttribute_byXpath(remoteauth.remoteAuthCs, 'checked')) self.assertEqual(status, 'true', msg='远程认证关闭出错') print('远程认证关闭') # 免认证选择 全部用户,然后关闭免认证 remoteauth.click_noConfig() time.sleep(1) remoteauth.click_alluser() time.sleep(0.5) remoteauth.click_save() time.sleep(1) remoteauth.click_FreeAuthC() time.sleep(2) # 断言 提示信息是否有误 status2 = str( remoteauth.getAttribute_byXpath(remoteauth.FreeAuthCs, 'checked')) self.assertEqual(status2, 'true', msg='免认证关闭出错') print('免认证关闭') self.driver.quit() # 清空组织架构组 organization_group.import_empty_template(self) # 判断组织架构是否有其他组 有则清空 print('删除组织架构组 完成') elif Support == '×': logger.info(u'参数不支持远程认证') logger.info('test_003_closeRemoteAuth passed')
def test_001_FreeAuthgroup(self): u'''免认证 - 组织成员''' self.driver.quit() organization_group.import_empty_template(self) # 判断组织架构是否有其他组 有则清空 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) freeauth = Organization_userAuthPage(self.driver, self.url) # 打开用户管理 - 用户认证 freeauth.click_UserManage() time.sleep(0.5) freeauth.click_userAuth() time.sleep(1) #免认证选择组织架构 freeauth.click_noConfig() time.sleep(1) freeauth.click_usergroup() time.sleep(1) # 组织架构,这里选择的是ROOT 所有 freeauth.click_Root() time.sleep(0.5) freeauth.click_save() time.sleep(1) self.driver.quit() # 新增用户组及普通IP用户 organization_group.add_user(self) #打开网页验证 断言 self.driver = webdriver.Chrome() self.driver.implicitly_wait(10) self.driver.get('http://www.baidu.com') time.sleep(2) title1 = self.driver.title # print(title1) self.assertEqual(title1, '百度一下,你就知道', msg='免认证-组织架构 出错') self.driver.quit() print('免认证 - 组织成员 验证成功') #导入空组织架构 以 清空 organization_group.import_empty_template(self) logger.info('test_001_FreeAuthgroup passed')
def test_002_usergroup(self): u'''内网访问控制 - 组织架构''' self.driver.quit() RouteUrl = getweb('RouteUrl') #增加组织架构用户 organization_group.import_empty_template(self) organization_group.add_user(self) login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) accesscontrol = ManagementPolicyPage(self.driver, self.url) # 进入系统配置-网管策略-内网访问控制 accesscontrol.click_sysConfig() time.sleep(0.5) accesscontrol.click_ManagementPolicy() time.sleep(1) accesscontrol.click_lanAccessControl() time.sleep(1) accesscontrol.click_choosePeople() time.sleep(1) accesscontrol.click_usergroup() #组织架构,这里选择的是ROOT 所有 time.sleep(1) accesscontrol.click_Root() #弹窗中的保存 accesscontrol.click_saveW1() time.sleep(1) accesscontrol.click_innerAccessControlEn() accesscontrol.click_save() time.sleep(1) self.driver.quit() # 调用bat脚本 地址修改为非组织架构IP 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后应该不能登录设备 self.driver = webdriver.Chrome() # self.driver.maximize_window() self.driver.implicitly_wait(10) self.driver.get(RouteUrl) title=self.driver.title if 'Error: Forbidden' in title: print('非组织架构用户无法登录设备 验证通过') else: CapPic(self.driver) logger.info('非组织架构用户依旧可以登录设备') raise Exception('非组织架构用户依旧可以登录设备') self.driver.quit() # 将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('未获取到地址') # 验证是否可以登录 并删除添加的组织架构 #先关闭访问控制 否则删除组织架构后 无法登录 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) accesscontrol = ManagementPolicyPage(self.driver, self.url) # 进入系统配置-网管策略-内网访问控制 accesscontrol.click_sysConfig() time.sleep(0.5) accesscontrol.click_ManagementPolicy() time.sleep(1) accesscontrol.click_lanAccessControl() time.sleep(1) accesscontrol.click_innerAccessControlC() accesscontrol.click_save() time.sleep(1) self.driver.quit() #删除添加的组织架构 organization_group.group_delete(self) print('访问控制 选择组织架构 验证通过') logger.info('test_002_usergroup passed')
def test_005_import_emptyTemplate(self): #清空组织架构 u'''组织架构 - 判断组织架构不为空则导入空组织架构模板(清空组织架构)''' organization_group.import_empty_template(self) # 调用判断 有组织架构清空 logger.info('test_005_import_emptyTemplate passed')
def test_001_add_user(self): u'''组织架构 - 新增成员''' organization_group.import_empty_template(self) # 调用判断 有组织架构清空 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) #普通用户 # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) # 新增用户 仅IP 设置的为本机IP group.click_addBtnNewTree1() time.sleep(1) group.input_groupName('SelfComputerTest') group.click_save() time.sleep(1) group.click_addUser() time.sleep(1) group.input_UserName('SelfComputer1') group.input_normalIP(pcaddr) group.click_save() time.sleep(2) # 断言 增加的IP与实际IP相同:代表验证通过 group.click_userGroup() group.click_list_groupName_c() time.sleep(1) listAddIP = str(group.getText_byXpath(group.listAddIP)) self.assertEqual(listAddIP, pcaddr, msg='新增 普通用户出错') print('组织架构 - 新增普通用户 验证成功') # 再新建一个组 time.sleep(1) group.click_addBtnNewTree1() time.sleep(1) group.input_groupName('SelfComputerTest2') group.click_save() time.sleep(2) #用户认证页面 判断是否支持web认证 webauth = 1 #预设web和pppoe认证为1,支持 PPPoEAuth = 1 auth = Organization_userAuthPage(self.driver, self.url) auth.click_userAuth() time.sleep(1) try: self.driver.implicitly_wait(2) auth.find_WebAuthC() except ElementNotVisibleException: webauth = 0 try: auth.find_pppoeAuthC() except ElementNotVisibleException: PPPoEAuth = 0 self.driver.implicitly_wait(10) group.click_userGroup() time.sleep(1) if webauth == 1: # 新增web认证用户(部分型号不支持web认证) group.click_addUser() time.sleep(1) group.input_UserName('webtest1') group.click_authuser() time.sleep(1) sel = group.selelement_byName(group.authType) Select(sel).select_by_value('Web') time.sleep(1) group.input_authAccount('webtest1') group.input_authPassword('webtest1') group.click_save() time.sleep(2) # 断言 添加的账号 认证方式和认证账号 是否正常 group.click_list_groupName_c() time.sleep(1) list_authType = group.getText_byXpath(group.list_authType) list_authAccount = group.getText_byXpath(group.list_authAccount) self.assertEqual(str(list_authType), 'Web', msg='认证方式显示不为“Web”') self.assertEqual(str(list_authAccount), 'webtest1', msg='认证账号不为“webtest1”') if PPPoEAuth == 1: #新增pppoe用户(部分型号不支持PPPoE server,目前支持web认证的都支持pppoe server) group.click_addUser() time.sleep(1) group.input_UserName('zpppoetest1') group.click_authuser() time.sleep(1) sel = group.selelement_byName(group.authType) Select(sel).select_by_value('PPPoE') time.sleep(0.5) group.input_authAccount('pppoetest1') group.input_authPassword('pppoetest1') group.click_save() time.sleep(2) #断言 group.click_list_groupName_c() time.sleep(1) #pppoe账号排序默认在web账号之前的第二行,这里还是判断第二行的信息 list_authType = group.getText_byXpath(group.list_authType) list_authAccount = group.getText_byXpath(group.list_authAccount) self.assertEqual(str(list_authType), 'PPPoE', msg='认证方式显示不为“PPPoE”') self.assertEqual(str(list_authAccount), 'pppoetest1', msg='认证账号不为“pppoetest1”') print('组织架构 - 新增PPPoE用户 验证成功') self.driver.quit() logger.info('test_001_add_user passed')
def test_003_import_export(self): u'''组织架构 - 导入导出''' organization_csv = getAssertText('organization_csv') organization_csv3 = getAssertText('organization_csv3') tempUser = getAssertText('tempUser') batpath = os.path.dirname(os.path.abspath('.')) + '/script/' #先删除组织成员路径中 "组织成员20""织成员3333"开头的 csv文件 call_Firefox.del_organization_csv(self) #调用Firefox 导出组织架构 call_Firefox.Firefox_login_web(self) 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.click_outload() time.sleep(1) # 进行配置文件命名修改 path = os.path.dirname(os.path.abspath('.')) + '/tmp/' #配置文件存放(下载)路径 sys.path.append(r'%s' % path) files = os.listdir(r'%s' % path) #os.listdir(path) 返回path指定的文件夹包含的文件或文件夹的名字的列表 #通过文件名称判断 修改为指定的文件名 for filename in files: portion = os.path.splitext(filename) #splitext()用于返回 文件名和扩展名 元组 # print(portion2) if organization_csv in str(portion[0]): #如果文件名种包含"组织成员20" if portion[1] == '.csv': #如果后缀是 .xml newname = organization_csv3 + '.csv' #重新组合文件名和后缀名,直接修改名称的话 程序和文件必须在一个目录下 filenamedir = (r'%s' % path) + filename newnamedir = (r'%s' % path) + newname #修改文件名称(与autoIt上传脚本中上传的文件名称一致) os.rename(filenamedir, newnamedir) print('组织架构 - 导出 验证成功') #更改下组织架构 time.sleep(1) group.click_addBtnNewTree1() time.sleep(1) group.input_groupName('SelfComputerTest3') time.sleep(0.5) group.click_save() time.sleep(2) self.driver.quit() #导入 刚导出的 修改配置之前 的组织架构 login.loginWeb2(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.click_download() time.sleep(1) group.click_chooseFile() time.sleep(1) # 调用autoIt脚本上传组的cvs文件 if organization_csv == '组织成员20': autoItScript = batpath + 'SE_organizationalimport_groupNewCn.exe' if organization_csv == 'Groupmembers20': autoItScript = batpath + 'SE_organizationalimport_groupNewEn.exe' os.system('%s' % autoItScript) time.sleep(2) group.click_save() time.sleep(5) # 断言 组只有4个:代表验证通过 time.sleep(1) groupId = str(group.getText_byID(group.list_groupName3)) print(groupId) self.assertEqual(groupId, tempUser, msg='"临时用户组"id 不为4,导入组织架构有误') #删除 组织成员3333.csv 文件 call_Firefox.del_organization_csv(self) self.driver.quit() print('组织架构 - 导入 验证成功') #导入空组织架构 以 清空 organization_group.import_empty_template(self) # 判断是否有组织架构,有则清空 logger.info('test_003_import_export passed')
def test_IPfilter(self): u'''IP地址过滤tcp80 控制组织架构成员,生效时间内无法访问http网页''' organization_group.import_empty_template(self) # 判断组织架构是否有其他组 有则清空 organization_group.add_user(self) #将自身IP增加到组织架构中 login.loginWeb(self) # admin账号登录 self.driver.implicitly_wait(10) timePlan = timePlanPage(self.driver, self.url) # 创建时间计划 为当天 timePlan.click_sysObj() time.sleep(0.5) timePlan.click_timePlan() time.sleep(1) # 操作删除 以访已有规则 timePlan.click_selall() time.sleep(0.2) timePlan.click_delall() time.sleep(1) try: self.driver.implicitly_wait(2) timePlan.find_ok() except NoSuchElementException: try: timePlan.find_tipsshowin() time.sleep(1) except NoSuchElementException: pass else: time.sleep(1) print('时间计划列表已删除') timePlan.click_add() time.sleep(1) timePlan.input_TimeRangeName('TimePlan') timePlan.click_save() time.sleep(1) # 断言 开启提示信息是否有误 list_name = str(timePlan.getText_byXpath(timePlan.listName)) time.sleep(1) self.assertEqual(list_name, 'TimePlan', msg='时间段名 与配置的不一致') print('时间计划已添加') #配置防火墙 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('IPfilter') firewall.click_sourceIP() time.sleep(1) firewall.click_usergroup() time.sleep(1) # 组织架构,这里选择的是ROOT 所有 firewall.click_Root() firewall.click_saveW1() time.sleep(1) seltime = firewall.selelement_byName('timeGrpName') time.sleep(1) Select(seltime).select_by_value('TimePlan') # #默认就是IP过滤、TCP 可省略 # FilterTypessel = self.driver.find_element_by_name('FilterTypes') # time.sleep(1) # Select(FilterTypessel).select_by_value('1') #IP过滤 # Protocol = self.driver.find_element_by_name('Protocol') # time.sleep(1) # Select(Protocol).select_by_value('2') #TCP selservice = firewall.selelement_byName('cyfw') time.sleep(1) Select(selservice).select_by_value('80') #80(web) firewall.click_save() time.sleep(1) firewall.click_checkTraffic() time.sleep(2) print('访问控制策略 已添加') #断言 list_dstport = str(firewall.getText_byXpath(firewall.list_dstport)) self.assertEqual(list_dstport, '80-80', msg='策略目的端口不为"80-80"') checkTrafficS = firewall.getAttribute_byId( firewall.checkTrafficS, 'checktype') #checktype 0未开启,1开启 self.assertEqual(checkTrafficS, '1', msg='访问控制 未开启') self.driver.quit() #访问官网,使用打不开网页的 title做断言 time.sleep(8) self.driver = webdriver.Chrome() # self.driver.maximize_window() self.driver.implicitly_wait(10) self.driver.get('http://' + httpWebUrl + '/') title = str(self.driver.title) # print(title) self.assertEqual(title, httpWebUrl, msg='TCP80 禁止失败') self.driver.quit() logger.info('test_IPfilter 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_IPMACBinding(self): u'''仅IP/MAC绑定用户 上网''' organization_group.import_empty_template(self) # 判断是否有组织架构,有则清空 # 获取本机ip 默认有线地址,有线断开会显示无线 pcaddr = socket.gethostbyname(socket.getfqdn(socket.gethostname())) #先创建用户组 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.click_addBtnNewTree1() time.sleep(1) group.input_groupName('bangdingTest') group.click_save() time.sleep(2) group.click_userGroup() time.sleep(1) list_groupName1 = str(group.getText_byID(group.list_groupName1)) self.assertEqual(list_groupName1, 'bangdingTest', msg='新增组出错') print('组织架构 - 新增组完成') group.click_addUser() time.sleep(1) group.input_UserName('bangdingTest') group.click_IPMACb() time.sleep(1) group.input_normalIPMac_IP(pcaddr) group.input_normalIPMac_Mac(PcMac) group.click_save() time.sleep(2) group.click_list_groupName_c() time.sleep(1) listAddIP = group.getText_byXpath(group.listAddIP) self.assertEqual(listAddIP, pcaddr, msg='新增 用户IP出错') listAddMAC = group.getText_byXpath(group.listAddMAC) self.assertEqual(listAddMAC, PcMac, msg='新增 用户MAC出错') print('组织架构 - 新增用户完成') # 判断联网 ,不能上网则报错 p = pingTestIP('223.5.5.5') if p == 'N': raise Exception('connect failed.') #开启"仅IP/MAC绑定用户能上网" group.click_globalconfig() time.sleep(1) group.click_IPMACb_E() time.sleep(0.5) group.click_saveAllSetting() time.sleep(1) # 断言 开启提示信息是否有误 tips = str(group.getText_byClass(group.tips)) time.sleep(1) self.assertEqual(tips, savesucess, msg='"仅IP/MAC绑定用户能上网" 开启出错') print('"仅IP/MAC绑定用户能上网" 开启') # 判断联网 ,不能上网则报错 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地址已自动获取成功', 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') # 判断联网 ,测试该项改完mac之后前几个包有可能可以ping通,为避免判断失误,加一个缓冲 pingTestIP('www.baidu.com') #避免失误 pingTestIP('www.163.com') #避免失误 #判断联网 ,非绑定用户应该不能上网 time.sleep(3) p = pingTestIP('114.114.114.114') if p == 'Y': raise Exception('非绑定用户依旧可以上网') 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('未获取到地址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') # 判断联网 ,不能上网则报错 pingTestIP('www.baidu.com') #避免失误 p = pingTestIP('www.baidu.com') if p == 'N': raise Exception('connect failed.') logger.info('test_001_IPMACBinding passed')