robotframework-demo/Project/task4/Resource/RE10_System/KeyWord.robot

2095 lines
123 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*** 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} 点击确定按钮完成策略模板创建 定位策略模板确定按钮定位失败