2095 lines
123 KiB
Plaintext
2095 lines
123 KiB
Plaintext
*** Settings ***
|
||
Library Selenium2Library
|
||
Resource ElementPath.robot
|
||
Resource ../RE0_Common/KeyWord.robot
|
||
Library SSHLibrary
|
||
Library ../../Script/SC0_Common/00_Initial/Vsphere.py
|
||
Library String
|
||
Library BuiltIn
|
||
Resource ../RE7_Storage/KeyWord.robot
|
||
Resource ../RE3_DPM/File_KeyWord.robot
|
||
Library DatabaseLibrary
|
||
Resource ../RE7_Storage/KeyWord.robot
|
||
|
||
*** Variables ***
|
||
|
||
*** Keywords ***
|
||
关闭防火墙
|
||
[Arguments] ${BC_IP} ${BC_ROOT} ${BC_PWD} # 黑方IP|黑方后台登录名|黑方后台登录密码
|
||
Open Connection ${BC_IP}
|
||
SSHLibrary.Login ${BC_ROOT} ${BC_PWD}
|
||
Log 登录黑方后台成功
|
||
Execute Command service iptables stop
|
||
Log 黑方防火墙关闭
|
||
Close Connection
|
||
|
||
设置密码永久有效
|
||
[Arguments] ${bc_ip} # 黑方ip地址
|
||
change_expiretime ${bc_ip}
|
||
|
||
编辑信息
|
||
[Arguments] ${UserEmail} ${UserTel} # 用户邮箱|用户电话号码
|
||
[Documentation] 功能:点击用户信息,编辑用户邮箱和手机号码
|
||
...
|
||
... 使用方法:编辑信息 \ 用户邮箱 \ 用户电话号码
|
||
...
|
||
... 变量:${UserEmail} \ ${UserTel}
|
||
元素点击 ${A_UserName} 点击用户信息按钮 定位用户信息按钮失败
|
||
元素点击 ${User_Info} 点击个人信息 定位个人信息按钮失败
|
||
元素输入 ${UserDetailModel_UserEmail} ${UserEmail} 定位用户邮件输入框失败
|
||
元素输入 ${UserDetailModel_UserTel} ${UserTel} 定位用户电话输入框失败
|
||
元素点击 ${UserDetailModel_ConFirm} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${UserDetailModel_ConFirm_OK} 点击信息修改成功确定按钮 定位信息修改成功确定按钮失败
|
||
|
||
登录验证(正确)
|
||
[Arguments] ${name} ${password}
|
||
Sleep 5s
|
||
元素输入 ${Input_UserName} ${name} 定位用户名输入框失败
|
||
元素输入 ${Input_UserPWD} ${password} 定位用户密码输入框失败
|
||
元素点击 ${Button_Login} 点击登录按钮 定位登录按钮失败
|
||
log 校验登录用户
|
||
sleep 10s
|
||
Wait Until Page Contains Element ${A_UserName} 10s
|
||
Wait Until Element Is Visible ${A_UserName}
|
||
${cur_loginuser_name_org}= Get Text ${A_UserName}
|
||
${cur_loginuser_name}= Strip String ${cur_loginuser_name_org}
|
||
Should Be Equal ${cur_loginuser_name} ${name}
|
||
log login success
|
||
|
||
修改密码(正确)
|
||
[Arguments] ${oldpsd} ${newpsd}
|
||
元素点击 ${A_UserName} 点击用户信息按钮 定位用户信息按钮失败
|
||
元素点击 ${NG_ChangePWD_ABS} 进入修改密码页面 定位修改密码按钮失败
|
||
Wait Until Page Contains Element ${Title_SetPWD}
|
||
元素输入 ${Input_old_pwd} ${oldpsd} 定位旧密码输入框失败
|
||
元素输入 ${Input_new_pwd} ${newpsd} 定位新密码输入框失败
|
||
元素输入 ${Input_verify_pwd} ${newpsd} 定位确认密码输入框失败
|
||
元素点击 ${Change_success_confirm} 点击修改密码确定按钮 定位修改密码确定按钮失败
|
||
log 等待跳转
|
||
Wait Until Page Contains Element ${Tipstop_Text} 10s
|
||
log 校验正确信息
|
||
sleep 3s
|
||
${info} Get Text ${Tipstop_Text}
|
||
should contain ${info} 密码修改成功
|
||
Wait Until Page Contains Element ${Button_PrimaryOK_ChangePWD} 20s
|
||
Wait Until Element Is Visible ${Button_PrimaryOK_ChangePWD} 10s
|
||
Wait Until Element Is Enabled ${Button_PrimaryOK_ChangePWD} 20s
|
||
元素点击 ${Button_PrimaryOK_ChangePWD} 点击修改密码成功确定按钮 定位修改密码成功确定按钮失败
|
||
|
||
退出登录
|
||
元素点击 ${A_UserName} 点击用户信息按钮 定位用户信息按钮失败
|
||
元素点击 ${Bc_Logout} 点击退出登录按钮 定位退出登录按钮失败
|
||
Log 退出成功!
|
||
sleep 2s
|
||
|
||
修改密码(错误)
|
||
[Arguments] ${oldpsd} ${newpsd} ${errorinfo} ${pwd}
|
||
元素点击 ${A_UserName} 点击用户信息按钮 定位用户信息按钮失败
|
||
元素点击 ${NG_ChangePWD_ABS} 点击修改密码按钮 定位修改密码按钮失败
|
||
Wait Until Page Contains Element ${Title_SetPWD}
|
||
元素输入 ${Input_old_pwd} ${oldpsd} 定位旧密码输入框失败
|
||
元素输入 ${Input_new_pwd} ${newpsd} 定位新密码输入框失败
|
||
元素输入 ${Input_verify_pwd} ${newpsd} 定位确认密码输入框失败
|
||
Click Element ${Input_new_pwd}
|
||
log 校验错误信息
|
||
Wait Until Element Is Visible ${pwd} 30s
|
||
${info} Get Text ${pwd}
|
||
should contain ${info} ${errorinfo}
|
||
sleep 2s
|
||
元素点击 ${Button_Default_ChangePWD} 点击修改密码取消按钮 定位修改密码取消按钮失败
|
||
|
||
验证文字
|
||
[Arguments] ${location} ${textcontent} # 实际大小定位路径|预估大小
|
||
${text}= Get Text ${location}
|
||
Should contain ${text} ${textcontent}
|
||
|
||
登入黑方
|
||
[Arguments] ${WEB_BC_Url}
|
||
Log 登入黑方
|
||
Log Open Firefox
|
||
Open Browser ${WEB_BC_Url} ${browser}
|
||
Log Open Firefox successfully!
|
||
sleep 3s
|
||
|
||
校验信息
|
||
[Arguments] ${userName_info} ${userRole_info} ${userEmail_info} ${userTel_info} # 用户名称|用户角色|邮箱地址|手机地址
|
||
[Documentation] 功能:点击用户信息,查看用户姓名,角色,邮箱,手机
|
||
...
|
||
... 使用方法:校验信息 \ 用户名信息 \ 角色信息 \ 邮箱信息 \ 用户手机信息
|
||
...
|
||
... 变量:${userName_info} \ \ ${userRole_info} \ ${userEmail_info} \ ${userTel_info}
|
||
元素点击 ${A_UserName} 点击用户信息按钮 定位用户信息按钮失败
|
||
元素点击 ${User_Info} 点击个人信息 定位个人信息按钮失败
|
||
sleep 2s
|
||
${username}= Execute Javascript return $("#showUserDetailModel #userName").val()
|
||
log ${userName_info}
|
||
Run Keyword IF "${username}"=="${userName_info}" log 用户名称信息验证正确
|
||
... ELSE Run Keywords log 用户名称信息验证错误
|
||
... AND fail
|
||
sleep 2s
|
||
${userrole}= Execute Javascript return $("#showUserDetailModel #userRole").val()
|
||
log ${userRole_info}
|
||
Run Keyword IF "${userrole}"=="${userRole_info}" log 用户角色信息验证正确
|
||
... ELSE Run Keywords log 用户角色信息验证错误
|
||
... AND fail
|
||
sleep 2s
|
||
${useremail}= Execute Javascript return $("#showUserDetailModel #userEmail").val()
|
||
log ${userEmail_info}
|
||
Run Keyword IF "${useremail}"=="${userEmail_info}" log 用户邮箱信息验证正确
|
||
... ELSE Run Keywords log 用户邮箱信息验证错误
|
||
... AND fail
|
||
sleep 2s
|
||
${usertel}= Execute Javascript return $("#showUserDetailModel #userTel").val()
|
||
log ${userTel_info}
|
||
Run Keyword IF "${usertel}"=="${userTel_info}" log 用户手机信息验证正确
|
||
... ELSE Run Keywords log 用户手机信息验证错误
|
||
... AND fail
|
||
|
||
登录验证(错误)
|
||
[Arguments] ${name} ${password} ${logintimes}
|
||
log 开始进行无效用户名密码的登录测试
|
||
FOR ${i} IN RANGE ${logintimes}
|
||
LoginOperation ${name} ${password}
|
||
log 等待错误提示信息可见
|
||
元素点击 ${Button_Tipspop_OK} 点击确定按钮 定位确定按钮失败
|
||
END
|
||
|
||
登录验证(超限)
|
||
[Arguments] ${name} ${password}
|
||
元素输入 ${Input_UserName} ${name} 定位用户名输入框失败
|
||
元素输入 ${Input_UserPWD} ${password} 定位用户密码输入框失败
|
||
元素点击 ${Button_Login} 点击登录按钮 定位登录按钮失败
|
||
log 等待提示信息
|
||
Wait Until Page Contains Element ${Button_Tipspop_OK}
|
||
log 校验提示信息内容
|
||
Wait Until Element Is Visible ${Tipspop_Body}
|
||
${info} Get Text ${Tipspop_Body}
|
||
should contain ${info} ${Login_False_Overlogin}
|
||
元素点击 ${Button_Tipspop_OK} 点击提示信息确定按钮 定位提示信息确定按钮失败
|
||
sleep 605s
|
||
|
||
LoginOperation
|
||
[Arguments] ${name} ${password}
|
||
Wait Until Element Is Visible ${Button_Login}
|
||
元素输入 ${Input_UserName} ${name} 定位用户名输入框失败
|
||
元素输入 ${Input_UserPWD} ${password} 定位用户密码输入框失败
|
||
元素点击 ${Button_Login} 点击登录按钮 定位登录按钮失败
|
||
|
||
创建文件备份策略
|
||
[Arguments] ${agent_name} ${bk_target} ${bk_type} ${mds_name} ${encryption_attr} ${compress_attr} ${dedup_attr} ${check_attr}=0
|
||
元素点击 ${Timed_DataProtect} 点击进入定时数据保护页面 定位定时数据保护失败
|
||
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
|
||
${random_strategyName}= Catenate SEPARATOR=_ ${bk_type} ${date}
|
||
${createpolicy} Catenate SEPARATOR= 新建策略[ ${random_strategyName} ]
|
||
Set Suite Variable ${random_strategyName}
|
||
Set Suite Variable ${createpolicy}
|
||
Sleep 5s
|
||
元素点击 xpath=//span[text()="${agent_name}"] 点击选择代理 定位代理所在位置失败
|
||
元素点击 ${Add_Policy} 点击添加策略按钮 定位添加策略按钮失败
|
||
元素点击 ${File_Module} 点击文件组件 定位文件组件失败
|
||
元素输入 ${Set_File_PolicyName} ${random_strategyName} 定位策略名输入框失败
|
||
元素点击 xpath=//span[contains(text(),"${bk_target}")]/../../td[2]/div 勾选需要备份的文件 定位需要备份的文件失败
|
||
元素点击 ${Bk_File_NextStep} 点击下一步进入文件选项 定位下一步按钮失败
|
||
元素点击 ${File_More_NextStep} 点击下一步进入任务周期选项 定位下一步按钮失败
|
||
元素点击 ${Add_taskcycle} 点击添加任务周期 定位添加任务周期按钮失败
|
||
Run Keyword If "${bk_type}"=="完全" File_KeyWord.完全备份
|
||
... ELSE IF "${bk_type}"=="差量" File_KeyWord.差量备份
|
||
... ELSE IF "${bk_type}"=="累积增量_扫描" 累积增量备份_扫描
|
||
... ELSE IF "${bk_type}"=="累积增量_驱动" 累积增量备份_驱动
|
||
... ELSE Fail 定位备份类型失败
|
||
元素点击 ${Cycle_Once} 设置任务仅执行一次 定位仅执行一次失败
|
||
元素点击 ${Cycle_Confirm} 确定任务周期设置完毕 定位任务周期设置失败
|
||
元素点击 ${Cycle_NextStep} 点击下一步进入备份集存储设置界面 定位下一步失败
|
||
元素点击 ${Manual_ChooseMDS} 点击勾选手动选择介质 定位选择介质失败
|
||
元素点击 ${Select_MDS} 点击介质选择按钮 定位介质选择按钮失败
|
||
元素点击 xpath=//option[@label="${mds_name}"] 点击选择指定介质 定位指定介质失败
|
||
元素点击 ${Storage_NextStep} 点击下一步进入到备份高级选项 定位下一步失败
|
||
Run Keyword If ${encryption_attr}==1 加密
|
||
Run Keyword If ${compress_attr}==1 压缩
|
||
... ELSE 取消压缩
|
||
Run Keyword If ${dedup_attr}==1 重删
|
||
Run Keyword If ${check_attr}==1 校验
|
||
sleep 6s
|
||
Comment 元素点击 ${File_Senior_NextStep} 点击下一步进入到备份信息确认栏 定位下一步失败
|
||
循环点击 ${Complete_Policy_Create_No_Info} ${Success_Confirm}
|
||
sleep 6s
|
||
元素点击 ${Success_Confirm} 确定策略创建成功 策略创建失败
|
||
|
||
根据内容查询日志
|
||
[Arguments] ${content}
|
||
log 根据内容查询日志
|
||
元素输入 ${ELE_ContentFilter} ${content} 定位内容输入框失败
|
||
Press Keys ${ELE_ContentFilter} ENTER
|
||
sleep 2s
|
||
|
||
获取指定行数的系统日志的内容
|
||
[Arguments] ${linenum}
|
||
Wait Until Page Contains Element ${ELE_FirstLogContent} 30s
|
||
Wait Until Element Is Visible ${ELE_FirstLogContent} 30s
|
||
${logpos} Run Keyword if ${linenum} == 1 set variable ${ELE_FirstLogContent}
|
||
... ELSE IF ${linenum} == 2 set variable ${ELE_SecondLogContent}
|
||
... ELSE IF ${linenum} == 3 set variable ${ELE_ThirdLogContent}
|
||
... ELSE set variable null
|
||
${logcontent}= Get Text ${logpos}
|
||
Return From Keyword ${logcontent}
|
||
|
||
系统日志内容验证
|
||
[Arguments] ${logsrc} ${logdest}
|
||
Should Contain ${logsrc} ${logdest}
|
||
log 策略日志验证成功
|
||
|
||
编辑文件备份策略
|
||
元素点击 ${Timed_DataProtect} 点击进入定时数据保护页面 定位定时数据保护失败
|
||
${new_strategyName}= Evaluate random.randint(211,996) random
|
||
Log 生成新策略的名称
|
||
Log 将创建策略的日志设置为全局变量
|
||
Sleep 2s
|
||
元素点击 Xpath=//span[text()="${Plantform_BC_Agent}"] 点击主机按钮 定位主机按钮失败
|
||
${filepolicyname} Get Text xpath=//div[@id="policy"]/div[2]/table/tbody/tr[2]/td[3]
|
||
${editpolicy} Catenate SEPARATOR= 修改代理[${Plantform_BC_Agent}]策略[ ${filepolicyname} ]
|
||
Set Global Variable ${editpolicy}
|
||
元素点击 id=dpm_policy_editDialog_${filepolicyname}_btn 点击策略编辑按钮 定位策略编辑失败
|
||
元素输入 ${Edit_file_Name} ${new_strategyName} 策略名输入框定位失败
|
||
元素点击 ${File_Finish_Edit} 点击完成策略编辑 定位完成策略编辑失败
|
||
元素点击 ${Auth_Confirm} 确认编辑策略完成 定位策略编辑确认框失败
|
||
Log 策略编辑完毕
|
||
|
||
删除文件备份策略
|
||
元素点击 ${Timed_DataProtect} 点击进入定时数据保护页面 定位定时数据保护失败
|
||
元素点击 Xpath=//span[text()="${Plantform_BC_Agent}"] 点击主机按钮 定位主机按钮失败
|
||
${filepolicyname} Get Text xpath=//div[@id="policy"]/div[2]/table/tbody/tr[2]/td[3]
|
||
${deletepolicy} Catenate SEPARATOR= 删除策略[ ${filepolicyname} ]
|
||
Set Global Variable ${deletepolicy}
|
||
元素点击 id=dpm_policy_edletePanel_${filepolicyname}_btn 点击策略删除按钮 定位策略编辑失败
|
||
元素点击 ${Del_Policy_Confirm} 点击删除策略弹窗按钮 定位删除策略弹窗失败
|
||
元素点击 ${confirmagain} 点击确定按钮 定位确定按钮失败
|
||
Log 删除策略成功
|
||
|
||
获取当前页面筛选的记录数目
|
||
元素点击 ${ELE_TotalRecords} 获取记录数目 定位获取记录数目失败
|
||
${Text_TotalRecords}= Get Text ${ELE_TotalRecords}
|
||
${tmp}= Strip String ${Text_TotalRecords} characters=共条记录
|
||
${Num_TotalRecords}= Strip String ${tmp}
|
||
Return From Keyword ${Num_TotalRecords}
|
||
Log 数目获取成功
|
||
|
||
获取所有日志记录数
|
||
Log 获取当前数据库中日志
|
||
@{logtabnames}= 获取当前数据库中所有日志表表名
|
||
${totalrecords} Set Variable 0
|
||
FOR ${DB2_TableName1} IN @{logtabnames}
|
||
log ${DB2_TableName1[0]}
|
||
${sql} Set Variable select count(*) from ${DB2_TableName1[0]}
|
||
${records}= 获取指定表的记录数 ${sql}
|
||
${totalrecords}= Evaluate ${totalrecords}+${records}
|
||
END
|
||
Return From Keyword ${totalrecords}
|
||
|
||
日志数量校验
|
||
[Arguments] ${Num_TotalRecords} ${Num_TotalRecords_unary}
|
||
${status}= Evaluate ${Num_TotalRecords}<=${Num_TotalRecords_unary}
|
||
Should Be True ${status}
|
||
log 日志数量校验正确
|
||
sleep 2s
|
||
|
||
获取当前数据库中所有日志表表名
|
||
@{logtbl_names} Get Values From DB select table_name from information_schema.tables where table_schema='unary' and table_name like 'tbl_log%' and table_name != 'tbl_login_log' ${Plantform_BC_IP_Excep}
|
||
Return From Keyword @{logtbl_names}
|
||
|
||
获取指定表的记录数
|
||
[Arguments] ${sql}
|
||
${Num_Records}= Get Single Value From DB ${sql}
|
||
Return From Keyword ${Num_Records}
|
||
|
||
Get Values From DB
|
||
[Arguments] ${sql_statement} ${ip}
|
||
Log ${sql_statement}
|
||
${host}= Get IP From URL ${ip}
|
||
Connect To Database Using Custom Params pymysql host='${host}', port=${BCPort}, user='${BCUser}', passwd='${BCPwd}', db='${BCDB}'
|
||
@{queryResults} Query ${sql_statement}
|
||
Log Many @{queryResults}
|
||
Return From Keyword @{queryResults}
|
||
Disconnect From Database
|
||
|
||
Get IP From URL
|
||
[Arguments] ${URL}
|
||
${ret_string}= Replace String Using RegExp ${URL} :(\\d)+|[a-zA-Z]|\\:|\\/ ${EMPTY}
|
||
Return From Keyword ${ret_string}
|
||
|
||
Get Single Value From DB
|
||
[Arguments] ${sql_statement} ${ip}
|
||
Log ${sql_statement}
|
||
${host}= Get IP From URL ${ip}
|
||
Connect To Database Using Custom Params pymysql host='${host}', port=${BCPort}, user='${BCUser}', passwd='${BCPwd}', db='${BCDB}',charset="utf8"
|
||
Execute Sql String SET NAMES UTF8
|
||
${queryResult} Query ${sql_statement}
|
||
log ${queryResult[0][0]}
|
||
${result} Set Variable ${queryResult[0][0]}
|
||
Disconnect From Database
|
||
Return From Keyword ${result}
|
||
|
||
系统日志显示当前用户登录成功
|
||
[Arguments] ${loginusername}
|
||
Wait Until Element Is Visible xpath=//td[text()="[${loginusername}]登录成功"] 10s 用户登录成功日志未找到
|
||
|
||
用户登录登出日志检验
|
||
[Arguments] ${loginusername} ${logcontent}
|
||
log 对当前用户的登录日志进行检验
|
||
log 内容登录失败,0;登录成功,1.
|
||
log 检查用户名
|
||
${ret}= If String Contain ${logcontent} ${Text_loginfailed}
|
||
Run Keyword if ${ret} == ${True_WEB} Return From Keyword 0
|
||
${ret}= If String Contain ${logcontent} ${Text_loginsuccess}
|
||
Run Keyword if ${ret} == ${True_WEB} Return From Keyword 1
|
||
${ret}= If String Contain ${logcontent} ${Text_logoutsuccess}
|
||
Run Keyword if ${ret} == ${True_WEB} Return From Keyword 2
|
||
log 不包含“登录成功”“登录失败”
|
||
Return From Keyword -1
|
||
|
||
系统日志显示当前用户登录失败
|
||
[Arguments] ${loginusername} ${logcontent}
|
||
${result}= 用户登录登出日志检验 ${loginusername} ${logcontent}
|
||
Should Be Equal ${result} 0
|
||
|
||
系统日志显示当前用户登出成功
|
||
[Arguments] ${loginusername}
|
||
Wait Until Element Is Visible xpath=//td[text()="[${loginusername}]登出成功"] 10s 用户登出失败日志未找到
|
||
|
||
登录验证(验证)
|
||
[Arguments] ${name} ${password}
|
||
Wait Until Element Is Visible ${Input_UserName}
|
||
log 输入登录用户名
|
||
Set Focus To Element ${Input_UserName}
|
||
input text ${Input_UserName} ${name}
|
||
Wait Until Element Is Visible ${Input_UserPWD}
|
||
log 输入登录密码
|
||
Set Focus To Element ${Input_UserPWD}
|
||
input text ${Input_UserPWD} ${password}
|
||
log 点击登录
|
||
Wait Until Element Is Visible ${Button_Login}
|
||
Set Focus To Element ${Button_Login}
|
||
click button ${Button_Login}
|
||
log 等待错误提示信息可见
|
||
Sleep 2s
|
||
Wait Until Element Is Visible ${Button_Tipspop_OK} 10s 定位错误弹窗失败
|
||
|
||
If String Contain
|
||
[Arguments] ${parentString} ${subString}
|
||
log 判断父串${parentString}是否包含子串${subString}
|
||
${find}= Evaluate '${parentString}'.find('${subString}')
|
||
${result} Run Keyword if ${find} < 0 set variable ${False_WEB}
|
||
... ELSE set variable ${True_WEB}
|
||
Return From Keyword ${result}
|
||
|
||
选择系统日志级别
|
||
[Arguments] ${infolevel}
|
||
log 选择系统日志级别
|
||
Select From List By Label xpath=//*[@id="level_select"] ${infolevel}
|
||
|
||
根据日志级别获取所有日志记录数
|
||
[Arguments] ${loglevel}
|
||
@{logtabnames}= 获取当前数据库中所有日志表表名
|
||
${totalrecords} Set Variable 0
|
||
${level} Run Keyword If '${loglevel}' == '信息' Set Variable 1
|
||
... ELSE IF '${loglevel}' == '警告' Set Variable 2
|
||
... ELSE IF '${loglevel}' == '错误' Set Variable 3
|
||
... ELSE Set Variable 0
|
||
FOR ${tablename} IN @{logtabnames}
|
||
log ${tablename[0]}
|
||
${sql} Set Variable SELECT count(*) FROM ${tablename[0]} WHERE level = '${level}'
|
||
${records}= 获取指定表的记录数 ${sql}
|
||
${totalrecords}= Evaluate ${totalrecords}+${records}
|
||
END
|
||
Return From Keyword ${totalrecords}
|
||
|
||
根据用户查询日志
|
||
[Arguments] ${username}
|
||
log 根据用户查询日志
|
||
|
||
根据日志用户获取所有日志记录数
|
||
[Arguments] ${username}
|
||
@{logtabnames}= 获取当前数据库中所有日志表表名
|
||
${totalrecords} Set Variable 0
|
||
FOR ${tablename} IN @{logtabnames}
|
||
log ${tablename[0]}
|
||
${sql} Set Variable SELECT count(*) FROM ${tablename[0]} WHERE user = '${username}'
|
||
${records}= 获取指定表的记录数 ${sql}
|
||
${totalrecords}= Evaluate ${totalrecords}+${records}
|
||
END
|
||
Return From Keyword ${totalrecords}
|
||
|
||
根据IP查询日志
|
||
[Arguments] ${ip}
|
||
log 根据IP查询日志
|
||
元素输入 ${ELE_IPFilter} ${ip} 定位IP输入框失败
|
||
Press Keys ${ELE_IPFilter} ENTER
|
||
|
||
根据日志IP获取所有日志记录数
|
||
[Arguments] ${IP}
|
||
@{logtabnames}= 获取当前数据库中所有日志表表名
|
||
${totalrecords} Set Variable 0
|
||
FOR ${tablename} IN @{logtabnames}
|
||
log ${tablename[0]}
|
||
${sql} Set Variable SELECT count(*) FROM ${tablename[0]} WHERE ip = '${IP}'
|
||
${records}= 获取指定表的记录数 ${sql}
|
||
${totalrecords}= Evaluate ${totalrecords}+${records}
|
||
END
|
||
Return From Keyword ${totalrecords}
|
||
|
||
根据日志内容获取所有日志记录数
|
||
[Arguments] ${content}
|
||
@{logtabnames}= 获取当前数据库中所有日志表表名
|
||
${totalrecords} Set Variable 0
|
||
FOR ${tablename} IN @{logtabnames}
|
||
log ${tablename[0]}
|
||
${sql} Set Variable SELECT count(*) FROM ${tablename[0]} WHERE \ operdesc like \ '%${content}%'
|
||
${records}= 获取指定表的记录数 ${sql}
|
||
${totalrecords}= Evaluate ${totalrecords}+${records}
|
||
END
|
||
Return From Keyword ${totalrecords}
|
||
|
||
添加用户
|
||
[Arguments] ${username} ${email} ${phone}
|
||
元素点击 ${System_Config} 进入系统设置界面 定位系统设置失败
|
||
元素点击 ${Path_Icon_Second_User} 进入到用户管理界面 定位用户管理失败
|
||
循环点击 ${Path_Tab_User} ${Path_Button_AddUserGuide}
|
||
元素点击 ${Path_Button_AddUserGuide} 进入添加用户信息窗口 定位添加用户按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_NewUser} 30s 定位添加用户标题失败
|
||
Sleep 2s
|
||
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
|
||
${random_strategyName}= Catenate SEPARATOR=_ ${username} ${date}
|
||
Set Suite Variable ${random_strategyName}
|
||
元素输入 ${Path_Input_AddUser_UserName} ${random_strategyName} 定位用户名输入框失败
|
||
元素输入 ${Path_Input_AddUser_Email} ${email} 定位用户邮箱输入框失败
|
||
元素输入 ${Path_Input_AddUser_Phone} ${phone} 定位用户手机号输入框失败
|
||
元素点击 ${Confirm_Create_User} 点击确认创建用户 定位确认创建用户按钮失败
|
||
Log 新用户信息添加成功
|
||
${pwd_info}= Get text ${Random_Pwd_Info}
|
||
${info_list} BuiltIn.Evaluate re.split(':','${pwd_info}') re
|
||
${info_list} BuiltIn.Evaluate re.split(':','${pwd_info}') re
|
||
${random_pwd} BuiltIn.Evaluate '${info_list}[1]'.replace(' ','')
|
||
BuiltIn.Set Suite Variable ${random_pwd}
|
||
元素点击 ${Random_Pwd_confirm} 点击确认随机密码 定位随机密码确认按钮失败
|
||
|
||
首次登陆强制修改密码
|
||
[Arguments] ${emailAddress} ${Oldpwd} ${Newpwd}
|
||
log 用户首次登陆,强制修改密码
|
||
Wait Until Page Contains Element Xpath=//*[@id="changePwdModal"] 20s
|
||
元素输入 Xpath=//*[@id="emailAddress"] ${emailAddress} 定位绑定邮箱输入框失败
|
||
元素输入 ${Input_old_pwd} ${Oldpwd} 定位当前密码输入框失败
|
||
元素输入 ${Input_new_pwd} ${Newpwd} 定位新密码输入框失败
|
||
元素输入 ${Input_verify_pwd} ${Newpwd} 定位确认新密码输入框失败
|
||
元素点击 ${Change_success_confirm} 点击修改确认按钮 定位修改确认按钮失败
|
||
元素点击 ${Button_PrimaryOK_ChangePWD} 点击修改成功确定按钮 定位修改成功确定按钮失败
|
||
|
||
删除用户
|
||
[Arguments] ${username}
|
||
元素点击 ${System_Config} 进入系统设置界面 定位系统设置失败
|
||
元素点击 ${Path_Icon_Second_User} 进入到用户管理界面 定位用户管理失败
|
||
循环点击 ${Path_Tab_User} xpath=//tbody/tr/td[text()='${username}']/parent::*/td/div/span/span[text()='删除']
|
||
${path_del_user} set variable xpath=//tbody/tr/td[text()='${username}']/parent::*/td/div/span/span[text()='删除']
|
||
元素点击 ${path_del_user} 点击删除按钮 定位删除按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_DelUser}
|
||
Wait Until Element Is Visible ${Path_Title_DelUser}
|
||
元素点击 ${Path_Button_DelUser} 删除用户成功 定位删除按钮失败
|
||
|
||
代理日志校验
|
||
[Arguments] ${username} # 用户名
|
||
元素输入 ${ELE_UserFilter} ${username} 定位用户输入框失败
|
||
Press Keys ${ELE_UserFilter} ENTER
|
||
Sleep 2s
|
||
Wait Until Element Is Visible xpath=//td[text()="sys_admin"]/..//td[contains(text(),"集成代理启动")] 10s 定位集成代理启动成功日志失败
|
||
Wait Until Element Is Visible xpath=//td[text()="sys_admin"]/..//td[contains(text(),"集成代理停止")] 10s 定位集成代理启动成功日志失败
|
||
|
||
获取数据库中最近一条记录的内容
|
||
${sql} Set Variable SELECT operdesc FROM tbl_log order by tm desc limit 0,1
|
||
${Records}= Get Single Value From DB ${sql} ${Plantform_BC_IP_Excep}
|
||
Return From Keyword ${Records}
|
||
|
||
获取页面上最早的一条日志的内容
|
||
元素点击 ${ELE_FirstPage} 点击跳转第一页按钮 定位跳转第一页按钮失败
|
||
Sleep 5s
|
||
${first_old}= 获取指定行数的系统日志的内容 1
|
||
Log 获取当前页面上第一行的日志
|
||
FOR ${n} IN RANGE 10
|
||
元素点击 ${ELE_Title_Time} 点击日志标题时间按钮 定位日志标题时间按钮失败
|
||
${first_now}= 获取指定行数的系统日志的内容 1
|
||
BuiltIn.Run Keyword If "${first_now}"=="${first_old}" Log ${n}次点击无效
|
||
... ELSE BuiltIn.Exit For Loop
|
||
END
|
||
sleep 5s
|
||
${logcontent}= 获取指定行数的系统日志的内容 1
|
||
Return From Keyword ${logcontent}
|
||
|
||
获取数据库中最早的一条日志的内容
|
||
@{logtabnames}= 获取当前数据库中所有日志表表名
|
||
${totalrecords} Set Variable 0
|
||
${sqltotal} set variable (SELECT * FROM tbl_log ORDER BY tm asc limit 0,1)
|
||
FOR ${tablename} IN @{logtabnames}
|
||
log ${tablename[0]}
|
||
${sqltmp} Set Variable (SELECT * FROM ${tablename[0]} ORDER BY tm asc limit 0,1)
|
||
${sqltotal} set variable ${sqltmp} UNION ${sqltotal}
|
||
END
|
||
log ${sqltotal}
|
||
${sql} set variable select operdesc from (${sqltotal}) as logs order by tm asc limit 0,1
|
||
log ${sql}
|
||
${logcontent}= Get Single Value From DB ${sql} ${Plantform_BC_IP_Excep}
|
||
Return From Keyword ${logcontent}
|
||
Log 获取数据库日志内容完毕
|
||
|
||
系统管理员界面校验
|
||
元素点击 ${Path_Icon_DataReport} 进入工作面板页面 定位工作面板失败
|
||
元素点击 ${Path_Icon_CDM} 进入副本数据管理页面 定位副本数据管理失败
|
||
元素点击 ${Path_Icon_DPM} 进入定时数据保护页面 定位定时数据保护失败
|
||
元素点击 ${Path_Icon_CDP} 进入持续数据保护页面 定位持续数据保护失败
|
||
元素点击 ${Path_Icon_DR} 进入应用容灾页面 定位应用容灾失败
|
||
元素点击 ${Path_Icon_Sync} 进入异地灾备页面 定位异地灾备失败
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理失败
|
||
元素点击 ${Media_Server} 展开内置介质服务器页面 定位内置介质服务器失败
|
||
元素点击 ${Path_Icon_Report} 进入报表管理页面 定位报表管理失败
|
||
元素点击 ${System_Config} 进入系统设置页面 定位系统设置失败
|
||
元素点击 ${Path_Icon_AboutHelp} 进入信息和帮助页面 定位信息和帮助页面失败
|
||
|
||
安全管理员界面校验
|
||
元素点击 ${Path_Icon_Second_SysLog} 进入日志信息页面 定位日志信息失败
|
||
|
||
审计管理员界面校验
|
||
元素点击 ${Path_Icon_Second_User} 进入用户管理页面 定位用户管理失败
|
||
元素点击 ${Path_Tab_Role} 进入角色页面 定位角色失败
|
||
元素点击 ${Path_Tab_User} 进入用户页面 定位用户失败
|
||
|
||
副本数据管理页面校验
|
||
元素点击 ${Path_Icon_CDM} 进入副本数据管理页面 定位副本数据管理失败
|
||
元素点击 ${Path_Icon_Second_DpmAgent} 进入定时保护策略页面 定位定时保护策略失败
|
||
元素点击 ${Path_Icon_Second_Task} 进入作业页面 定位作业失败
|
||
元素点击 ${Path_Icon_Second_CdmData} 进入副本数据页面 定位副本数据失败
|
||
|
||
存储管理页面校验
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理失败
|
||
元素点击 ${Media_Manage} 进入介质管理页面 定位介质管理失败
|
||
元素点击 ${dedupManage} 进入重删库管理页面 定位重删库管理失败
|
||
元素点击 ${Cloud_Manage} 进入云存储资源管理页面 定位云存储资源管理页面失败
|
||
元素点击 ${Node_Manage} 展开介质节点管理页面 定位介质节点管理页面失败
|
||
sleep 10s
|
||
|
||
系统设置页面检验
|
||
元素点击 ${System_Config} 进入系统设置页面 定位系统设置失败
|
||
元素点击 ${Path_Icon_Second_User} 进入用户管理页面 定位用户管理页面失败
|
||
元素点击 ${Path_Icon_Second_Auth} 进入产品授权管理页面 定位产品授权管理失败
|
||
|
||
用户管理页面检验
|
||
[Arguments] ${Username}
|
||
元素点击 ${Path_Icon_Second_User} 进入用户管理页面 定位用户管理页面失败
|
||
元素点击 ${Path_Tab_Role} 进入角色页面 定位角色失败
|
||
元素点击 ${Path_Tab_User} 进入用户页面 定位用户失败
|
||
元素点击 ${Path_Button_AddUserGuide} 点击添加用户按钮 定位添加用户按钮失败
|
||
Log 检验用户信息输入框
|
||
Wait Until Element Is Visible ${Path_Input_AddUser_UserName}
|
||
Wait Until Element Is Visible ${Path_Input_AddUser_Email}
|
||
Wait Until Element Is Visible ${Path_Input_AddUser_Phone}
|
||
元素点击 ${Path_Button_CreateUser_Close} 点击关闭按钮 定位关闭按钮失败
|
||
${Path_Edit_User} set variable xpath=.//tr[td='${Username}']//span[text()='编辑']
|
||
元素点击 ${Path_Edit_User} 点击编辑按钮 定位编辑按钮失败
|
||
Log 检验用户信息输入框
|
||
Wait Until Element Is Visible ${Path_Input_EditUser_Email}
|
||
Wait Until Element Is Visible ${Path_Input_EditUser_Phone}
|
||
元素点击 ${Path_Button_UpdateUser_Close} 点击关闭按钮 定位关闭按钮失败
|
||
${Path_Del_User} set variable xpath=//tbody/tr/td[text()='${Username}']/parent::*/td/div/span/span[text()='删除']
|
||
元素点击 ${Path_Del_User} 点击删除按钮 定位删除按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_DelUser}
|
||
元素点击 ${Path_Button_DelUser_Close} 点击关闭按钮 定位关闭按钮失败
|
||
|
||
用户授权检验
|
||
[Arguments] ${Username}
|
||
元素点击 ${Path_Icon_Second_User} 进入用户管理页面 定位用户管理页面失败
|
||
元素点击 ${Path_Tab_User} 进入用户页面 定位用户失败
|
||
${Path_Auth_User} set variable xpath=.//tr[td='${Username}']//span[text()='分配权限']
|
||
元素点击 ${Path_Auth_User} 点击授权按钮 定位授权按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_UserAuth}
|
||
Wait Until Element Is Visible ${Path_Title_UserAuth}
|
||
元素点击 ${Path_Button_CloseUserAuth} 点击关闭按钮 定位关闭按钮失败
|
||
|
||
系统日志页面检验
|
||
元素点击 ${Path_Icon_Second_SysLog} 进入系统日志信息页面 定位日志信息失败
|
||
Log 检验导出按钮
|
||
Wait Until Page Contains Element ${Path_Button_OutLog} 30s
|
||
Wait Until Element Is Visible ${Path_Button_OutLog} 30s
|
||
|
||
编辑用户
|
||
[Arguments] ${Username} ${Email} ${Phone}
|
||
${Path_Edit_User} set variable xpath=.//tr[td='${Username}']//span[text()='编辑']
|
||
元素点击 ${Path_Edit_User} 点击编辑按钮 定位编辑按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_EditUser} 30s
|
||
元素输入 ${Path_Input_EditUser_Email} ${Email} 定位邮箱输入框失败
|
||
元素输入 ${Path_Input_EditUser_Phone} ${Phone} 定位电话号码输入框失败
|
||
元素点击 ${Path_Button_UpdateUser} 点击保存按钮 定位保存按钮失败
|
||
|
||
添加角色
|
||
[Arguments] ${Rolename} @{Roleauth}
|
||
元素点击 ${Path_Icon_Second_User} 进入用户管理页面 定位用户管理页面失败
|
||
元素点击 ${Path_Button_AddRoleGuide} 点击添加角色按钮 定位添加角色按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_AddNewRole} 10s
|
||
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
|
||
${random_role}= Catenate SEPARATOR=_ ${Rolename} ${date}
|
||
Set Suite Variable ${random_role}
|
||
元素输入 ${Path_Input_RoleName} ${random_role} 定位角色名输入框失败
|
||
元素点击 ${Auth_Dpm} 点击勾选权限 定位权限失败
|
||
元素点击 ${Auth_Confirm} 确认连带权限勾选 定位连带权限失败
|
||
元素点击 ${Path_Button_CreateRole} 点击添加按钮 定位添加按钮失败
|
||
|
||
Get Auth Create Path
|
||
[Arguments] ${RoleName}
|
||
${RoleIndex}= Run Keyword If '${RoleName}' == '定时保护' Set variable 4
|
||
... ELSE IF '${RoleName}' == '保护策略' Set Variable 7
|
||
... ELSE IF '${RoleName}' == '作业管理' Set Variable 5
|
||
... ELSE IF '${RoleName}' == '备份集管理' Set Variable 3
|
||
... ELSE IF '${RoleName}' == '异地灾备' Set Variable 8
|
||
... ELSE IF '${RoleName}' == '存储管理' Set Variable 11
|
||
... ELSE IF '${RoleName}' == '产品授权管理' Set Variable 6
|
||
... ELSE IF '${RoleName}' == '用户管理' Set Variable 14
|
||
... ELSE IF '${RoleName}' == '系统设置' Set Variable 12
|
||
... ELSE IF '${RoleName}' == '系统日志审计' Set Variable 13
|
||
... ELSE Set Variable 0
|
||
${pathpre} Set Variable XPath=.//*[@id='newRole']//div[@class="containerTableStyle"]/table/tbody/tr[
|
||
${pathsuf} Set Variable ]/td[2]/table/tbody/tr/td[2]/div
|
||
${EditPath}= Catenate SEPARATOR= ${pathpre} ${RoleIndex} ${pathsuf}
|
||
Return From Keyword ${EditPath}
|
||
|
||
修改用户角色
|
||
[Arguments] ${Username} ${Rolename}
|
||
元素点击 ${Path_Icon_Second_User} 进入用户管理页面 定位用户管理页面失败
|
||
元素点击 ${Path_Tab_User} 进入用户页面 定位用户失败
|
||
${Path_Auth_User} set variable xpath=.//tr[td='${Username}']//span[text()='分配权限']
|
||
元素点击 ${Path_Auth_User} 点击授权按钮 定位授权按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_UserAuth}
|
||
Wait Until Element Is Visible ${Path_Title_UserAuth}
|
||
Wait Until Page Contains Element ${Path_Select_Role} 30s
|
||
Wait Until Element Is Visible ${Path_Select_Role} 30s
|
||
Sleep 1s
|
||
Select From List By Label ${Path_Select_Role} ${Rolename}
|
||
${CheckStatus}= Get CheckBox AllHost Status
|
||
Run Keyword If '${CheckStatus}' == 'check' log all host is checked
|
||
... ELSE IF '${CheckStatus}' == 'uncheck' Click Element ${Attr_AuthUser_AllHost}
|
||
... ELSE IF '${CheckStatus}' == 'checkgray' Click Element ${Attr_AuthUser_AllHost}
|
||
... ELSE IF '${CheckStatus}' == 'unknown' Log error status
|
||
元素点击 ${Path_Button_SaveUserAuth} 点击保存按钮 定位保存按钮失败
|
||
|
||
Get CheckBox AllHost Status
|
||
log 获取授权页面中复选框所有主机的选中状态
|
||
${attr}= Get Element Attribute ${Attr_AuthUser_AllHost} style
|
||
${ret}= If String Contain ${attr} ${GIF_CheckAll}
|
||
Run Keyword if ${ret} == ${True_WEB} Return From Keyword check
|
||
${ret}= If String Contain ${attr} ${GIF_UnCheckAll}
|
||
Run Keyword if ${ret} == ${True_WEB} Return From Keyword uncheck
|
||
${ret}= If String Contain ${attr} ${GIF_CheckGray}
|
||
Run Keyword if ${ret} == ${True_WEB} Return From Keyword checkgray
|
||
Return From Keyword unknown
|
||
|
||
编辑角色
|
||
[Arguments] ${Rolename} @{Roleauth}
|
||
元素点击 ${Path_Icon_Second_User} 进入用户管理页面 定位用户管理页面失败
|
||
元素点击 ${Path_Tab_Role} 进入角色页面 定位角色失败
|
||
${Path_Edit_Role} set variable XPath=.//tr[td='${Rolename}']/td[3]/div/span[1]
|
||
元素点击 ${Path_Edit_Role} 点击编辑按钮 定位编辑按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_EditRole} 10s
|
||
元素输入 ${Path_Input_EditRole_RoleName} ${Rolename} 定位角色名输入框失败
|
||
FOR ${TmpAuth} IN @{Roleauth}
|
||
${Path_Auth} Get Auth Edit Path ${TmpAuth}
|
||
Log ${Path_Auth}
|
||
Click Element ${Path_Auth}
|
||
END
|
||
元素点击 ${Path_Button_UpdateRole} 点击保存按钮 定位保存按钮失败
|
||
|
||
Get Auth Edit Path
|
||
[Arguments] ${RoleName}
|
||
${RoleIndex}= Run Keyword If '${RoleName}' == '主机管理' Set variable 4
|
||
... ELSE IF '${RoleName}' == '保护策略' Set Variable 7
|
||
... ELSE IF '${RoleName}' == '作业管理' Set Variable 5
|
||
... ELSE IF '${RoleName}' == '备份集管理' Set Variable 3
|
||
... ELSE IF '${RoleName}' == '异地灾备' Set Variable 8
|
||
... ELSE IF '${RoleName}' == '存储管理' Set Variable 11
|
||
... ELSE IF '${RoleName}' == '产品授权管理' Set Variable 6
|
||
... ELSE IF '${RoleName}' == '用户管理' Set Variable 14
|
||
... ELSE IF '${RoleName}' == '系统设置' Set Variable 12
|
||
... ELSE IF '${RoleName}' == '系统日志审计' Set Variable 13
|
||
... ELSE Set Variable 0
|
||
${pathpre} Set Variable XPath=//*[@id="edtRole"]/div/div/div[2]/div[2]/dhx-tree/div/table/tbody/tr[
|
||
${pathsuf} Set Variable ]/td[2]/table/tbody/tr/td[2]/div[@class='dhx_bg_img_fix']
|
||
${EditPath}= Catenate SEPARATOR= ${pathpre} ${RoleIndex} ${pathsuf}
|
||
Return From Keyword ${EditPath}
|
||
|
||
删除角色
|
||
[Arguments] ${Rolename} ${Result}
|
||
元素点击 ${Path_Icon_Second_User} 进入用户管理页面 定位用户管理页面失败
|
||
元素点击 ${Path_Tab_Role} 进入角色页面 定位角色失败
|
||
${Path_Del_Role} set variable xpath=.//tr[td='${Rolename}']/td[3]/div/span[2]
|
||
元素点击 ${Path_Del_Role} 点击删除按钮 定位删除按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_DelRole} 10s
|
||
Wait Until Element Is Visible ${Path_Title_DelRole} 10s
|
||
元素点击 ${Path_Button_DelRole} 点击删除按钮 定位删除按钮失败
|
||
Run Keyword If '${Result}' == '成功' Log 删除角色${Rolename}成功
|
||
... ELSE IF '${Result}' == '失败' Click Alert Window ${Res_Text_RoleDeleted}
|
||
|
||
重置密码(错误)
|
||
[Arguments] ${UserName} ${Sec_Name} ${Sec_Pwd}
|
||
元素点击 ${System_Config} 进入系统设置界面 定位系统设置失败
|
||
元素点击 ${Path_Icon_Second_User} 进入到用户管理界面 定位用户管理失败
|
||
循环点击 ${Path_Tab_User} ${Path_Button_AddUserGuide}
|
||
元素点击 Xpath=.//tr[td='${UserName}']//span[text()='重置密码'] 点击重置密码按钮 定位重置密码按钮失败
|
||
元素输入 ${Check_Sec_Name} ${Sec_Name} 定位输入sec账户名失败
|
||
元素输入 ${Check_Sec_Pwd} ${Sec_Pwd} 定位密码输入框失败
|
||
元素点击 ${Update_User_Pwd} 点击确定更新密码 定位确定更新密码的按钮失败
|
||
Wait Until Element Is Visible ${Check_Sec_Fail} 10s 校验密码输入错误消息失败
|
||
元素点击 ${Button_Check_Fail} 确认sec账号密码错误 定位账号密码输入错误提示按钮失败
|
||
元素点击 ${Res_Button_Close} 点击关闭按钮 定位关闭按钮失败
|
||
|
||
重置密码(正确)
|
||
[Arguments] ${UserName} ${Sec_Name} ${Sec_Pwd}
|
||
元素点击 ${System_Config} 进入系统设置界面 定位系统设置失败
|
||
元素点击 ${Path_Icon_Second_User} 进入到用户管理界面 定位用户管理失败
|
||
循环点击 ${Path_Tab_User} ${Path_Button_AddUserGuide}
|
||
元素点击 Xpath=.//tr[td='${UserName}']//span[text()='重置密码'] 点击重置密码按钮 定位重置密码按钮失败
|
||
元素输入 ${Check_Sec_Name} ${Sec_Name} 定位输入sec账户名失败
|
||
元素输入 ${Check_Sec_Pwd} ${Sec_Pwd} 定位密码输入框失败
|
||
元素点击 ${Update_User_Pwd} 点击确定更新密码 定位确定更新密码的按钮失败
|
||
${pwd_info}= Get text ${Update_Random_Pwd_Info}
|
||
${info_list} BuiltIn.Evaluate re.split(':','${pwd_info}') re
|
||
${info_list} BuiltIn.Evaluate re.split(':','${pwd_info}') re
|
||
${new_random_pwd} BuiltIn.Evaluate '${info_list}[1]'.replace(' ','')
|
||
BuiltIn.Set Suite Variable ${new_random_pwd}
|
||
|
||
Click Alert Window
|
||
[Arguments] ${AlertInfo}
|
||
Wait Until Page Contains Element ${Path_AlertInfo} 15s
|
||
Wait Until Element Is Visible ${Path_AlertInfo} 15s
|
||
${CurAlertinfo}= Get Text ${Path_AlertInfo}
|
||
Should Be Equal As Strings ${CurAlertinfo} ${AlertInfo}
|
||
元素点击 ${Path_Button_Alert_OK} 点击确定按钮 定位确定按钮失败
|
||
|
||
修改服务器名称
|
||
[Arguments] ${NewServerName}
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
元素点击 ${Node_More_Operate} 点击展开节点操作 定位节点操作下拉失败
|
||
元素点击 ${Path_Button_SetName} 点击更改按钮 定位更改按钮失败
|
||
元素输入 ${Path_Input_ServerName} ${NewServerName} 定位服务器名称输入框失败
|
||
元素点击 ${Path_Button_SetNameOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_ServerAlertOK} 点击确定按钮 定位确定按钮失败
|
||
Wait Until Element Is Visible xpath=//td[text()="${NewServerName}"] 5s 修改黑方名称失败
|
||
|
||
设置超时时间
|
||
[Arguments] ${TimeOut}
|
||
元素输入 ${Path_Input_ServerExpireTime} ${TimeOut} 定位会话锁定时间输入框失败
|
||
元素点击 ${Path_Button_SetExpireTimeOK} 点击更改按钮 定位更改按钮失败
|
||
Comment 元素点击 ${confirmagain} 点击确认更改超时时间 定位超时时间确定更改按钮失败
|
||
|
||
超时设置失败
|
||
Wait Until Element Is Visible ${Wrong_ExpireTime}
|
||
${TextInfo}= Get Text ${Wrong_ExpireTime}
|
||
Should Be Equal ${TextInfo} 请输入0-30的整数,0表示不锁定
|
||
sleep 1s
|
||
元素点击 ${Close_Warning} 点击关闭错误提示弹窗 定位错误提示弹窗失败
|
||
|
||
超时设置成功
|
||
元素点击 ${Path_Button_ServerAlertOK} 点击确定按钮 定位确定按钮失败
|
||
|
||
修改服务器系统时间
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
元素点击 ${Default_BC_Node} 点击介质节点管理下的默认黑方卡片 定位默认黑方节点卡片失败
|
||
元素点击 ${Node_Setting} 点击切换到节点设置页面 定位节点设置页面失败
|
||
${SetTime}= Get Value ${Path_Input_ServerTime}
|
||
Sleep 20s
|
||
元素点击 ${Path_Button_SetTime} 点击更改按钮 定位更改按钮失败
|
||
元素点击 ${Path_Input_ServerTime} 点击服务器时间输入框 定位服务器时间输入框失败
|
||
元素点击 ${Date_15} 点击勾选时间为15号 定位服务器时间输入框失败
|
||
${status}= BuiltIn.Run Keyword And Return Status Wait Until Element Is Visible ${Laydate-btns-Confirm} 2s
|
||
BuiltIn.Run Keyword If '${status}'== 'true' Click Element ${Laydate-btns-Confirm}
|
||
元素点击 ${Path_Button_SetTimeOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_ServerAlertOK} 点击确定按钮 定位确定按钮失败
|
||
|
||
设置https端口号
|
||
[Arguments] ${HttpSport}
|
||
元素点击 ${System_Config} 进入系统管理页面 定位系统管理失败
|
||
元素点击 ${Path_Title_ServerSetting} 进入系统设置页面 定位系统设置页面失败
|
||
元素点击 ${Path_Button_SetHttps} 点击更改按钮 定位更改按钮失败
|
||
元素输入 ${Path_Input_ServerHttps} ${HttpSport} 定位服务器https端口输入框失败
|
||
元素点击 ${Path_Button_SetHttpsOK} 点击确定完成端口号编辑 定位端口号编辑确定按钮失败
|
||
|
||
https端口号设置失败
|
||
Wait Until Element Is Visible ${Wrong_Port}
|
||
${TextInfo}= Get Text ${Wrong_Port}
|
||
Should Be Equal ${TextInfo} 请输入1-65535之间的整数
|
||
元素点击 ${Close_WrongWarning} 点击关闭错误端口提示 定位错误端口提示弹窗内的确定按钮
|
||
元素点击 ${Path_Button_SetHttpsCancel} 点击取消按钮 定位取消按钮失败
|
||
|
||
https端口号已被占用
|
||
Wait Until Element Is Visible ${Warning_Port_Used} 300s 定位端口被占用提示失败
|
||
元素点击 ${Path_Button_SetHttpsFaileOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_SetHttpsCancel} 点击取消按钮 定位取消按钮失败
|
||
|
||
https端口号设置成功
|
||
log 关闭当前打开的浏览器
|
||
Sleep 30s
|
||
Close Browser
|
||
Open Connection ${Plantform_BC_IP}
|
||
SSHLibrary.Login root 2008Bc1223!@#
|
||
log 开放https端口号
|
||
Execute Command service iptables stop
|
||
sleep 1s
|
||
Close Connection
|
||
Sleep 60s
|
||
|
||
https端口登录黑方
|
||
Sleep 30s
|
||
Log 登入黑方
|
||
Open Browser ${Plantform_BC_UrlPort1024} ${browser}
|
||
Log Open Firefox successfully!
|
||
sleep 3s
|
||
Set Window Size 1920 1080
|
||
Log 登录网站
|
||
登录验证(正确) ${Sys_Admin} ${WebPWD}
|
||
sleep 10s
|
||
Page Should Contain ${Sys_Admin}
|
||
Log 登录成功!
|
||
|
||
校验版本信息
|
||
元素点击 ${Path_Icon_AboutHelp} 进入信息和帮助页面 定位信息和帮助页面失败
|
||
FOR ${Element} IN @{Component_List}
|
||
${Temp} Run Keyword And Return Status Page Should Contain ${Element}
|
||
Run Keyword If '${Temp}'=='True' Continue For Loop
|
||
... ELSE fail ${Element}组件不存在
|
||
Continue For Loop
|
||
END
|
||
Log 组件校验完毕
|
||
|
||
进入备份集校验设置页面
|
||
元素点击 ${System_Config} 进入系统设置页面 定位系统设置失败
|
||
循环点击 ${Business_Assistant} ${BackUpSetCheck}
|
||
元素点击 ${BackUpSetCheck} 进入备份集校验页面 定位备份集校验失败
|
||
|
||
设置非法备份集校验周期
|
||
[Arguments] ${Interval}
|
||
元素点击 ${Path_Button_SetInterval} 点击设置按钮 定位设置按钮失败
|
||
元素输入 ${Path_Input_SetInterval} ${Interval} 定位周期内容输入框失败
|
||
元素点击 ${Path_Button_SetIntervalOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_SetIntervalCancle} 点击取消按钮 定位取消按钮失败
|
||
|
||
设置合法备份集校验周期
|
||
[Arguments] ${Interval}
|
||
元素点击 ${Path_Button_SetInterval} 点击设置按钮 定位设置按钮失败
|
||
元素输入 ${Path_Input_SetInterval} ${Interval} 定位周期内容输入框失败
|
||
元素点击 ${Path_Button_SetIntervalOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_ServerAlertOK} 点击确定按钮 定位确定按钮失败
|
||
|
||
设置非法备份集校验速度
|
||
[Arguments] ${Speed}
|
||
元素点击 ${Path_Button_SetSpeed} 点击设置按钮 定位设置按钮失败
|
||
元素输入 ${Path_Input_SetSpeed} ${Speed} 定位速度内容输入框失败
|
||
元素点击 ${Path_Button_SetSpeedOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_SetSpeedCancle} 点击取消按钮 定位取消按钮失败
|
||
|
||
设置合法备份集校验速度
|
||
[Arguments] ${Speed}
|
||
元素点击 ${Path_Button_SetSpeed} 点击设置按钮 定位设置按钮失败
|
||
元素输入 ${Path_Input_SetSpeed} ${Speed} 定位速度内容输入框失败
|
||
元素点击 ${Path_Button_SetSpeedOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_ServerAlertOK} 点击确定按钮 定位确定按钮失败
|
||
|
||
设置非法备份集校验时间
|
||
[Arguments] ${Time}
|
||
元素点击 ${Path_Button_SetBackupTime} 点击设置按钮 定位设置按钮失败
|
||
元素输入 ${Path_Input_SetTime} ${Time} 定位时间内容输入框失败
|
||
元素点击 ${Path_Button_SetBackupTimeOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_SetTimeCancle} 点击取消按钮 定位取消按钮失败
|
||
|
||
设置合法备份集校验时间
|
||
[Arguments] ${Time}
|
||
元素点击 ${Path_Button_SetBackupTime} 点击设置按钮 定位设置按钮失败
|
||
元素输入 ${Path_Input_SetTime} ${Time} 定位时间内容输入框失败
|
||
元素点击 ${Path_Button_SetBackupTimeOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_ServerAlertOK} 点击确定按钮 定位确定按钮失败
|
||
|
||
进入网络设置页面
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
元素点击 ${Default_BC_Node} 点击介质节点管理下的默认黑方卡片 定位默认黑方节点卡片失败
|
||
元素点击 ${Path_Title_NetworkSetting} 进入网络设置页面 定位网络设置失败
|
||
|
||
编辑无效的网卡信息
|
||
[Arguments] ${NetworkCardEdit}
|
||
元素点击 ${Edit_Network} 点击编辑按钮 定位编辑按钮失败
|
||
元素输入 ${Path_Input_EditNetworkCard_IP} 110.1110.11110 定位IP输入框失败
|
||
元素点击 ${Path_Button_EditNetworkCard_AddBond} 点击确定按钮 定位确定按钮失败
|
||
Wait Until Page Contains Element ${Path_Info_InvalidURL} 30s
|
||
元素点击 ${Path_Button_NetWork_AlertOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_EditNetworkCard_Close} 点击关闭按钮 定位关闭按钮失败
|
||
元素点击 ${Edit_Network} 点击编辑按钮 定位编辑按钮失败
|
||
元素输入 ${Path_Input_EditNetworkCard_Mask} ${EMPTY} 定位子网掩码输入框失败
|
||
元素点击 ${Path_Button_EditNetworkCard_AddBond} 点击确定按钮 定位确定按钮失败
|
||
Wait Until Page Contains Element ${Path_Info_LackCompleteInfo} 30s
|
||
元素点击 ${Path_Button_NetWork_AlertOK} 点击确定按钮 定位确定按钮失败
|
||
元素点击 ${Path_Button_EditNetworkCard_Close} 点击关闭按钮 定位关闭按钮失败
|
||
元素点击 ${Edit_Network} 点击编辑按钮 定位编辑按钮失败
|
||
元素输入 ${Path_Input_EditNetworkCard_Mask} 255.255.0.0 定位子网掩码输入框失败
|
||
Comment 元素输入 ${Path_Input_EditNetworkCard_DNS1} *?// 定位DNS1输入框失败
|
||
元素点击 ${Path_Button_EditNetworkCard_AddBond} 点击确定修改按钮 定位确定按钮失败
|
||
元素点击 ${Edit_Network_Confirm} 点击二次确认修改按钮 定位二次确认修改按钮失败
|
||
|
||
进入报警邮箱设置页面
|
||
元素点击 ${System_Config} 进入系统设置页面 定位系统设置失败
|
||
元素点击 ${Path_Title_ServerSetting} 进入系统设置页面 定位系统设置页面失败
|
||
|
||
设置报警邮箱_STMP启用
|
||
[Arguments] ${OutBox} ${User} ${Port} ${Password}
|
||
元素点击 ${Email_Config} 点击修改发送邮箱配置 定位发送邮箱配置立即修改按钮失败
|
||
Wait Until Element Is Visible ${Path_Input_SentEmailServer} 10s
|
||
元素点击 ${Enable_SMTP} 点击启用SMTP 定位启用SMTP失败
|
||
Run Keyword If '${OutBox}'=='' Log 发件箱保持原数值
|
||
... ELSE Input Text ${Path_Input_SentEmailServer} ${OutBox}
|
||
Run Keyword If '${User}'=='' Log 发件人保持原数值
|
||
... ELSE Input Text ${Path_Input_SentEmailUser} ${User}
|
||
Run Keyword If '${Port}'=='' Log 端口保持原数值
|
||
... ELSE Input Text ${Path_Input_SentEmailPort} ${Port}
|
||
Run Keyword If '${Password}'=='' Log 密码保持原数值
|
||
... ELSE Input Password ${Path_Input_SentEmailPassword_Password} ${Password}
|
||
元素点击 ${Confirm_Change_Email} 点击确定按钮 定位确定按钮失败
|
||
Wait Until Page Contains Element ${Path_AlertInfo} 30s
|
||
${AlertMessage}= Get Text ${Path_AlertInfo}
|
||
Should Be Equal As Strings ${AlertMessage} ${Res_Text_SetSuccess}
|
||
元素点击 ${Path_Button_Alert_OK} 点击确定按钮 定位确定按钮失败
|
||
Log 报警邮箱-发件服务器设置完毕
|
||
|
||
测试报警邮箱
|
||
[Arguments] ${InBox}
|
||
元素点击 ${Path_Button_TestEmailDialog} 点击测试邮箱按钮 定位测试邮箱按钮失败
|
||
Wait Until Element Is Visible ${Path_Title_Inbox} 10s
|
||
元素输入 ${Path_Input_ReceiveEmail} ${InBox} 定位接收邮箱输入框失败
|
||
元素点击 ${Path_Button_TestEmail} 点击确定按钮 定位确定按钮失败
|
||
log wait for alerm
|
||
sleep 5s
|
||
Wait Until Page Contains Element ${Path_AlertInfo} 60s
|
||
Sleep 5s
|
||
Wait Until Element Is Visible ${Path_Button_Alert_OK} 60s
|
||
${AlertMessage}= Get Text ${Path_AlertInfo}
|
||
${result} Run Keyword If '${AlertMessage}'=='${Res_TextInvalidInbox}' Set Variable 发送失败,${InBox} 无效的收件箱!
|
||
... ELSE IF '${AlertMessage}' == '${Res_Text_CheckSuccess}' Set Variable 收件箱${InBox}验证成功!
|
||
... ELSE IF '${AlertMessage}' == '${Res_Text_TestEmailFailed}' Set Variable 发送失败,收件箱${InBox}格式有效!
|
||
... ELSE Set Variable 发送失败,提示信息${AlertMessage}未知!
|
||
Sleep 2s
|
||
元素点击 ${Path_Button_Alert_OK} 点击确定按钮 定位确定按钮失败
|
||
Run Keyword If '${AlertMessage}'=='${Res_TextInvalidInbox}' Click Element ${Path_Button_CancelTestEmail}
|
||
Return From Keyword ${result}
|
||
|
||
报警邮箱测试失败
|
||
[Arguments] ${Message}
|
||
${Result} If String Contain ${Message} 失败
|
||
Should Be True ${Result}
|
||
|
||
报警邮箱非法值设置
|
||
元素点击 ${Email_Config} 点击修改发送邮箱配置 定位发送邮箱配置立即修改按钮失败
|
||
Log 输入非法的报警邮件发送服务器
|
||
元素输入 ${Path_Input_SentEmailServer} invalidemailserver 定位邮件发送服务器输入框失败
|
||
Click Element ${Confirm_Change_Email}
|
||
${Prompt}= Get Text ${Path_PromptMessage_ErrorServer}
|
||
Should Be Equal As Strings ${Prompt} ${Res_Text_EmailServerFormat}
|
||
元素点击 ${Cancel_ConfigEmail} 点击取消关闭邮箱配置弹窗 定位告警邮箱弹窗内的取消按钮失败
|
||
元素点击 ${Email_Config} 点击修改发送邮箱配置 定位发送邮箱配置立即修改按钮失败
|
||
Log 输入非法的报警邮件发送端口
|
||
元素输入 ${Path_Input_SentEmailPort} ABVCDE 定位邮件发送端口输入框失败
|
||
Click Element ${Confirm_Change_Email}
|
||
${Prompt}= Get Text ${Path_PromptMessage_ErrorPort}
|
||
Should Be Equal As Strings ${Prompt} ${Res_Text_PortRange}
|
||
元素点击 ${Cancel_ConfigEmail} 点击取消关闭邮箱配置弹窗 定位告警邮箱弹窗内的取消按钮失败
|
||
元素点击 ${Email_Config} 点击修改发送邮箱配置 定位发送邮箱配置立即修改按钮失败
|
||
Log 输入非法的报警邮件用户
|
||
元素输入 ${Path_Input_SentEmailUser} invaliduser 定位邮件发送用户输入框失败
|
||
Click Element ${Confirm_Change_Email}
|
||
${Prompt}= Get Text ${Path_PromptMessage_ErrorUser}
|
||
Should Be Equal As Strings ${Prompt} ${Res_Text_EmailUserFormat}
|
||
元素点击 ${Cancel_ConfigEmail} 点击取消关闭邮箱配置弹窗 定位告警邮箱弹窗内的取消按钮失败
|
||
元素点击 ${Email_Config} 点击修改发送邮箱配置 定位发送邮箱配置立即修改按钮失败
|
||
Log 用户密码为空
|
||
元素输入 ${Path_Input_SentEmailPassword_Password} ${EMPTY} 定位邮件发送密码输入框失败
|
||
Click Element ${Confirm_Change_Email}
|
||
${Prompt}= Get Text ${Path_PromptMessage_EmptyPassword}
|
||
Should Be Equal As Strings ${Prompt} ${Res_Text_EmptyPassword}
|
||
元素点击 ${Cancel_ConfigEmail} 点击取消关闭邮箱配置弹窗 定位告警邮箱弹窗内的取消按钮失败
|
||
|
||
进入报警规则设置页面
|
||
循环点击 ${System_Config} ${Path_Label_Danger}
|
||
循环点击 ${Path_Label_Danger} ${Path_Lable_AlarmRulesSetting}
|
||
元素点击 ${Path_Lable_AlarmRulesSetting} 进入报警规则设置页面 定位报警规则设置失败
|
||
|
||
进入添加规则页面
|
||
元素点击 ${Path_Button_AddRule} 点击添加规则按钮 定位添加规则按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_AddRules} 30s
|
||
Wait Until Element Is Visible ${Path_Button_AddAlarmRule} 30s
|
||
|
||
规则名称为空检验
|
||
Click Element ${Path_Button_AddAlarmRule}
|
||
${Info}= Get Text ${Path_PromptMessage_ErrorAlarmRuleName}
|
||
Should Be Equal As Strings ${Info} ${Res_Text_ErrorAlarmRuleName}
|
||
|
||
设置规则名称
|
||
[Arguments] ${Rulename}
|
||
元素输入 ${Path_Input_RuleName} ${Rulename} 定位规则名输入框失败
|
||
|
||
确认添加报警规则失败
|
||
元素点击 ${Path_Button_AddAlarmRule} 点击添加规则按钮 定位添加规则按钮失败
|
||
Wait Until Page Contains Element ${Path_AlertInfo} 30s
|
||
Sleep 2s
|
||
${Info}= Get Text ${Path_AlertInfo}
|
||
Should Be Equal As Strings ${Info} ${Res_Text_CheckEmailorPhone}
|
||
元素点击 ${Path_Button_Alert_OK} 点击确定按钮 定位确定按钮失败
|
||
#下面注释部分为验证规则名为空时的提示
|
||
Comment Click Element ${Path_Button_AddAlarmRule}
|
||
Comment ${Info}= Get Text ${Path_PromptMessage_ErrorAlarmRuleName}
|
||
Comment Should Be Equal As Strings ${Info} ${Res_Text_ErrorAlarmRuleName}
|
||
|
||
设置过滤规则级别
|
||
[Arguments] ${Rulelevel}
|
||
Select From List By Label ${Path_Select_FilterRules_Level} ${Rulelevel}
|
||
|
||
设置接收邮箱
|
||
[Arguments] ${InboxString}
|
||
元素输入 ${Path_InputArea_InboxSetting} ${InboxString} 定位接收邮箱输入框失败
|
||
|
||
确认添加报警规则成功
|
||
元素点击 ${Path_Button_AddAlarmRule} 点击添加规则按钮 定位添加规则按钮失败
|
||
log create new rule
|
||
Wait Until Page Contains Element ${Path_AlertInfo} 10s
|
||
log get return info
|
||
Sleep 2s
|
||
${Info}= Get Text ${Path_AlertInfo}
|
||
Should Be Equal As Strings ${Info} ${Res_Text_AddRulesSuccess}
|
||
元素点击 ${Path_Button_Alert_OK} 点击确定按钮 定位确定按钮失败
|
||
|
||
删除报警规则
|
||
[Arguments] ${RuleName}
|
||
sleep 2s
|
||
${button_del_rule} set variable xpath=//tbody/tr/td[text()="${RuleName}"]/parent::*/td/div/button[text()="删除"]
|
||
元素点击 ${button_del_rule} 点击删除按钮 定位删除按钮失败
|
||
wait until page contains element ${Path_Title_DelRule}
|
||
元素点击 ${Path_Button_DelRule} 点击删除确定按钮 定位删除确定按钮失败
|
||
Wait Until Page Contains Element ${Path_AlertInfo} 10s
|
||
${AlertMessage}= Get Text ${Path_AlertInfo}
|
||
Should Be Equal As Strings ${AlertMessage} ${Res_Text_DelAlarmRuleOK}
|
||
Sleep 1s
|
||
元素点击 ${Path_Button_Alert_OK} 点击确定按钮 定位确定按钮失败
|
||
|
||
设置过滤规则类型
|
||
[Arguments] ${Type} ${Subtype}
|
||
Select From List By Label xpath=//select[@ng-model="alarmRule.alarmType"] ${Type}
|
||
Select From List By Label xpath=//select[@ng-model="alarmRule.alarmSubType"] ${Subtype}
|
||
|
||
设置过滤规则抑制规则
|
||
[Arguments] ${Sendrule}
|
||
Log 选择抑制规则:逐条发送、不再重复发送
|
||
Run Keyword If '${Sendrule}' == '逐条发送' Click Element ${Path_Radio_FilterRules_SendOneByOne}
|
||
... ELSE IF '${Sendrule}' == '不再重复发送' Click Element ${Path_Radio_FilterRules_SendNoRepeat}
|
||
... ELSE Log 未知的抑制规则
|
||
|
||
编辑报警规则
|
||
[Arguments] ${RuleName}
|
||
${button_edit_rule} set variable xpath=//tbody/tr/td[text()="${RuleName}"]/parent::*/td/div/button[text()="编辑"]
|
||
元素点击 ${button_edit_rule} 进入编辑页面 定位规则编辑按钮失败
|
||
|
||
确认编辑报警规则成功
|
||
元素点击 ${Path_Button_AddAlarmRule} 点击添加规则按钮 定位添加规则按钮失败
|
||
Wait Until Page Contains Element ${Path_AlertInfo} 10s
|
||
Wait Until Element Is Visible ${Path_AlertInfo} 10s
|
||
Sleep 2s
|
||
${Info}= Get Text ${Path_AlertInfo}
|
||
Should Be Equal As Strings ${Info} ${Res_Text_EditRulesSuccess}
|
||
元素点击 ${Path_Button_Alert_OK} 点击确定按钮 定位确定按钮失败
|
||
|
||
查看告警待处理数量
|
||
${Danger} Get Text ${path_danger}
|
||
Log 告警数量为${Danger}
|
||
Return From Keyword ${Danger}
|
||
[Return] ${Danger}
|
||
|
||
处理告警信息
|
||
Log 进入告警信息处理界面
|
||
元素点击 ${Path_Button_Danger} 点击告警处理按钮 定位告警处理按钮失败
|
||
元素点击 ${Alarm_System} 点击切换到系统告警 定位系统告警栏失败
|
||
元素点击 ${Path_Select_AlterStats} 选择告警选择框 定位告警选择框失败
|
||
元素点击 ${Path_Option_OffDanger} 选择告警未处理 定位告警未处理选择项失败
|
||
元素点击 ${Search_Alarm} 点击搜索按钮进行搜索 定位高级搜索按钮失败
|
||
${Time}= Get Text ${Warning_Time}
|
||
元素点击 xpath=//td[text()="${Time}"]/..//span[text()="处理"] 点击未处理按钮 定位告警未处理按钮失败
|
||
元素点击 ${Path_Button_DangerOK} 点击告警未处理成功确定按钮 定位告警处理成功确定按钮失败
|
||
元素点击 ${Path_Select_AlterStats} 选择告警选择框 定位告警选择框失败
|
||
元素点击 ${Option_Warning_Handled} 切换到告警已经处理选项 定位告警已经处理选项失败
|
||
元素点击 ${Search_Alarm} 点击搜索按钮进行搜索 定位高级搜索按钮失败
|
||
${Result_1} Run Keyword And Return Status Wait Until Element Is Visible xpath=//td[text()="${Time}"] 10s 定位已处理告警失败
|
||
Run Keyword If ${Result_1}==True Log 告警处理成功
|
||
... ELSE Fail 告警处理失败
|
||
|
||
校验告警信息待处理数量
|
||
[Arguments] ${DangerNew1}
|
||
${path_Danger} Set Variable xpath=//span[@class="label label-danger ng-binding"]
|
||
Wait Until Page Contains Element ${path_Danger} 30s
|
||
Wait Until Element Is Visible ${path_Danger} 30s
|
||
${DangerAffirm} Get Text ${path_Danger}
|
||
Log 告警数量为${DangerAffirm}
|
||
${Add_Danger}= Evaluate eval('${DangerNew1} -1')
|
||
${Danger_Read} Run Keyword And Return Status Should Be Equal As strings ${DangerAffirm} ${Add_Danger}
|
||
Run Keyword If ${Danger_Read}==True Log 告警信息数量显示正确
|
||
... ELSE Fail 告警信息数量校验失败
|
||
|
||
已处理告警信息
|
||
Log 进入告警信息处理界面
|
||
元素点击 ${Path_Button_Danger} 点击告警处理按钮 定位告警处理按钮失败
|
||
Log 选择已处理的信息
|
||
元素点击 ${Path_Select_AlterStats} 选择告警选择框 定位告警选择框失败
|
||
元素点击 ${Path_Option_OnDanger} 选择告警未处理 定位告警未处理选择项失败
|
||
Log 告警信息处理一条
|
||
元素点击 ${Path_Button_Act} 点击已处理按钮 定位告警已处理按钮失败
|
||
元素点击 ${Path_Button_OnDangerOK} 点击告警已处理成功确定按钮 定位告警已处理成功确定按钮失败
|
||
元素点击 ${Path_Button_OffDanger} 点击×退出按钮 定位×退出按钮失败
|
||
|
||
校验告警信息已处理数量
|
||
[Arguments] ${DangerNew2}
|
||
${path_Danger} Set Variable xpath=//span[@class="label label-danger ng-binding"]
|
||
Wait Until Page Contains Element ${path_Danger} 30s
|
||
Wait Until Element Is Visible ${path_Danger} 30s
|
||
${DangerAffirm} Get Text ${path_Danger}
|
||
Log 告警数量为${DangerAffirm}
|
||
${Subtract_Danger}= Evaluate ${DangerNew2}+1
|
||
${Danger_Read} Run Keyword And Return Status Should Be Equal As Integers ${DangerAffirm} ${Subtract_Danger}
|
||
Run Keyword If ${Danger_Read}==True Log 告警信息数量显示正确
|
||
... ELSE Fail 告警信息数量校验失败
|
||
|
||
修改网卡信息
|
||
[Arguments] ${new_ip}
|
||
元素点击 ${Path_Button_Eth0_Modify} 点击第一块网卡的编辑按钮 第一块网卡编辑按钮定位失败
|
||
元素输入 ${Path_Input_EditNetworkCard_IP} ${new_ip} ip输入框定位失败
|
||
元素点击 ${Path_Button_EditNetworkCard_AddBond} 点击确认修改按钮 确认修改按钮定位失败
|
||
元素点击 ${Edit_Network_Confirm} 点击二次确认修改按钮 定位二次确认修改按钮失败
|
||
sleep 360s 等待ip修改
|
||
关闭浏览器
|
||
|
||
修改服务器时间
|
||
[Arguments] ${time} ${delay_day}
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
元素点击 ${Default_BC_Node} 点击介质节点管理下的默认黑方卡片 定位默认黑方节点卡片失败
|
||
元素点击 ${Node_Setting} 点击切换到节点设置页面 定位节点设置页面失败
|
||
${Year} Evaluate time.strftime('%Y',time.localtime()) time
|
||
${Mon} Evaluate time.strftime('%m',time.localtime()) time
|
||
${Day} Evaluate time.strftime('%#d',time.localtime()) time
|
||
${Day} Evaluate ${Day}+${delay_day}
|
||
${Time_1} Catenate SEPARATOR=- ${Year} ${Mon}
|
||
${Time_2} Catenate SEPARATOR=- ${Time_1} ${Day}
|
||
${Time} Catenate ${Time_2} ${time}
|
||
元素点击 ${Path_Button_SetTime} 点击更改按钮 定位更改按钮失败
|
||
Assign Id To Element ${Path_Input_ServerTime} dateInput
|
||
Execute Javascript window.document.getElementById('dateInput').removeAttribute('readonly')
|
||
元素输入 dateInput ${Time} 定位服务器时间输入框失败
|
||
循环点击 ${Path_Button_SetTimeOK} ${Path_Button_ServerAlertOK}
|
||
元素点击 ${Path_Button_ServerAlertOK} 点击确定按钮 定位确定按钮失败
|
||
|
||
校验定时容量_使用前
|
||
元素点击 ${System_Config} 进入系统设置页面 定位系统设置失败
|
||
循环点击 ${Auth_Manage} ${Storage_Used}
|
||
${stor_used} Get Text ${Storage_Used}
|
||
${stor_used_origin}= Remove String ${stor_used} GB
|
||
${stor_used_origin}= Remove String ${stor_used_origin} MB
|
||
Set Suite Variable ${stor_used_origin}
|
||
Log 获取定时授权使用前的容量
|
||
Sleep 2s
|
||
|
||
校验定时容量_使用后
|
||
[Arguments] ${result} # 容量变化结果(yes表示已使用容量变小,即备份集被清理,no表示已使用容量未变化)
|
||
Sleep 60s
|
||
Log 等待过期备份集被清理
|
||
元素点击 ${System_Config} 进入系统设置页面 定位系统设置失败
|
||
循环点击 ${Auth_Manage} ${Storage_Used}
|
||
${stor_used} Get Text ${Storage_Used}
|
||
${stor_used_after} Remove String ${stor_used} GB
|
||
${stor_used_after} Remove String ${stor_used_after} MB
|
||
${stor_used_after} Remove String ${stor_used_after} KB
|
||
Set Suite Variable ${stor_used_after}
|
||
Log 获取定时授权使用后的容量
|
||
Run Keyword if ${result}==1 and ${stor_used_after}<${stor_used_origin} Log 备份集清理成功
|
||
... ELSE IF ${result}==0 and ${stor_used_after}==${stor_used_origin} Log 备份集未清理
|
||
... ELSE Fail 备份集清理失败
|
||
Sleep 2s
|
||
|
||
关机重启恢复出厂设置
|
||
[Arguments] ${do}
|
||
[Documentation] 功能:根据传入的值点击重启,关机,恢复出厂设置,重启黑方服务
|
||
...
|
||
... 使用方法:关机重启恢复出厂设置 \ 操作参数
|
||
...
|
||
... 变量:${do}
|
||
... ${do}==1 \ \ 为关机
|
||
... ${do}==2 \ \ 为重启
|
||
... ${do}==3 \ \ 恢复出厂设置
|
||
... ${do}==4 \ \ 重启黑方服务
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
BuiltIn.Run Keyword If ${do}==1 页面关机操作
|
||
... ELSE Log 不关机
|
||
BuiltIn.Run Keyword If ${do}==2 页面重启操作
|
||
... ELSE Log 不重启
|
||
BuiltIn.Run Keyword If ${do}==3 页面恢复出厂设置操作
|
||
... ELSE Log 不恢复出厂设置
|
||
BuiltIn.Run Keyword If ${do}==4 页面重启服务操作
|
||
... ELSE Log 不重启服务操作
|
||
|
||
校验告警数量为0
|
||
${path_Danger} Set Variable xpath=//span[@class="label label-danger ng-binding"]
|
||
Wait Until Element Is Visible ${path_Danger} 30s
|
||
${DangerAffirm} Get Text ${path_Danger}
|
||
${Danger_Read} Run Keyword And Return Status Should Be Equal As strings ${DangerAffirm} 0
|
||
Run Keyword If ${Danger_Read}==True Log 告警信息数量显示为0
|
||
... ELSE Fail 告警信息数量校验不为0
|
||
|
||
校验页面无代理
|
||
元素点击 ${Timed_DataProtect} 点击进入定时数据保护页面 定位定时数据保护失败
|
||
${status}= Run Keyword And Return Status Element Should Be Visible ${Plantform_BC_Agent}
|
||
Run Keyword If '${status}'=='False' log 页面无代理信息
|
||
|
||
恢复出厂设置后登录
|
||
打开黑方登录页面 ${Plantform_BC_Url}
|
||
登录验证(正确) ${Sys_Admin} ${DefaultPWD}
|
||
Wait Until Element Is Visible ${Input_Email}
|
||
Set Focus To Element ${Input_Email}
|
||
Input Text ${Input_Email} ${Email}
|
||
log 绑定邮箱
|
||
Wait Until Element Is Visible ${Input_old_pwd}
|
||
Set Focus To Element ${Input_old_pwd}
|
||
Input Text ${Input_old_pwd} ${DefaultPWD}
|
||
log 老密码输入成功
|
||
Wait Until Element Is Visible ${Input_new_pwd}
|
||
Set Focus To Element ${Input_new_pwd}
|
||
Input Text ${Input_new_pwd} ${WebPWD}
|
||
log 新密码输入成功
|
||
Wait Until Element Is Visible ${Input_verify_pwd}
|
||
Set Focus To Element ${Input_verify_pwd}
|
||
Input Text ${Input_verify_pwd} ${WebPWD}
|
||
log 确认新密码
|
||
元素点击 ${Change_success_confirm} 确认修改点击成功 确认按钮定位失败
|
||
元素点击 ${Button_PrimaryOK_ChangePWD} 确认密码修改成功 确认密码修改成功按钮定位失败
|
||
登录验证(正确) ${Sys_Admin} ${WebPWD}
|
||
|
||
校验无老日志信息
|
||
元素点击 ${System_Config} 进入系统设置页面 定位系统设置失败
|
||
元素点击 ${Path_Icon_Second_SysLog} 点击进入日志信息页面 定位日志信息页面失败
|
||
${status}= Run Keyword And Return Status Page Should Contain 新建了策略
|
||
Run Keyword If '${status}'=='False' log 页面无老日志信息
|
||
|
||
判断服务器开关机
|
||
[Arguments] ${status} ${BC_IP} ${BC_Name} ${BC_PWD}
|
||
[Documentation] 功能描述:判断黑方服务器是否已开机/关机
|
||
...
|
||
... 参数:status|黑方IP|黑方后台账号|黑方后台密码
|
||
...
|
||
... ${status}==True为开机
|
||
... ${status}==False为关机
|
||
sleep 30s
|
||
FOR ${n} IN RANGE 20
|
||
Open Connection ${BC_IP}
|
||
${passed}= Run Keyword And Return Status SSHLibrary.Login ${BC_Name} ${BC_PWD}
|
||
Run Keyword If ${status}==${passed} EXit For loop
|
||
sleep 60s
|
||
END
|
||
sleep 60s
|
||
log 等待机器完全开机&关机
|
||
|
||
页面关机操作
|
||
元素点击 ${Node_More_Operate} 点击展开节点操作 定位节点操作下拉失败
|
||
元素点击 ${Path_Title_ServerSetting_Shutdown} 点击关机按钮成功 定位关机按钮失败
|
||
元素点击 ${Path_Title_ServerSetting_Reboot_OK} 点击关机确认按钮成功 定位关机确认按钮失败
|
||
Sleep 300s
|
||
|
||
页面重启操作
|
||
元素点击 ${Path_Title_ServerSetting_Reboot} 点击重启按钮成功 定位重启按钮失败
|
||
元素点击 ${Path_Title_ServerSetting_Reboot_OK} 点击重启确认按钮成功 定位重启确认按钮失败
|
||
|
||
页面重启服务操作
|
||
[Documentation] 功能:点击重启服务操作
|
||
...
|
||
... 使用方法:页面重启服务操作
|
||
...
|
||
... 变量:无
|
||
元素点击 ${Node_More_Operate} 点击展开节点操作 定位节点操作下拉失败
|
||
元素点击 ${Path_ServerSetting_RestartServ} 点击重启黑方服务 定位黑方服务重启按钮失败
|
||
元素点击 ${Path_Title_ServerSetting_Reboot_OK} 点击重启确认按钮成功 定位重启确认按钮失败
|
||
|
||
黑方服务器开机
|
||
[Arguments] ${BC_Name} ${Esxi_IP} ${Esxi_User} ${Esxi_PWD}
|
||
Vsphere.Sphere Login ${Esxi_IP} ${Esxi_User} ${Esxi_PWD}
|
||
log 登录esxi
|
||
vm_poweron_name ${BC_Name}
|
||
Sleep 5s
|
||
vm_poweron_name ${BC_Name}
|
||
log 开机成功
|
||
|
||
判断黑方服务是否启动
|
||
[Arguments] ${BC_IP} ${BC_Name} ${BC_PWD}
|
||
[Documentation] 功能:循环判断黑方服务是否正常启动
|
||
...
|
||
... 使用方法:判断黑方服务是否启动
|
||
...
|
||
... 变量:无
|
||
Open Connection ${BC_IP}
|
||
SSHLibrary.Login ${BC_Name} ${BC_PWD}
|
||
log 黑方ssh连接成功
|
||
FOR ${n} IN RANGE 10
|
||
Execute Command systemctl status unabackup > /bc_status.txt
|
||
${bc_status} Execute Command grep "active (running)" /bc_status.txt
|
||
${BC_status_length} Get Length ${bc_status}
|
||
Run Keyword If ${BC_status_length}>0 Exit For Loop
|
||
... ELSE log 黑方服务还未启动成功
|
||
sleep 60S
|
||
END
|
||
Run Keyword If ${BC_status_length}==0 Fail
|
||
... ELSE log 黑方服务启动成功
|
||
Close Connection
|
||
sleep 60s
|
||
|
||
页面恢复出厂设置操作
|
||
元素点击 ${Path_Title_ServerSetting_FactoryReset} 点击恢复出厂设置成功 定位恢复出厂设置失败
|
||
Wait Until Element Is Visible ${Path_Title_ServerSetting_FactoryReset_User} 60s 定位用户名输入框失败
|
||
Set Focus To Element ${Path_Title_ServerSetting_FactoryReset_User}
|
||
Input Text ${Path_Title_ServerSetting_FactoryReset_User} ${Sys_Admin}
|
||
Wait Until Element Is Visible ${Path_Title_ServerSetting_FactoryReset_Password} 60s 定位密码输入框失败
|
||
Set Focus To Element ${Path_Title_ServerSetting_FactoryReset_Password}
|
||
Input Text ${Path_Title_ServerSetting_FactoryReset_Password} ${WebPWD}
|
||
元素点击 ${Path_Title_ServerSetting_FactoryReset_Sure} 点击恢复出厂设置确认按钮成功 定位恢复出厂设置确认按钮失败
|
||
元素点击 ${Path_Title_ServerSetting_FactoryReset_Confirm_Sure} 点击恢复出厂设置再次确认按钮成功 定位恢复出厂设置再次确认按钮失败
|
||
|
||
设置报警邮箱_STMP不启用
|
||
[Arguments] ${OutBox} ${User} ${Port}
|
||
元素点击 ${Email_Config} 点击修改发送邮箱配置 定位发送邮箱配置立即修改按钮失败
|
||
Wait Until Element Is Visible ${Path_Input_SentEmailServer} 10s
|
||
Run Keyword If '${OutBox}'=='' Log 发件箱保持原数值
|
||
... ELSE Input Text ${Path_Input_SentEmailServer} ${OutBox}
|
||
Run Keyword If '${User}'=='' Log 发件人保持原数值
|
||
... ELSE Input Text ${Path_Input_SentEmailUser} ${User}
|
||
Run Keyword If '${Port}'=='' Log 端口保持原数值
|
||
... ELSE Input Text ${Path_Input_SentEmailPort} ${Port}
|
||
元素点击 ${Confirm_Change_Email} 点击确定按钮 定位确定按钮失败
|
||
Wait Until Page Contains Element ${Path_AlertInfo} 30s
|
||
${AlertMessage}= Get Text ${Path_AlertInfo}
|
||
Should Be Equal As Strings ${AlertMessage} ${Res_Text_SetSuccess}
|
||
元素点击 ${Path_Button_Alert_OK} 点击确定按钮 定位确定按钮失败
|
||
Log 报警邮箱-发件服务器设置完毕
|
||
|
||
进入防火墙设置页面
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
元素点击 ${Default_BC_Node} 点击介质节点管理下的默认黑方卡片 定位默认黑方节点卡片失败
|
||
元素点击 ${Path_Title_FireWallSettings} 进入防火墙设置页面 定位防火墙设置失败
|
||
|
||
新建防火墙策略
|
||
[Arguments] ${FWPanelname} ${FWDesIP} ${FWDesPort} ${FWStatus}
|
||
元素点击 ${Path_Button_AddFireWall} 点击新建防火墙策略按钮 定位新建防火墙策略按钮失败
|
||
Wait Until Page Contains Element ${Path_Title_AddFireWall} 30s
|
||
元素输入 ${Path_Input_FireWallPanelName} ${FWPanelname} 定位防火墙策略名称输入框失败
|
||
元素输入 ${Path_Input_FireWallPanelIP} ${FWDesIP} 定位防火墙策略名称输入框失败
|
||
元素输入 ${Path_Input_FireWallPanelPort} ${FWDesPort} 定位防火墙策略名称输入框失败
|
||
元素点击 ${Path_Select_FireWallPanelStrategy} 点击策略状态选择框 定位策略状态选择框失败
|
||
Run Keyword If "${FWStatus}"=="1" Click Element ${Path_Select_FireWallPanelStrategy_Start}
|
||
... ELSE IF "${FWStatus}"=="0" Click Element ${Path_Select_FireWallPanelStrategy_Stop}
|
||
... ELSE Fail 定位策略状态失败
|
||
元素点击 ${Path_Select_FireWallPanelFinish} 点击确认按钮 定位确认按钮失败
|
||
元素点击 ${Button_FireWallPanel_add_Ok_Confirm} 点击弹窗确认按钮 定位弹窗确认按钮失败
|
||
sleep 2s
|
||
|
||
编辑防火墙策略
|
||
[Arguments] ${FWPanelname} ${FWDesIP} ${FWDesPort} ${FWStatus}
|
||
元素点击 //td[@data-field="name"]/div[text()="${FWPanelname}"]/../../td/div/span[text()="编辑"] 点击防火墙策略编辑按钮 定位防火墙策略编辑失败
|
||
Wait Until Page Contains Element ${Path_Title_EditFireWall} 30s
|
||
元素输入 ${Path_Input_FireWallPanelIP} ${FWDesIP} 定位防火墙策略对端IP输入框失败
|
||
Run Keyword If "${FWDesPort}"!="null" 元素输入 ${Path_Input_FireWallPanelPort} ${FWDesPort} 定位防火墙策略对端端口输入框失败
|
||
... ELSE IF "${FWDesPort}"=="null" Log 不需要修改防火墙端口
|
||
... ELSE Fail 定位防火墙策略名称输入框失败
|
||
元素点击 ${Path_Select_FireWallPanelStrategy} 点击策略状态选择框 定位策略状态选择框失败
|
||
Run Keyword If "${FWStatus}"=="1" Click Element ${Path_Select_FireWallPanelStrategy_Start}
|
||
... ELSE IF "${FWStatus}"=="0" Click Element ${Path_Select_FireWallPanelStrategy_Stop}
|
||
... ELSE Fail 定位策略状态失败
|
||
元素点击 ${Path_Select_FireWallPanelFinish} 点击确认按钮 定位确认按钮失败
|
||
元素点击 ${Button_FireWallPanel_add_Ok_Confirm} 点击弹窗确认按钮 定位弹窗确认按钮失败
|
||
sleep 2s
|
||
|
||
停用或启用防火墙策略
|
||
[Arguments] ${FWPanelname} ${FWStatus}
|
||
Run Keyword If "${FWStatus}"=="1" 元素点击 //td[@data-field="name"]/div[text()="${FWPanelname}"]/../../td/div/span[text()="启用"] 点击启用按钮 定位启用按钮失败
|
||
... ELSE IF "${FWStatus}"=="0" 元素点击 //td[@data-field="name"]/div[text()="${FWPanelname}"]/../../td/div/span[text()="停用"] 点击停用按钮 定位停用按钮失败
|
||
... ELSE Fail 定位停用或启用按钮失败
|
||
sleep 2s
|
||
Run Keyword If "${FWStatus}"=="1" 元素点击 ${Button_FireWall_on_Confirm} 点击确认按钮 定位确认按钮失败
|
||
... ELSE IF "${FWStatus}"=="0" 元素点击 ${Button_FireWall_off_Confirm} 点击确认按钮 定位确认按钮失败
|
||
... ELSE Fail 定位停用或启用按钮失败
|
||
sleep 2s
|
||
Wait Until Page Contains Element ${Button_FireWallPanel_add_Ok_Confirm} 30s
|
||
元素点击 ${Button_FireWallPanel_add_Ok_Confirm} 点击弹窗确认按钮 定位弹窗确认按钮失败
|
||
|
||
黑方启动微服务
|
||
[Arguments] ${BC_IP} ${BC_ROOT} ${BC_PWD} ${FWDesPort}
|
||
Open Connection ${BC_IP}
|
||
SSHLibrary.Login ${BC_ROOT} ${BC_PWD}
|
||
Log 登录黑方后台成功
|
||
Execute Command nohup python -m SimpleHTTPServer ${FWDesPort} > /dev/null 2>&1 &
|
||
Log 启动微服务
|
||
Sleep 10s
|
||
${py_status} Execute Command ps -ef | grep SimpleHTTPServer | grep -v grep | wc -l
|
||
Run Keyword If ${py_status}>0 Log 微服务开启
|
||
... ELSE Fail 微服务未启动
|
||
Close Connection
|
||
Sleep 5s
|
||
|
||
黑方停止微服务
|
||
[Arguments] ${BC_IP} ${BC_ROOT} ${BC_PWD}
|
||
Open Connection ${BC_IP}
|
||
SSHLibrary.Login ${BC_ROOT} ${BC_PWD}
|
||
Log 登录黑方后台成功
|
||
Execute Command ps -ef | grep SimpleHTTPServer | grep -v grep | awk '{print $2}' | xargs kill -9
|
||
Log 停止微服务进程
|
||
Sleep 10s
|
||
${py_status} Execute Command ps -ef | grep SimpleHTTPServer | grep -v grep | wc -l
|
||
Run Keyword If ${py_status}==0 Log 微服务停止
|
||
... ELSE Fail 微服务未停止
|
||
Close Connection
|
||
Sleep 5s
|
||
|
||
防火墙端口验证通过
|
||
[Arguments] ${AG_IP} ${AG_ROOT} ${AG_PWD} ${ChkFWDesIP} ${ChkFWDesPort}
|
||
Open Connection ${AG_IP}
|
||
SSHLibrary.Login ${AG_ROOT} ${AG_PWD}
|
||
Log 登录黑方后台成功
|
||
Execute Command wget -t 1 --spider --timeout=10 -o /testFW.txt ${ChkFWDesIP}:${ChkFWDesPort}
|
||
Log 验证防火墙端口是否开启
|
||
Sleep 15s
|
||
${py_status} Execute Command grep "connected." /testFW.txt | wc -l
|
||
Run Keyword If ${py_status}>0 Log 防火墙策略IP与端口配置一致,验证通过
|
||
... ELSE Fail 防火墙策略验证失败
|
||
Comment Execute Command rm -rf /testFW.txt
|
||
Close Connection
|
||
Sleep 5s
|
||
|
||
防火墙端口验证失败
|
||
[Arguments] ${AG_IP} ${AG_ROOT} ${AG_PWD} ${ChkFWDesIP} ${ChkFWDesPort}
|
||
Open Connection ${AG_IP}
|
||
SSHLibrary.Login ${AG_ROOT} ${AG_PWD}
|
||
Log 登录黑方后台成功
|
||
Execute Command wget -t 1 --spider --timeout=10 -o /testFW.txt ${ChkFWDesIP}:${ChkFWDesPort}
|
||
Log 验证防火墙端口是否开启
|
||
Sleep 15s
|
||
${py_status} Execute Command grep "failed: Connection timed out." /testFW.txt | wc -l
|
||
Run Keyword If ${py_status}>0 Log 防火墙策略IP与端口连接超时
|
||
... ELSE Fail 防火墙策略验证失败
|
||
Comment Execute Command rm -rf /testFW.txt
|
||
Close Connection
|
||
Sleep 5s
|
||
|
||
删除防火墙策略
|
||
[Arguments] ${FWPanelname}
|
||
元素点击 //td[@data-field="name"]/div[text()="${FWPanelname}"]/../../td/div/span[text()="删除"] 点击防火墙策略删除按钮 定位防火墙策略删除失败
|
||
sleep 2s
|
||
元素点击 ${Button_FireWall_Del_Can} 点击防火墙策略删除确认框取消按钮 定位防火墙策略删除确认框取消按钮失败
|
||
元素点击 //td[@data-field="name"]/div[text()="${FWPanelname}"]/../../td/div/span[text()="删除"] 点击防火墙策略删除按钮 定位防火墙策略删除失败
|
||
sleep 2s
|
||
元素点击 ${Button_FireWall_Del_Fin} 点击防火墙策略删除确认框确认按钮 定位防火墙策略删除确认框确认按钮失败
|
||
元素点击 ${Button_FireWallPanel_add_Ok_Confirm} 点击弹窗确认按钮 定位弹窗确认按钮失败
|
||
|
||
设置ntp服务器
|
||
[Arguments] ${NTP_IP}
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
元素点击 ${Default_BC_Node} 点击介质节点管理下的默认黑方卡片 定位默认黑方节点卡片失败
|
||
元素点击 ${Node_Setting} 点击切换到节点设置页面 定位节点设置页面失败
|
||
元素点击 ${Path_Button_SetNTP} 点击更改按钮 定位更改按钮失败
|
||
元素输入 ${Path_Input_NTPServer} ${NTP_IP} 定位服务器时间输入框失败
|
||
元素点击 ${Path_Button_SetNTPOK} 点击确定更改按钮 定位确定更改按钮失败
|
||
元素点击 ${Confirm_Twice} 点击确定完成重启 定位二次确定弹窗失败
|
||
sleep 2s
|
||
关闭浏览器
|
||
sleep 300s
|
||
Open Connection ${Plantform_BC_IP_Excep}
|
||
SSHLibrary.Login ${Plantform_BC_Name} ${Plantform_BC_PWD}
|
||
Log 黑方连接成功
|
||
FOR ${n} IN RANGE 10
|
||
Execute Command systemctl status unabackup > /bc_status.txt
|
||
${bc_status} Execute Command grep "unabackup start success" /bc_status.txt
|
||
${bc_status_length} Get Length ${bc_status}
|
||
Run Keyword If ${bc_status_length}>0 Exit For Loop
|
||
... ELSE Log 黑方服务还未启动
|
||
Sleep 30s
|
||
END
|
||
Run Keyword If ${bc_status_length}==0 Fail
|
||
... ELSE Log 黑方服务已启动
|
||
Close Connection
|
||
sleep 2s
|
||
|
||
时间比对
|
||
[Arguments] ${BC_IP} ${BC_ROOT} ${BC_PWD} ${NTP_IP} ${NTP_ROOT} ${NTP_PWD}
|
||
Open Connection ${BC_IP}
|
||
SSHLibrary.Login ${BC_ROOT} ${BC_PWD}
|
||
Log 登录黑方后台成功
|
||
${BC_TIME} Execute Command date +%s
|
||
Log 黑方当前时间戳为:${BC_TIME}
|
||
Close Connection
|
||
Open Connection ${NTP_IP}
|
||
SSHLibrary.Login ${NTP_ROOT} ${NTP_PWD}
|
||
Log 登录黑方后台成功
|
||
${NTP_TIME} Execute Command date +%s
|
||
Log 时间同步服务器当前时间戳为:${BC_TIME}
|
||
${TIME_DIF} Evaluate ${NTP_TIME}-${BC_TIME}
|
||
Run Keyword If ${TIME_DIF}<=3 Log 时间同步服务器与黑方时间同步正常,测试通过
|
||
... ELSE Fail 时间同步服务器与黑方时间误差超过3秒
|
||
Close Connection
|
||
sleep 2s
|
||
|
||
修改服务器时间为当前时间
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
元素点击 ${Default_BC_Node} 点击介质节点管理下的默认黑方卡片 定位默认黑方节点卡片失败
|
||
元素点击 ${Node_Setting} 点击切换到节点设置页面 定位节点设置页面失败
|
||
元素点击 ${Path_Button_SetTime} 点击更改按钮 定位更改按钮失败
|
||
元素点击 ${Path_Input_ServerTime} 点击服务器时间输入框 定位服务器时间输入框失败
|
||
元素点击 ${Laydate-btns-now} 点击服务器时间输入框现在按钮 定位服务器时间输入框现在按钮失败
|
||
${status}= BuiltIn.Run Keyword And Return Status Wait Until Element Is Visible ${Laydate-btns-Confirm} 2s
|
||
BuiltIn.Run Keyword If '${status}'== 'True' 元素点击 ${Laydate-btns-Confirm} 点击关闭提示信息框 定位修改时间影响提示框失败
|
||
元素点击 ${Path_Button_SetTimeOK} 点击确定按钮 定位确定修改按钮失败
|
||
元素点击 ${Path_Button_ServerAlertOK} 点击确定按钮 定位确定按钮失败
|
||
|
||
清理NTP服务器
|
||
[Arguments] ${BC_IP} ${BC_ROOT} ${BC_PWD}
|
||
Open Connection ${BC_IP}
|
||
SSHLibrary.Login ${BC_ROOT} ${BC_PWD}
|
||
Log 登录黑方后台成功
|
||
Execute Command /unary/unabackup/bin/ntpset.sh -d
|
||
Log 清理时间同步服务器
|
||
sleep 10s
|
||
Close Connection
|
||
|
||
根据作业ID获取storageid
|
||
[Arguments] ${ip} ${user} ${pwd}
|
||
Open Connection ${ip}
|
||
SSHLibrary.Login ${user} ${pwd}
|
||
${storageidAll} Execute Command mysql -uunadba -p1223Bc@2008 -e "select storageid from unary.tbl_backupset where bktaskid='${taskID}'";
|
||
Set Suite Variable ${storageidAll}
|
||
${storageid} Set Variable ${storageidAll[10:42]}
|
||
Set Global Variable ${storageid}
|
||
Comment Return From Keyword ${storageid}
|
||
Log storageid信息获取完毕
|
||
Close Connection
|
||
|
||
根据storageid获取guid前5位
|
||
[Arguments] ${ip} ${user} ${pwd}
|
||
Open Connection ${ip}
|
||
SSHLibrary.Login ${user} ${pwd}
|
||
Execute Command /unary/unabackup/bin/mongo -uunary -pmonGo1223 mydb --eval 'db.objdb.find({"parentid":"${storageid}"})' > /test.txt
|
||
log 输出结果放入test.txt文件
|
||
${guidbig} Execute Command awk 'NR==5{print}' /test.txt |cut -c 59-63
|
||
log 获取guid前5位
|
||
${guid} Evaluate "${guidbig}".lower()
|
||
log guid字母改为小写
|
||
Set Global Variable ${guid}
|
||
Execute Command rm -rf test.txt
|
||
log 删除文件test.txt
|
||
Comment Return From Keyword ${guid}
|
||
Log guid信息获取完毕
|
||
Close Connection
|
||
|
||
获取备份作业taskID
|
||
[Arguments] ${agent_name}
|
||
元素点击 ${Timed_DataProtect} 点击进入定时数据保护页面 定位定时数据保护失败
|
||
元素点击 xpath=//span[text()="${agent_name}"] 点击选择代理 定位代理所在位置失败
|
||
元素点击 ${Task} 点击进入作业页面 定位作业页面失败
|
||
元素点击 ${taskAction} 点击作业操作按钮 定位作业操作按钮失败
|
||
元素点击 ${taskActionDetail} 点击作业详情按钮 定位作业详情按钮失败
|
||
${taskID}= Get Text ${taskIDweizhi}
|
||
Set Global Variable ${taskID}
|
||
元素点击 ${closeDetail} 点击关闭详情页面按钮 定位关闭详情页面按钮失败
|
||
Comment Return From Keyword ${taskID}
|
||
Log taskID获取成功
|
||
|
||
开关存储保护
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
元素点击 ${Default_BC_Node} 点击介质节点管理下的默认黑方控制台 定位默认黑方节点控制台失败
|
||
元素点击 ${securityConfiguration} 点击安全配置按钮 安全配置按钮定位失败
|
||
sleep 3s
|
||
元素点击 ${StoreProtect} 点击存储保护按钮 存储保护按钮定位失败
|
||
sleep 5s
|
||
|
||
根据storageid获取deviceid
|
||
[Arguments] ${ip} ${user} ${pwd}
|
||
Open Connection ${ip}
|
||
SSHLibrary.Login ${user} ${pwd}
|
||
Execute Command /unary/unabackup/bin/mongo -uunary -pmonGo1223 mydb --eval 'db.objdb.find({"parentid":"${storageid}"})' >> test.txt
|
||
log 输出结果放入test.txt文件
|
||
${deviceid} Execute Command awk 'NR==5{print}' test.txt |cut -c 180-187
|
||
log 获取deviceid
|
||
Set Global Variable ${deviceid}
|
||
Execute Command rm -rf test.txt
|
||
log 删除文件test.txt
|
||
Comment Return From Keyword ${deviceid}
|
||
Log guid信息获取完毕
|
||
Close Connection
|
||
|
||
删除指定备份集
|
||
[Arguments] ${ip} ${user} ${pwd}
|
||
Open Connection ${ip}
|
||
SSHLibrary.Login ${user} ${pwd}
|
||
run keyword and return status 执行删除命令 ${deviceid} ${guid}
|
||
|
||
判断备份集删除成功
|
||
${status} Execute Command find /mdstools/${deviceid}/ -name ${guid}
|
||
${length}= Get Length ${status}
|
||
Should Be Equal As Strings ${length} 0
|
||
log 备份集删除成功
|
||
|
||
执行删除命令
|
||
[Arguments] ${deviceid} ${guid}
|
||
Execute Command rm -rf /mdstools/${deviceid}/${guid}
|
||
|
||
判断备份集删除失败
|
||
${status} Execute Command find /mdstools/${deviceid}/ -name ${guid}
|
||
${length}= Get Length ${status}
|
||
Should not Be Equal As Strings ${length} 0
|
||
log 备份集删除失败
|
||
|
||
判断备份集删除结果
|
||
[Arguments] ${deleteStatus}
|
||
Run Keyword If "${deleteStatus}"=="1" 判断备份集删除成功
|
||
... ELSE IF "${deleteStatus}"=="0" 判断备份集删除失败
|
||
|
||
备份集立即清理
|
||
sleep 5s
|
||
元素点击 ${nowcheck} 点击立即执行成功 点击立即执行失败
|
||
元素点击 ${confirm} 点击确定成功 点击确定失败
|
||
元素点击 ${confirmagain} 点击确认成功 点击确认失败
|
||
|
||
筛选日志
|
||
[Arguments] ${level} ${ip} ${user} ${content} # 日志级别|IP|用户|日志内容
|
||
[Documentation] 功能:以日志等级,ip,用户,内容为筛选条件进行筛选
|
||
...
|
||
... 使用方法:筛选日志 \ 日志等级 \ ip \ 用户 \ 内容
|
||
...
|
||
... 变量:${level} ${ip} \ ${user} \ ${content}
|
||
元素点击 ${Log_Operate} 点击进入到操作日志界面 定位操作日志界面失败
|
||
Log 校验日志级别
|
||
Run Keyword If '${level}'=='${Log_InfoLevel}' Select From List By Label ${Log_Level_Select} ${level}
|
||
... ELSE IF '${level}'=='${Log_AlarmLevel}' Select From List By Label ${Log_Level_Select} ${level}
|
||
... ELSE IF '${level}'=='${Log_FaultLevel}' Select From List By Label ${Log_Level_Select} ${level}
|
||
... ELSE IF '${level}'=='全部级别' Select From List By Label ${Log_Level_Select} ${level}
|
||
Run Keyword If '${level}'=='${Log_InfoLevel}' Wait Until Element Is Visible xpath=//td[text()="${Log_InfoLevel}"] 5s
|
||
... ELSE IF '${level}'=='${Log_AlarmLevel}' Wait Until Element Is Visible xpath=//td[text()="${Log_AlarmLevel}"] 5s
|
||
... ELSE IF '${level}'=='${Log_FaultLevel}' Wait Until Element Is Visible xpath=//td[text()="${Log_FaultLevel}"] 5s
|
||
... ELSE IF '${level}'=='全部级别' Log 不校验日志级别
|
||
Log 校验IP地址
|
||
Run Keyword If '${ip}'!='0' Run Keywords 元素输入 ${ELE_IPFilter} ${ip} 定位IP输入框失败
|
||
... AND Press Keys ${ELE_IPFilter} ENTER
|
||
... ELSE IF '${ip}'=='0' Clear Element Text ${ELE_IPFilter}
|
||
Run Keyword If '${ip}'!='0' Run Keywords Wait Until Element Is Visible xpath=//td[text()="${ip}"] 5s
|
||
... AND Log IP校验完毕
|
||
... ELSE IF '${ip}'=='0' Log 不校验IP地址
|
||
Log 校验日志来源
|
||
Run Keyword If '${user}'!='0' Run Keywords 元素输入 ${ELE_UserFilter} ${user} 定位用户输入框失败
|
||
... AND Press Keys ${ELE_UserFilter} ENTER
|
||
... ELSE IF '${user}'=='0' Clear Element Text ${ELE_UserFilter}
|
||
Run Keyword If '${user}'!='0' Run Keywords Wait Until Element Is Visible xpath=//td[text()="${user}"] 5s
|
||
... AND Log 用户校验完毕
|
||
... ELSE IF '${user}'=='0' Log 不校验产生日志的用户
|
||
Log 校验日志内容
|
||
Run Keyword If '${content}'!='0' Run Keywords 元素输入 ${ELE_ContentFilter} ${content} 定位内容输入框失败
|
||
... AND Press Keys ${ELE_ContentFilter} ENTER
|
||
... ELSE IF '${content}'=='0' Clear Element Text ${ELE_ContentFilter}
|
||
Run Keyword If '${content}'!='0' Run Keywords Wait Until Element Is Visible xpath=//td[contains(text(),"${content}")] 5s
|
||
... AND Log 内容校验完毕
|
||
... ELSE IF '${content}'=='0' Log 不校验日志内容
|
||
Log 日志功能校验完毕
|
||
|
||
筛选日志_级别
|
||
[Arguments] ${level}=‘全部级别’ # 日志级别
|
||
[Documentation] 功能:以日志级别为筛选条件进行筛选
|
||
...
|
||
... 使用方法:筛选日志_级别 \ 日志级别
|
||
...
|
||
... 变量:${level}
|
||
元素点击 ${Log_Operate} 点击进入到操作日志界面 定位操作日志界面失败
|
||
Log 校验日志级别
|
||
Run Keyword If '${level}'=='${Log_InfoLevel}' Select From List By Label ${Log_Level_Select} ${level}
|
||
... ELSE IF '${level}'=='${Log_AlarmLevel}' Select From List By Label ${Log_Level_Select} ${level}
|
||
... ELSE IF '${level}'=='${Log_FaultLevel}' Select From List By Label ${Log_Level_Select} ${level}
|
||
... ELSE IF '${level}'=='全部级别' Select From List By Label ${Log_Level_Select} ${level}
|
||
Run Keyword If '${level}'=='${Log_InfoLevel}' Wait Until Element Is Visible xpath=//td[text()="${Log_InfoLevel}"] 5s
|
||
... ELSE IF '${level}'=='${Log_AlarmLevel}' Wait Until Element Is Visible xpath=//td[text()="${Log_AlarmLevel}"] 5s
|
||
... ELSE IF '${level}'=='${Log_FaultLevel}' Wait Until Element Is Visible xpath=//td[text()="${Log_FaultLevel}"] 5s
|
||
... ELSE IF '${level}'=='全部级别' Log 不校验日志级别
|
||
|
||
筛选日志_用户
|
||
[Arguments] ${user}=0 # 用户
|
||
[Documentation] 功能:以用户名为筛选条件进行筛选
|
||
...
|
||
... 使用方法:筛选日志_用户 \ 用户名
|
||
...
|
||
... 变量:${user}
|
||
元素点击 ${Log_Operate} 点击进入到操作日志界面 定位操作日志界面失败
|
||
Log 校验用户日志
|
||
Run Keyword If '${user}'!='0' Run Keywords 元素输入 ${ELE_UserFilter} ${user} 定位用户输入框失败
|
||
... AND Press Keys ${ELE_UserFilter} ENTER
|
||
... ELSE IF '${user}'=='0' Clear Element Text ${ELE_UserFilter}
|
||
Run Keyword If '${user}'!='0' Run Keywords Wait Until Element Is Visible xpath=//td[text()="${user}"] 5s
|
||
... AND Log 用户校验完毕
|
||
... ELSE IF '${user}'=='0' Log 不校验产生日志的用户
|
||
|
||
筛选日志_内容
|
||
[Arguments] ${content}=0 # 日志内容
|
||
[Documentation] 功能:以日志内容为筛选条件进行筛选
|
||
...
|
||
... 使用方法:筛选日志_内容 \ 日志内容
|
||
...
|
||
... 变量:${content}
|
||
元素点击 ${Log_Operate} 点击进入到操作日志界面 定位操作日志界面失败
|
||
Log 校验日志内容
|
||
Run Keyword If '${content}'!='0' Run Keywords 元素输入 ${ELE_ContentFilter} ${content} 定位内容输入框失败
|
||
... AND Press Keys ${ELE_ContentFilter} ENTER
|
||
... ELSE IF '${content}'=='0' Clear Element Text ${ELE_ContentFilter}
|
||
Run Keyword If '${content}'!='0' Run Keywords Wait Until Element Is Visible xpath=//td[contains(text(),"${content}")] 5s
|
||
... AND Log 内容校验完毕
|
||
... ELSE IF '${content}'=='0' Log 不校验日志内容
|
||
|
||
筛选日志_IP
|
||
[Arguments] ${ip}=0 # IP
|
||
[Documentation] 功能:以ip为筛选条件进行筛选
|
||
...
|
||
... 使用方法:筛选日志_ip \ ip地址
|
||
...
|
||
... 变量:${ip}
|
||
元素点击 ${Log_Operate} 点击进入到操作日志界面 定位操作日志界面失败
|
||
Log 校验IP地址
|
||
Run Keyword If '${ip}'!='0' Run Keywords 元素输入 ${ELE_IPFilter} ${ip} 定位IP输入框失败
|
||
... AND Press Keys ${ELE_IPFilter} ENTER
|
||
... ELSE IF '${ip}'=='0' Clear Element Text ${ELE_IPFilter}
|
||
Run Keyword If '${ip}'!='0' Run Keywords Wait Until Element Is Visible xpath=//td[text()="${ip}"] 5s
|
||
... AND Log IP校验完毕
|
||
... ELSE IF '${ip}'=='0' Log 不校验IP地址
|
||
|
||
锁定编辑框合法校验
|
||
[Documentation] 功能:校验锁定时间设置输入框合法性
|
||
...
|
||
... 使用方法: 锁定编辑框合法性校验
|
||
...
|
||
... 变量:无
|
||
元素点击 ${Sec_Policy} 进入sec管理员的安全配置 定位安全策略配置栏失败
|
||
Sleep 5s
|
||
设置超时时间 ABC
|
||
超时设置失败
|
||
设置超时时间 测试
|
||
超时设置失败
|
||
设置超时时间 @@
|
||
超时设置失败
|
||
设置超时时间 1.1
|
||
超时设置失败
|
||
|
||
页面锁定设置
|
||
[Arguments] ${Lock_Time} # 锁定时间
|
||
[Documentation] 功能:页面锁定时间设置
|
||
...
|
||
... 使用方法:页面锁定设置 \ 锁定时间(分钟)
|
||
...
|
||
... 变量:${Lock_Time}
|
||
设置超时时间 ${Lock_Time}
|
||
超时设置成功
|
||
Log 设置超时时间为${Lock_Time}分钟
|
||
${Sleep_Time}= BuiltIn.Evaluate ${Lock_Time}*60
|
||
Sleep ${Sleep_Time}s
|
||
Wait Until Element Is Visible ${Input_Lock_Name} 5s 页面锁定失败
|
||
元素输入 ${Input_Lock_Pwd} ${WebPWD} 定位解锁密码输入框失败
|
||
元素点击 ${Unlock_Button} 点击解锁页面 定位页面解锁按钮失败
|
||
设置超时时间 0
|
||
超时设置成功
|
||
Log 解除页面锁定限制
|
||
|
||
启动集成代理
|
||
元素点击 ${Active_Agent} 点击启用定时备份代理按钮 定位启用定时备份代理失败
|
||
元素点击 ${Choice_Vm} 点击勾选VM组件 定位VM组件失败
|
||
元素点击 ${Add_Agent} 点击添加VM组件 定位添加按钮失败
|
||
元素点击 ${Finish_Add_Agent} 点击确定完成组件选择 定位确定启用集成代理失败
|
||
Sleep 120s
|
||
元素点击 ${Auth_Confirm} 确认开启代理成功 定位二次确认按钮失败
|
||
元素点击 ${Close_Log} 关闭日志弹窗 定位日志弹窗失败
|
||
Sleep 5s
|
||
Reload Page
|
||
Wait Until Element Is Visible ${BC_Agent_Online} 5s 代理启动失败
|
||
Log 集成代理启动成功
|
||
|
||
关闭集成代理
|
||
元素点击 ${Stop_Agent} 点击关闭集成代理按钮 定位关闭集成代理失败
|
||
Sleep 60s
|
||
元素点击 ${Auth_Confirm} 确认开启代理成功 定位二次确认按钮失败
|
||
元素点击 ${Close_Log} 关闭日志弹窗 定位日志弹窗失败
|
||
Sleep 5s
|
||
Reload Page
|
||
Wait Until Element Is Visible ${BC_Agent_Offline} 5s 代理关闭失败
|
||
Log 集成代理关闭成功
|
||
|
||
集成代理操作
|
||
[Arguments] ${do} # 操作值
|
||
[Documentation] 功能:开启或关闭集成代理
|
||
...
|
||
... 使用方法:集成代理操作 \ 开启/关闭
|
||
...
|
||
... 变量:${do} ==0 \ 启动集成代理
|
||
... ${do}==1 关闭集成代理
|
||
元素点击 ${System_Config} 进入系统设置栏 定位系统设置栏失败
|
||
循环点击 ${Business_Assistant} ${Integrate_Agent_Manage}
|
||
元素点击 ${Integrate_Agent_Manage} 进入集成代理管理栏 定位集成代理管理栏失败
|
||
Run Keyword If ${do}==0 启动集成代理
|
||
... ELSE IF ${do}==1 关闭集成代理
|
||
|
||
SSH服务开启关闭
|
||
[Arguments] ${ip} ${user} ${pwd} # 黑方ip|用户名|用户密码
|
||
[Documentation] 功能:开启关闭SSH服务,并验证服务开启关闭后的状态是否正确
|
||
...
|
||
... 使用方法:SSH服务开启关闭(默认SSH服务需要开启)
|
||
...
|
||
... 变量:无
|
||
Open Connection ${ip}
|
||
SSHLibrary.Login ${user} ${pwd}
|
||
Execute Command service iptables start
|
||
Close Connection
|
||
元素点击 ${Storage} 进入存储管理页面 定位存储管理栏失败
|
||
元素点击 ${Node_Manage} 点击进入到介质节点管理页面 定位介质节点管理页面失败
|
||
元素点击 ${Default_BC_Node} 点击介质节点管理下的默认黑方卡片 定位默认黑方节点卡片失败
|
||
元素点击 ${securityConfiguration} 点击安全配置按钮 安全配置按钮定位失败
|
||
元素点击 ${SSH_Switch} 点击关闭SSH服务 定位SSH开关失败
|
||
Sleep 10s
|
||
SSH服务连接验证 ${N}
|
||
元素点击 ${SSH_Switch} 点击开启SSH服务 定位SSH开关失败
|
||
Sleep 10s
|
||
SSH服务连接验证 ${Y}
|
||
|
||
SSH服务超时设置
|
||
[Arguments] ${ip} ${user} ${pwd} ${ssh_time} # 黑方IP|黑方用户名|黑方密码|SSH超时时间
|
||
[Documentation] 功能:设置SSH超时连接,验证超时后是否无法执行远程命令
|
||
...
|
||
... 使用方法:SSH服务超时设置
|
||
...
|
||
... 变量:无
|
||
元素点击 ${securityConfiguration} 进入安全配置页面 定位安全配置页面失败
|
||
元素点击 ${Button_Change_Time} 点击更改开始编辑SSH连接超时时间 定位更改SSH连接时间失败
|
||
元素输入 ${Input_SSH_Time} ${ssh_time} 定位SSH超时时间输入框失败
|
||
Set Suite Variable ${ssh_time}
|
||
元素点击 ${Change_SSH_Confirm} 点击确定更改SSH超时连接时间 定位SSH超时连接时间失败
|
||
Comment 元素点击 ${confirmagain} SSH时间配置成功 定位SSH超时配置时间弹窗失败
|
||
SSH服务超时验证
|
||
Open Connection ${ip}
|
||
SSHLibrary.Login ${user} ${pwd}
|
||
Execute Command service iptables stop
|
||
Close Connection
|
||
|
||
SSH服务连接验证
|
||
[Arguments] ${status} # 连接结果判断
|
||
[Documentation] 功能:判断当前SSH是否可以连接
|
||
...
|
||
... 使用方法:SSH服务连接验证
|
||
...
|
||
... 变量:${status}
|
||
... 状态为1表示ssh可连接,${result}表示连接结果,True表示连接成功,False表示连接失败
|
||
Open Connection ${Plantform_BC_IP}
|
||
${result}= BuiltIn.Run Keyword And Return Status SSHLibrary.Login ${Plantform_BC_Name} ${Plantform_BC_PWD}
|
||
BuiltIn.Run Keyword If ${status}==1 and ${result}==True Log SSH当前服务开启中
|
||
... ELSE IF ${status}==0 and ${result}==False Log SSH当前服务关闭中
|
||
... ELSE Fail SSH服务当前异常!
|
||
|
||
SSH服务超时验证
|
||
[Documentation] 功能:验证超时后无法执行远程命令
|
||
...
|
||
... 使用方法:SSH服务超时验证
|
||
...
|
||
... 变量:无
|
||
Open Connection ${Plantform_BC_IP}
|
||
SSHLibrary.Login root 2008Bc1223!@#
|
||
${ssh_time} Evaluate ${ssh_time}+5
|
||
Sleep ${ssh_time}s
|
||
${result}= BuiltIn.Run Keyword And Return Status write ifconfig
|
||
BuiltIn.Run Keyword If ${result}==False Log ssh超时设置成功
|
||
... ELSE Fail SSH超时设置失败
|
||
|
||
新建路由_网络
|
||
[Arguments] ${Input_IP} ${Input_Netmask} ${Input_Gateway} ${Input_inter} # 目的地IP|子网掩码|网关|网卡接口
|
||
[Documentation] 功能:创建路由时校验输入为空会报错;输入合法的IP、子网掩码、网关、网卡接口后会创建成功
|
||
...
|
||
... 参数:IP、子网掩码、网关、网卡接口
|
||
元素点击 ${Create_Route} 点击新建路由按钮 定位新建路由按钮失败
|
||
Wait Until Element Is Visible ${Select_IPV4} 60s 打开新建路由页面失败
|
||
元素点击 ${Btn_Addroute} 点击确定按钮成功 定位确定按钮失败
|
||
Wait Until Element Is Visible ${Create_Route_Error} 60s 报错窗口弹出失败
|
||
元素点击 ${Btn_Define} 点击二次确定按钮 定位二次确定按钮失败
|
||
log 验证必选项输入为空时,点击确定按钮会报错
|
||
元素输入 ${Route_Destination} ${Input_IP} 输入目的地IP失败
|
||
元素输入 ${Route_Mask} ${Input_Netmask} 输入子网掩码失败
|
||
元素输入 ${Route_Gateway} ${Input_Gateway} 输入网关失败
|
||
元素输入 ${Route_Interface} ${Input_inter} 输入接口失败
|
||
元素点击 ${Btn_Addroute} 点击确定按钮成功 定位确定按钮失败
|
||
元素点击 ${Btn_Define} 点击二次确定按钮 定位二次确定按钮失败
|
||
log 验证输入合法地址时,路由创建成功
|
||
|
||
新建路由_主机
|
||
[Arguments] ${Input_IP} ${Input_Gateway} ${Input_inter} # 目的地IP|网关|网卡接口
|
||
元素点击 ${Create_Route} 点击新建路由按钮 定位新建路由按钮失败
|
||
Wait Until Element Is Visible ${Select_IPV4} 60s 打开新建路由页面失败
|
||
元素点击 ${Select_Route_Destination} 打开目的地选项 定位目的地选项失败
|
||
元素点击 ${Option_Host} 选择主机 定位主机选项失败
|
||
元素点击 ${Btn_Addroute} 点击确定按钮成功 定位确定按钮失败
|
||
Wait Until Element Is Visible ${Create_Route_Error} 60s 报错窗口弹出失败
|
||
元素点击 ${Btn_Define} 点击二次确定按钮 定位二次确定按钮失败
|
||
log 验证必选项输入为空时,点击确定按钮会报错
|
||
元素输入 ${Route_Destination} ${Input_IP} 输入目的地IP失败
|
||
元素输入 ${Route_Gateway} ${Input_Gateway} 输入网关失败
|
||
元素输入 ${Route_Interface} ${Input_inter} 输入接口失败
|
||
元素点击 ${Btn_Addroute} 点击确定按钮成功 定位确定按钮失败
|
||
元素点击 ${Btn_Define} 点击二次确定按钮 定位二次确定按钮失败
|
||
log 验证输入合法地址时,路由创建成功
|
||
|
||
新建路由_默认网关
|
||
[Arguments] ${GATEWAY} # 网关
|
||
元素点击 ${Create_Route} 点击新建路由按钮 定位新建路由按钮失败
|
||
Wait Until Element Is Visible ${Select_IPV4} 60s 打开新建路由页面失败
|
||
元素点击 ${Select_Route_Destination} 打开目的地选项 定位目的地选项失败
|
||
元素点击 ${Option_Gateway} 选择默认网关 定位默认网关选项失败
|
||
元素点击 ${Btn_Addroute} 点击确定按钮成功 定位确定按钮失败
|
||
Wait Until Element Is Visible ${Create_Route_Error} 60s 报错窗口弹出失败
|
||
元素点击 ${Btn_Define} 点击二次确定按钮 定位二次确定按钮失败
|
||
log 验证必选项输入为空时,点击确定按钮会报错
|
||
元素输入 ${Route_Gateway} ${GATEWAY} 输入网关失败
|
||
元素点击 ${Btn_Addroute} 点击确定按钮成功 定位确定按钮失败
|
||
元素点击 ${Btn_Define} 点击二次确定按钮 定位二次确定按钮失败
|
||
log 验证输入合法地址时,路由创建成功
|
||
|
||
删除路由操作
|
||
[Arguments] ${Route_IP} # 目的地IP
|
||
[Documentation] 功能:删除指定路由
|
||
...
|
||
... 参数:目的地IP
|
||
Wait Until Page Contains Element ${H5_Route} 60s 进入路由配置页面失败
|
||
元素点击 xpath=//td[@align="center" and contains(text(),"${Route_IP}")]/../td[5]/div/button 点击删除按钮成功 定位删除按钮失败
|
||
元素点击 ${Btn_Del_Route} 点击确定删除成功 定位确定删除按钮失败
|
||
元素点击 ${Btn_Define} 点击二次确定按钮 定位二次确定按钮失败
|
||
|
||
新建告警规则
|
||
[Arguments] ${AlarmRule_Name} ${AlarmRule_Level} ${AlarmRule_Type1} ${AlarmRule_Type2} ${AlarmRule_Limit} ${AlarmRule_Mail} # 报警规则名称|报警规则级别|报警规则类型1|报警规则类型2|报警抑制规则|接收邮箱
|
||
[Documentation] 功能:新建邮箱报警规则
|
||
...
|
||
... 参数:报警规则名称|报警规则级别|报警规则类型1|报警规则类型2|报警抑制规则|接收邮箱
|
||
进入报警规则设置页面
|
||
进入添加规则页面
|
||
设置规则名称 ${AlarmRule_Name}
|
||
设置过滤规则级别 ${AlarmRule_Level}
|
||
设置过滤规则类型 ${AlarmRule_Type1} ${AlarmRule_Type2}
|
||
设置过滤规则抑制规则 ${AlarmRule_Limit}
|
||
设置接收邮箱 ${AlarmRule_Mail}
|
||
确认添加报警规则成功
|
||
|
||
发送邮箱环境还原_取消勾选SMTP
|
||
元素点击 ${Email_Config} 点击修改发送邮箱配置 定位发送邮箱配置立即修改按钮失败
|
||
Wait Until Element Is Visible ${Path_Input_SentEmailServer} 10s
|
||
元素输入 ${Path_Input_SentEmailPassword_Password} ${empty} SMTP密码输入空失败
|
||
元素点击 ${Enable_SMTP} 取消启用SMTP 定位SMTP勾选框失败
|
||
元素点击 ${Confirm_Change_Email} 点击确定按钮 定位确定按钮失败
|
||
Wait Until Page Contains Element ${Path_AlertInfo} 30s
|
||
${AlertMessage}= Get Text ${Path_AlertInfo}
|
||
Should Be Equal As Strings ${AlertMessage} ${Res_Text_SetSuccess}
|
||
元素点击 ${Path_Button_Alert_OK} 点击确定按钮 定位确定按钮失败
|
||
Log 发送邮箱环境已还原为取消勾选SMTP
|
||
|
||
开启防火墙
|
||
[Arguments] ${BC_IP} ${BC_ROOT} ${BC_PWD} # 黑方IP|黑方后台登录名|黑方后台登录密码
|
||
Open Connection ${BC_IP}
|
||
SSHLibrary.Login ${BC_ROOT} ${BC_PWD}
|
||
Log 登录黑方后台成功
|
||
Execute Command service iptables start
|
||
Log 启动防火墙
|
||
Close Connection
|
||
|
||
生成告警信息
|
||
[Arguments] ${BC_IP} ${BC_ROOT} ${BC_PWD}
|
||
Open Connection ${BC_IP}
|
||
SSHLibrary.Login ${BC_ROOT} ${BC_PWD}
|
||
Log 登录黑方后台成功
|
||
Execute Command nohup java -jar /opt/bksoft/ubackup/lib/cn.com.unary.testalarm-1.0.0.jar 127.0.0.1 auditlog 2 4 5 MDS "osviserver process is restarted" >> mdsdeamon.log 2>&1 &
|
||
Log 生成告警信息
|
||
Close Connection
|
||
|
||
清空黑方操作日志
|
||
[Arguments] ${ip} ${name} ${pwd}
|
||
Connect To Database Using Custom Params pymysql host='${ip}', port=${BCPort}, user='${BCUser}', passwd='${BCPwd}', db='unary', charset= 'utf8'
|
||
Execute Sql String use unary;
|
||
Execute Sql String delete from tbl_log;
|
||
Disconnect From Database
|
||
Log 断开数据库连接
|
||
|
||
备份参数模板合法性校验
|
||
元素点击 ${System_Config} 进入系统设置页面 定位系统设置失败
|
||
元素点击 ${Policy_Template} 点击系统管理页面 定位系统管理栏失败
|
||
Log 模板名称校验
|
||
元素点击 ${Confirm_PolicyTemplate} 点击确定按钮,进行模板名称置空校验 定位策略模板确定按钮定位失败
|
||
Wait Until Element Is Visible ${Button_Error_Confirm} 5s 定位策略名为空弹窗失败
|
||
元素点击 ${Button_Error_Confirm} 点击确定关闭错误提示弹窗 定位错误提示弹窗确定按钮失败
|
||
Log 策略模板置空校验成功,开始校验特殊字符
|
||
元素点击 ${Storage_Switch} 点击存储路径开关,至少开启一个模板选项 存储模板选项失败
|
||
元素输入 ${DPM_PT_Name} ${Special_TXT} 定位策略名输入框失败
|
||
元素点击 ${Confirm_PolicyTemplate} 点击确定按钮,进行模板名称特殊字符校验 定位策略模板确定按钮定位失败
|
||
Wait Until Element Is Visible ${Error_Character_TemplateName} 5s 定位策略名字内容符违规弹窗失败
|
||
元素点击 ${Button_Error_Confirm} 点击确定关闭错误提示弹窗 定位错误提示弹窗确定按钮失败
|
||
元素点击 ${Reset_PolicyTemplate} 点击重置输入 定位重置按钮失败
|
||
Sleep 2s
|
||
Log 策略模板名称输入特殊字符校验成功,开始校验存储选项
|
||
元素输入 ${DPM_PT_Name} ${English_TXT} 定位策略名输入框失败
|
||
元素点击 ${Storage_Switch} 点击存储路径开关,至少开启一个模板选项 存储模板选项失败
|
||
元素点击 ${Storage_Dedup} 点击勾选重删,但不勾选重删介质 定位重删介质勾选框失败
|
||
元素点击 ${Confirm_PolicyTemplate} 点击确定按钮,重删空值校验 定位策略模板确定按钮定位失败
|
||
Wait Until Element Is Visible ${Error_Content} 5s 定位策略内容校验弹窗失败
|
||
元素点击 ${Button_Error_Confirm} 点击确定关闭错误提示弹窗 定位错误提示弹窗确定按钮失败
|
||
元素点击 ${Reset_PolicyTemplate} 点击重置输入 定位重置按钮失败
|
||
Sleep 2s
|
||
Log 策略模板重删选项置空校验成功,开始校验保留时间选项
|
||
元素输入 ${DPM_PT_Name} ${English_TXT} 定位策略名输入框失败
|
||
元素点击 ${Keep_Switch} 开启备份集保留时间选项 定位备份集保留时间开关失败
|
||
元素点击 ${Confirm_PolicyTemplate} 点击确定按钮,按日保留时间输入置空 定位策略模板确定按钮定位失败
|
||
Wait Until Element Is Visible ${Error_Content} 5s 定位策略名字内容符违规弹窗失败
|
||
元素点击 ${Button_Error_Confirm} 点击确定关闭错误提示弹窗 定位错误提示弹窗确定按钮失败
|
||
元素点击 ${Keep_By_Num} 点击勾选按照个数保留 定位按照个数保留选项失败
|
||
元素点击 ${Confirm_PolicyTemplate} 点击确定按钮,按日保留时间输入置空 定位策略模板确定按钮定位失败
|
||
Wait Until Element Is Visible ${Error_Content} 5s 定位策略名字内容符违规弹窗失败
|
||
元素点击 ${Button_Error_Confirm} 点击确定关闭错误提示弹窗 定位错误提示弹窗确定按钮失败
|
||
元素点击 ${Reset_PolicyTemplate} 点击重置输入 定位重置按钮失败
|
||
Sleep 2s
|
||
Log 保留时间选项置空校验成功
|
||
|
||
创建备份参数模板
|
||
元素点击 ${System_Config} 进入系统设置页面 定位系统设置失败
|
||
元素点击 ${Policy_Template} 点击系统管理页面 定位系统管理栏失败
|
||
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
|
||
${random_strategyName}= Catenate SEPARATOR=_ Template ${date}
|
||
元素输入 ${DPM_PT_Name} ${random_strategyName} 定位策略名输入框失败
|
||
元素点击 ${Storage_Switch} 开启存储配置开关 存储模板选项失败
|
||
元素点击 ${Storage_MDServer} 点击展开介质服务器选项 定位介质服务器下拉选项失败
|
||
元素点击 xpath=//option[text()="${Plantform_BC_Agent}"] 点击选择介质服务器即黑方名称 定位黑方名称选项失败
|
||
元素点击 ${Storage_MDSIP} 点击展开介质服务器数据通道选项 定位介质服务器数据通道失败
|
||
元素点击 xpath=//option[text()="${Plantform_BC_IP}"] 点击选择介质服务器IP选项 定位介质服务器IP选项失败
|
||
元素点击 ${Storage_MDSName} 点击展开介质服务器介质选项 定位介质服务器介质选项失败
|
||
元素点击 xpath=//option[text()="${PT}"] 点击选择介质名称选项 定位介质服务器介质选项失败
|
||
元素点击 ${Storage_Dedup} 点击勾选重删选项 定位重删选项勾选框失败
|
||
元素点击 ${Storage_Select_Dedup} 点击展开重删选项 定位重删选项失败
|
||
元素点击 xpath=//option[text()="${YDCS}"] 点击勾选源端重删 定位源端重删介质选项失败
|
||
元素点击 ${Keep_Switch} 开启保留时间设置开关 定位保留时间设置开关失败
|
||
元素输入 ${Keep_Time_TemplatePolicy} 1 定位保留时间输入框失败
|
||
元素点击 ${Never_Expire} 取消勾选最新备份集永久设定 定位最新备份集永久设定选项失败
|
||
元素点击 ${Encryption_Switch} 开启加密设置开关 定位加密设置开关失败
|
||
元素点击 ${Encryption_Select} 勾选加密选项 定位加密选项勾选框失败
|
||
元素点击 ${Bk_Senior_Switch} 开启备份集高级选项配置开关 定位备份集高级选项配置开关失败
|
||
元素点击 ${Compress_Select} 勾选压缩选项 定位压缩选项失败
|
||
元素点击 ${Check_Select} 勾选校验选项 定位校验选项失败
|
||
元素点击 ${Confirm_PolicyTemplate} 点击确定按钮完成策略模板创建 定位策略模板确定按钮定位失败
|