robotframework-demo/Project/task4/Resource/RE2_CDM/KeyWord_VM.robot

636 lines
40 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 ***
Resource ElementPath.robot
Resource ../RE0_Common/KeyWord.robot
*** Keywords ***
VM备份_保留一天
[Arguments] ${esxi_name} ${bk_type} ${bk_name} ${pipelineEncryption} ${pipelineCompress} ${pipelineDedup} # esxi名称|备份类型|介质名称|管道加密|管道压缩|管道重删
[Documentation] 进行VM备份根据传入的esxi名称备份类型虚拟机名称以及是否选择管道加密压缩重删创建备份策略并校验备份成功
...
... 备份集保留1天
...
... 增加备份集页面搜索操作,防止修改时间对备份产生影响
元素点击 ${CDM_dataProtect} 副本数据保护定位成功 副本数据保护定位失败
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${random_strategyName}= Catenate SEPARATOR=_ ${bk_type} ${date}
Set Suite Variable ${random_strategyName}
Log 切换为全局变量
Sleep 5s
元素点击 Xpath=//span[text()="${esxi_name}"] 主机定位成功 主机定位失败
策略清理
元素点击 ${Add_VM_Policy} 添加策略定位成功 添加策略定位失败
元素输入 ${Input_Vmname} ${bk_name} 输入虚拟机名称完毕
元素点击 ${Search_Vmname} 定位搜索虚拟机按钮成功 定位搜索虚拟机按钮失败
元素点击 xpath=//span[text()="${bk_name}"]/../../td[2]/div 定位虚拟机成功 定位虚拟机失败
元素点击 ${Add_Vmname} 定位添加虚拟机按钮成功 定位添加虚拟机按钮失败
元素点击 ${Add_Vm_Policy_Nextstep} 定位添加策略下一步成功 定位添加策略下一步失败
元素点击 ${AddTaskCycle} 添加任务周期定位成功 添加任务周期定位失败
Run Keyword If "${bk_type}"=="完全" KeyWord_VM.完全备份
... ELSE IF "${bk_type}"=="增量" KeyWord_VM.增量备份
元素点击 ${Cycle_Onetime} 一次循环模式定位成功 一次循环模式定位失败
元素点击 ${Cycle_Confirm} 任务周期确定定位成功 任务周期确定定位失败
元素点击 ${Cycle_Nextstep} 任务周期下一步定位成功 任务周期下一步定位失败
Run Keyword If ${pipelineEncryption}==1 KeyWord_VM.管道加密
Run Keyword If ${pipelineCompress}==1 KeyWord_VM.管道压缩
Run Keyword If ${pipelineDedup}==1 KeyWord_VM.管道重删
Sleep 2s
元素点击 ${VMSave_time} 点击展开备份集保留时间下拉框 定位备份集保留时间下拉框失败
元素点击 ${VMSave_by_day} 点击选择保留周期为按日保留 定位保留周期为按日保留失败
元素点击 ${Advance_Nextstep} 定位高级选项下一步成功 定位高级选项下一步失败
元素输入 ${Vm_PolicyName} ${random_strategyName} 定位虚拟机策略名称失败
元素点击 ${Complete_policy} 定位虚拟机策略完成按钮成功 定位虚拟机策略完成按钮失败
元素点击 ${Success_Confirm} 备份策略创建完成定位成功 备份策略创建完成定位失败
元素点击 ${tab_backupset} 定位备份集选项成功 定位备份集选项失败
Sleep 60s
元素输入 ${Find_Policy} ${random_strategyName} 定位策略名称输入框失败
元素点击 ${Button_Searchbutton} 点击搜索按钮 定位搜索按钮失败
Sleep 2s
FOR ${n} IN RANGE 10
Click Element ${Button_Searchbutton}
Sleep 10s
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//div[text()="${random_strategyName}"]/../../td[10]/div[text()="已完成"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 60s
END
Run Keyword If ${bk_status}==False Fail
... ELSE Log 备份成功
Sleep 5s
VM备份_保留一个
[Arguments] ${esxi_name} ${bk_type} ${bk_name} ${bk_nameBK} ${pipelineEncryption} ${pipelineCompress} ${pipelineDedup} # esxi名称|备份类型|介质名称|管道加密|管道压缩|管道重删
元素点击 ${CDM_dataProtect} 副本数据保护定位成功 副本数据保护定位失败
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${random_strategyName}= Catenate SEPARATOR=_ ${bk_type} ${date}
Set Suite Variable ${random_strategyName}
Log 切换为全局变量
Sleep 5s
元素点击 Xpath=//span[text()="${esxi_name}"] 主机定位成功 主机定位失败
策略清理
元素点击 ${Add_VM_Policy} 添加策略定位成功 添加策略定位失败
元素输入 ${Input_Vmname} ${bk_name} 定位虚拟机输入框失败
元素点击 ${Search_Vmname} 定位搜索虚拟机按钮成功 定位搜索虚拟机按钮失败
元素点击 xpath=//span[text()="${bk_name}"]/../../td[2]/div 定位虚拟机成功 定位虚拟机失败
元素点击 xpath=//span[text()="${bk_nameBK}"]/../../td[2]/div 定位虚拟机成功 定位虚拟机失败
Sleep 5s
元素点击 ${Add_Vmname} 定位添加虚拟机按钮成功 定位添加虚拟机按钮失败
元素点击 ${Add_Vm_Policy_Nextstep} 定位添加策略下一步成功 定位添加策略下一步失败
元素点击 ${AddTaskCycle} 添加任务周期定位成功 添加任务周期定位失败
Run Keyword If "${bk_type}"=="完全" KeyWord_VM.完全备份
... ELSE IF "${bk_type}"=="增量" KeyWord_VM.增量备份
元素点击 ${Cycle_Onetime} 一次循环模式定位成功 一次循环模式定位失败
元素点击 ${Cycle_Confirm} 任务周期确定定位失败 任务周期确定定位失败
元素点击 ${Cycle_Nextstep} 任务周期下一步定位成功 任务周期下一步定位失败
Run Keyword If ${pipelineEncryption}==1 KeyWord_VM.管道加密
Run Keyword If ${pipelineCompress}==1 KeyWord_VM.管道压缩
Run Keyword If ${pipelineDedup}==1 KeyWord_VM.管道重删
Sleep 2s
元素点击 ${VMSave_time} 点击展开备份集保留时间下拉框 定位备份集保留时间下拉框失败
元素点击 ${VMSave_by_geshu} 点击选择保留周期为按个数保留 定位保留周期为按个数保留失败
元素点击 ${Advance_Nextstep} 定位高级选项下一步成功 定位高级选项下一步失败
元素输入 ${Vm_PolicyName} ${random_strategyName} 定位虚拟机策略名称失败
元素点击 ${Complete_policy} 定位虚拟机策略完成按钮成功 定位虚拟机策略完成按钮失败
元素点击 ${Success_Confirm} 备份完成定位成功 备份完成定位失败
元素点击 ${tab_backupset} 定位备份集选项成功 定位备份集选项失败
Sleep 60s
元素输入 ${Find_Policy} ${random_strategyName} 定位策略名称输入框失败
Sleep 2s
元素点击 ${Button_Searchbutton} 点击搜索按钮 定位搜索按钮失败
Sleep 2s
FOR ${n} IN RANGE 10
Click Element ${Button_Searchbutton}
Sleep 10s
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//div[text()="${bk_name}"]/../../td[10]/div[text()="已完成"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 60s
END
Run Keyword If ${bk_status}==False Fail
... ELSE Log ${bk_name}备份成功
Sleep 5s
FOR ${n} IN RANGE 10
Click Element ${Button_Searchbutton}
Sleep 10s
${bk_statusBK} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//div[text()="${bk_nameBK}"]/../../td[10]/div[text()="已完成"]
Run Keyword If "${bk_statusBK}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 60s
END
Run Keyword If ${bk_statusBK}==False Fail
... ELSE Log ${bk_nameBK}备份成功
VM恢复
Sleep 10s
循环点击 xpath=//div[text()="${random_strategyName}"]/../../../tr[@data-index="0"]//a[text()="恢复"] ${Recover_Vmname}
Clear Element Text ${Recover_Vmname}
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${recover_name}= Catenate SEPARATOR=_ AutoRecover ${date}
元素输入 ${Recover_Vmname} ${recover_name} 恢复后的虚拟机名称输入失败
Log 输入恢复后的虚拟机名称
Sleep 5s
元素点击 ${Choose_Storage} 点击存储下拉框 定位恢复存储未完成
元素点击 ${Datastore} 选择存储介质完毕 定位存储介质失败
元素点击 ${Complete_Recover_Policy} 点击策略恢复确定按钮 定位完成vm恢复策略按钮失败
元素点击 ${confirm_restore} 确认执行恢复 定位确认恢复按钮失败
元素点击 ${Success_Confirm} 点击“确定”按钮 定位“确定”失败
元素点击 ${Tab_Work} 切换到作业一栏 定位作业一栏失败
Sleep 30s
元素点击 ${PolicySearch} 点击查询按钮成功 定位查询按钮失败
FOR ${n} IN RANGE 10
Click Element ${PolicySearch}
${work_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//div[contains(text(),"${recover_name}")]/../../td[6]/div[text()="成功"]
Run Keyword If ${work_status}==False Log 恢复未完成
... ELSE Exit For Loop
Sleep 60s
END
Run Keyword If ${work_status}==False Fail
... ELSE Log 恢复成功
元素点击 ${Tab_Policy} 切换到策略一栏 定位策略失败
FOR ${n} IN RANGE 3
${policy_status} Run Keyword And Return Status Wait Until Element Is Visible ${VMPolicyDelete}
Run Keyword If ${policy_status}==True 策略删除
... ELSE Exit For Loop
END
Log 环境清理完毕
VM恢复_文件
[Arguments] ${esxi_name} # esxi名称
循环点击 Xpath=//div[text()="${random_strategyName}"]/../..//a[text()="更多"] ${Vm_Recover_File}
元素点击 ${Vm_Recover_File} 点击恢复文件 定位“恢复文件”失败
元素点击 ${Vm_Recover_File_NextStep} 点击恢复文件下一步 定位“下一步”按钮失败
元素点击 ${Vm_Recover_File_Complete} 点击完成按钮完成虚拟机文件恢复策略 定位“完成”按钮失败
元素点击 ${Success_Confirm} 确定虚拟机文件恢复策略创建成功 定位“确定”按钮失败
Comment 元素输入 ${Host_Search} ${CDM_IP} 定位代理名称输入框失败
元素点击 ${BC_Agent} 选择黑方集成代理 定位黑方集成代理失败
Sleep 5s
元素点击 ${Common_Tab_Work} 切换到作业一栏 定位作业一览失败
FOR ${n} IN RANGE 5
${work_status} Run Keyword And Return Status Wait Until Element Is Visible ${Quick_Mount_Complete}
Run Keyword If ${work_status}==False Log 快速挂载未完成
... ELSE Exit For Loop
Sleep 60s
END
Run Keyword If ${work_status}==False Fail
... ELSE Log 挂载成功
元素点击 ${Stop_Mount} 点击停止挂载 定位停止挂载失败
元素点击 ${Stop_Work_Confirm} 确认停止挂载作业 定位确认停止弹窗失败
元素点击 ${Success_Confirm} 作业停止成功 作业停止失败
sleep 10s
元素点击 Xpath=//span[text()="${esxi_name}"] 切换回esxi 定位esxi失败
元素点击 ${Tab_Policy} 点击切换到策略栏 定位策略失败
FOR ${n} IN RANGE 3
${policy_status} Run Keyword And Return Status Wait Until Element Is Visible ${Policy_Delete}
Run Keyword If ${policy_status}==True 策略删除
... ELSE Exit For Loop
END
Log 环境清理完毕
完全备份
Sleep 2s
元素点击 ${Full_Backup} 勾选完全备份 勾选完全备份失败
增量备份
Sleep 2s
元素点击 ${Incremental_Backup} 勾选增量备份 勾选增量备份失败
管道加密
元素点击 ${Pipeline_Encryption} 勾选管道加密 勾选管道加密失败
Sleep 2s
管道压缩
元素点击 ${Pipeline_Compress} 勾选管道压缩 勾选管道压缩失败
Sleep 2s
管道重删
元素点击 ${Pipeline_Dedup} 勾选管道重删 勾选管道重删失败
策略删除
元素点击 ${Tab_Policy} 切换到策略一栏 定位策略失败
Sleep 2s
循环点击 ${VMPolicyDelete} ${Confirm_Delete2}
Sleep 2s
元素点击 ${Confirm_Delete2} 确认删除 确认删除定位失败
Sleep 2s
元素点击 ${Success_Confirm} 完成策略删除 定位删除成功按钮失败
Sleep 2s
立即执行
[Arguments] ${bk_type} ${bk_name} # 备份类型 #备份源名称
元素点击 ${Tab_Policy} 切换到策略一栏 定位策略失败
Sleep 2s
循环点击 xpath=//div[@id="policytable_VM"]/..//div[text()="${random_strategyName}"]/../..//a[text()="立即执行"] ${Select_Bk_Type}
Log 点击立即执行
元素点击 ${Select_Bk_Type} 点击下拉备份选项 定位备份类型选项失败
Run Keyword If "${bk_type}"=="完全" Click Element ${Option_Fullbk}
... ELSE IF "${bk_type}"=="增量" Click Element ${Option_VMIncrebk}
Log 选择备份类型完毕
Sleep 3s
元素点击 ${VM_CDM_RESExpand} 点击展开虚拟机列表 定位展开虚拟机失败
元素点击 xpath=//span[text()="${bk_name}"]/../../td[2]/div 点击备份虚拟机 定位备份目标失败
元素点击 ${Confirm_Exec} 点击立即执行—确定按钮 定位确认按钮失败
Sleep 5s
元素点击 ${Success_Confirm} 点击确定 确认执行失败
Sleep 3s
元素点击 ${tab_backupset} 切换到备份集栏 定位备份集选项失败
Sleep 60s
元素输入 ${Input_Policy_Name} ${random_strategyName} 定位策略名称输入框失败
Log 输入策略名进行搜索
Sleep 2s
FOR ${n} IN RANGE 10
Click Element ${Button_Searchbk}
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//div[text()="${random_strategyName}"]/../../../tr[1]/td[5]/div[text()="VMware增量备份"]/../../td/div[text()="已完成"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 60s
END
Log 备份完成
Sleep 2s
备份集清理
[Documentation] ${random_strategyName}
元素点击 xpath=//div[text()="${random_strategyName}"]/../..//div[text()="VMware完全备份"]/../..//a[text()="更多"] 点击更多展开备份集操作 定位备份集更多失败
元素点击 ${Bk_More_Delete} 点击删除备份集 定位备份集删除失败
Comment 元素点击 ${Total_Del_BK} 点击删除完全备份集 定位完全备份删除失败
循环点击 ${Confim_Delete_Bk} ${Success_Confirm}
元素点击 ${Success_Confirm} 删除成功 定位删除成功失败
添加VMware平台
[Arguments] ${nick_name} ${esxi_name} ${esxi_password} ${esxi_ip} ${mds_type}
元素点击 ${CDM_dataProtect} 进入副本数据保护栏 定位副本数据保护失败
元素点击 ${Virtual_Manage} 点击主机管理按钮 定位主机管理按钮失败
元素点击 ${Add_New_VM} 点击添加VM3.0 定位添加VM平台失败
元素输入 ${Add_ESXI_Name} ${nick_name} 定位备注主机名输入框失败
元素输入 ${Add_ESXI_User} ${esxi_name} 定位用户名输入框失败
元素输入 ${Add_ESXI_PWD} ${esxi_password} 定位密码输入框失败
元素输入 ${Add_ESXI_IP} ${esxi_ip} 定位IP输入框失败
元素点击 ${ESXI_Info_Nextstep} 填写信息完毕,点击下一步 定位下一步失败
Sleep 10s
元素点击 ${Exec_Point} 勾选执行节点 定位执行节点勾选框失败
元素点击 ${Exec_Point_Nextstep} 选择完毕执行节点,点击下一步 定位下一步失败
元素点击 ${Add_BC} 点击添加黑方 定位添加按钮失败
元素点击 ${Select_BC_MDS} 点击存储介质选择 定位存储介质选择框失败
元素点击 xpath=//option[contains(text(),"${mds_type}")] 选择存储介质 定位存储介质失败
元素点击 ${Confirm_Add_BC} 确认完毕备份黑方,点击确定 定位确定按钮失败
元素点击 ${Add_BC_Nextstep} 添加黑方完毕,点击下一步 定位下一步失败
Sleep 15s
元素点击 ${Add_ESXI_Finish} 点击完成 定位完成按钮失败
元素点击 ${Success_Confirm} 点击添加成功确定按钮 定位确定按钮失败
Wait Until Element Is Visible xpath=//span[text()="${nick_name}"] 30s 添加VM平台失败
重启MDS服务
[Arguments] ${BC_IP} ${BC_ROOT} ${BC_PWD}
Open Connection ${BC_IP}
SSHLibrary.Login ${BC_ROOT} ${BC_PWD}
Log 登录黑方后台成功
Execute Command /unary/unabackup/bin/stop_mds.sh;/unary/unabackup/bin/start_mds.sh>/mds_status.txt
Log 重启MDS服务
Sleep 40s
${mds_status} Execute Command grep "start mds success" /mds_status.txt
${mds_status_length} Get Length ${mds_status}
Run Keyword If ${mds_status_length}>0 Log MDS服务开启
... ELSE Fail MDS服务未启动
Close Connection
Sleep 100s
VM快速挂载
Comment 元素点击 xpath=//div[text()="${random_strategyName}"]/../..//a[@lay-event="quickMount_VM"] 点击快速挂载按钮 定位快速挂载按钮失败
元素点击 xpath=//a[@class="transparent" and text()="快速挂载"] 点击快速挂载按钮 定位快速挂载按钮失败
Clear Element Text ${Recover_Vmname}
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${mount_name}= Catenate SEPARATOR=_ AutoRecover ${date}
元素输入 ${Recover_Vmname} ${mount_name} 挂载后虚拟机名称输入失败
Log 输入挂载后的虚拟机名称
元素点击 ${Choose_Storage} 点击展开存储选项 定位存储下拉框失败
元素点击 ${Datastore} 点击选择存储 定位存储失败
元素点击 ${Confirm_Quick_Mount} 点击完成快速挂载策略创建 定位确定按钮失败
元素点击 ${Success_Confirm} 点击确认添加成功 定位添加成功弹窗失败
元素点击 ${Tab_Work} 切换到作业一栏 定位作业一览失败
FOR ${n} IN RANGE 5
Click Element ${Button_Searchwork}
元素点击 ${VMCDM_Refresh} 点击刷新作业列表 定位刷新按钮失败
${work_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//div[contains(text(),"${mount_name}")]/../..//div[contains(text(),"成功")]
Run Keyword If ${work_status}==False Log 快速挂载未完成
... ELSE Exit For Loop
Sleep 60s
END
Run Keyword If ${work_status}==False Fail
... ELSE Log 挂载成功
元素点击 ${VMCDM_application} 切换到副本应用页面 定位副本应用失败
Sleep 5s
元素点击 ${VMCDM_Unload} 点击卸载 定位卸载按钮失败
Sleep 5s
元素点击 ${VMCDM_UnloadConfirm} 点击确定卸载 定位确定卸载失败
Sleep 10s
元素点击 ${Success_Confirm} 确定卸载成功 定位卸载成功确定按钮失败
Sleep 5s
元素点击 ${Tab_Policy} 切换到策略功能栏 定位策略失败
FOR ${n} IN RANGE 3
${policy_status} Run Keyword And Return Status Wait Until Element Is Visible ${Policy_Delete}
Run Keyword If ${policy_status}==True 策略删除
... ELSE Exit For Loop
END
Log 环境清理完毕
策略清理
元素点击 ${Tab_Policy} 切换到策略一栏 定位策略失败
Sleep 2s
FOR ${n} IN RANGE 3
${policy_status} Run Keyword And Return Status Wait Until Element Is Visible ${Policy_Delete_VM}
Run Keyword If ${policy_status}==True 策略删除
... ELSE Exit For Loop
END
Log 环境清理完毕
虚拟化主机定位
[Arguments] ${esxi_name} # 虚拟化主机名称
元素点击 ${CDM_dataProtect} 选择副本数据保护 副本数据保护定位失败
Sleep 5s
元素点击 Xpath=//span[text()="${esxi_name}"] 选择ESXI 主机定位失败
VM备份集清理校验
[Arguments] ${esxi_name} ${result} # 虚拟化主机名称|清理结果yes表示清理no表示未清理
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护失败
Sleep 2s
元素点击 xpath=//span[text()="${esxi_name}"] 点击选择虚拟化主机 定位虚拟化主机所在位置失败
Mouse Out xpath=//span[text()="${esxi_name}"]
Sleep 180s
元素点击 ${tab_backupset} 进入备份集一栏 定位备份集栏失败
元素输入 ${Find_Policy} ${random_strategyName} 定位策略名称输入框失败
元素点击 ${Button_Searchbutton} 点击搜索按钮 定位搜索按钮失败
Sleep 2s
${result_now} Run Keyword And Return Status Wait Until Element Is Visible //div[text()="${random_strategyName}"]/../../td[5]/div[text()="VMware完全备份"] 30s 定位校验作业失败
Log 获取当前备份集状态
Run Keyword If ${result}==1 Log 需要清理备份集
... ELSE IF ${result}==0 Log 不需要清理备份集
Run Keyword If '${result_now}'=='False' Log 备份集不存在了
... ELSE IF '${result_now}'=='True' Log 备份集还存在
Run Keyword If ${result}==1 and '${result_now}'=='False' Log 备份集清理成功
... ELSE IF ${result}==0 and '${result_now}'=='True' Log 备份集未被清理
... ELSE Fail 备份集状态错误
Log 判断备份集存在状态完毕
Sleep 60s
立即执行_备份集按个数保留
[Arguments] ${bk_type} ${bk_name} ${bk_nameBK} # 备份类型|备份虚拟机名称|备份虚拟机名称2
元素点击 ${Tab_Policy} 定位策略成功 定位策略失败
循环点击 xpath=//div[@id="policytable_VM"]/..//div[text()="${random_strategyName}"]/../..//a[text()="立即执行"] ${Select_Bk_Type}
Log 点击立即执行
Sleep 2s
元素点击 ${Select_Bk_Type} 定位备份类型选项成功 定位备份类型选项失败
Sleep 2s
Run Keyword If "${bk_type}"=="完全" Click Element ${Option_Fullbk}
... ELSE IF "${bk_type}"=="增量" Click Element ${Option_VMIncrebk}
Log 选择备份类型完毕
Sleep 2s
元素点击 ${Expand_VM_Tree} 点击展开虚拟机树 定位展开虚拟机树+号失败
元素点击 xpath=//h4[text()="立即执行策略"]/../..//span[contains(text(),"${bk_nameBK}")]/../..//td[2] 点击勾选要立即执行的虚拟机BK 定位要立即执行的虚拟机失败
元素点击 xpath=//h4[text()="立即执行策略"]/../..//span[contains(text(),"${bk_name}")]/../..//td[2] 点击勾选要立即执行的虚拟机 定位要立即执行的虚拟机失败
元素点击 ${Confirm_Exec} 定位确认按钮成功 定位确认按钮失败
元素点击 ${Success_Confirm} 确认执行成功 确认执行失败
Sleep 2s
元素点击 ${tab_backupset} 定位备份集选项成功 定位备份集选项失败
Sleep 60s
元素输入 ${Find_Policy} ${random_strategyName} 定位策略名称输入框失败
Sleep 2s
元素点击 ${Button_Searchbutton} 点击搜索按钮 定位搜索按钮失败
FOR ${n} IN RANGE 10
Click Element ${Button_Searchbutton}
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//div[text()="${bk_name}"]/../../../tr[1]/td[5]/div[text()="VMware增量备份"]/../../td/div[text()="已完成"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 60s
END
Log 备份完成
Sleep 2s
FOR ${n} IN RANGE 10
Click Element ${Button_Searchbutton}
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//div[text()="${bk_nameBK}"]/../../../tr[1]/td[5]/div[text()="VMware增量备份"]/../../td/div[text()="已完成"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 60s
END
Log 备份完成
Sleep 2s
立即执行_备份集按天保留
[Arguments] ${bk_type} ${bk_name} # 备份类型|备份虚拟机名称
[Documentation] 立即执行VM备份策略并更加策略名称在备份集页面搜索判断备份成功增加搜索防止修改时间对备份任务造成影响
元素点击 ${Tab_Policy} 定位策略成功 定位策略失败
循环点击 xpath=//div[@id="policytable_VM"]/..//div[text()="${random_strategyName}"]/../..//a[text()="立即执行"] ${Select_Bk_Type}
Log 点击立即执行
Sleep 2s
元素点击 ${Select_Bk_Type} 定位备份类型选项成功 定位备份类型选项失败
Run Keyword If "${bk_type}"=="完全" Click Element ${Option_Fullbk}
... ELSE IF "${bk_type}"=="增量" Click Element ${Option_VMIncrebk}
Log 选择备份类型完毕
Sleep 2s
元素点击 ${Expand_VM_Tree} 点击展开虚拟机树 定位展开虚拟机树+号失败
元素点击 xpath=//h4[text()="立即执行策略"]/../..//span[contains(text(),"${bk_name}")]/../..//td[2] 点击勾选要立即执行的虚拟机 定位要立即执行的虚拟机失败
元素点击 ${Confirm_Exec} 定位确认按钮成功 定位确认按钮失败
元素点击 ${Success_Confirm} 确认执行成功 确认执行定位失败
元素点击 ${tab_backupset} 定位备份集选项成功 定位备份集选项失败
Sleep 60s
元素输入 ${Find_Policy} ${random_strategyName} 定位策略名称输入框失败
元素点击 ${Button_Searchbutton} 点击搜索按钮 定位搜索按钮失败
FOR ${n} IN RANGE 10
Click Element ${Button_Searchbutton}
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//div[text()="${bk_name}"]/../../../tr[1]/td[5]/div[text()="VMware增量备份"]/../../td/div[text()="已完成"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 60s
END
Log 备份完成
Sleep 2s
元素点击 ${Tab_Policy} 定位策略栏成功 定位策略栏失败
定位VM备份集页面
元素点击 ${tab_backupset} 点击VM备份集页面成功 定位VMware备份集页面失败
恢复VM
[Documentation] 在备份集页面根据策略名称搜索并恢复备份集
...
... 在作业页面搜索恢复虚拟机名称,判断恢复成功(增加搜索操作防止修改时间对恢复作业产生影响)
元素点击 ${tab_backupset} 点击VM备份集页面成功 定位VMware备份集页面失败
Sleep 5s
元素输入 ${Find_Policy} ${random_strategyName} 定位策略名称输入框失败
元素点击 ${Button_Searchbutton} 点击搜索按钮 定位搜索按钮失败
Sleep 5s
循环点击 Xpath=//div[text()="${random_strategyName}"]/../../../tr[@data-index="0"]//a[text()="恢复"] ${Recover_Vmname}
Clear Element Text ${Recover_Vmname}
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${recover_name}= Catenate SEPARATOR=_ AutoRecover ${date}
Input Text ${Recover_Vmname} ${recover_name}
Log 输入恢复后的虚拟机名称
Sleep 5s
元素点击 ${Choose_Storage} 定位恢复存储成功 定位恢复存储未完成
Sleep 5s
元素点击 ${Datastore} 定位存储介质成功 定位存储介质失败
Sleep 5s
元素点击 ${Complete_Recover_Policy} 定位完成vm恢复策略按钮成功 定位完成vm恢复策略按钮失败
循环点击 ${confirm_restore} ${Success_Confirm}
元素点击 ${Success_Confirm} 定位“确定”成功 定位“确定”失败
元素点击 ${Policy_show} 定位作业一栏成功 定位作业一栏失败
Sleep 30s
元素输入 ${RecoverPolicyname} ${recover_name} 定位策略名输入框失败
元素点击 ${PolicySearch} 点击查询按钮成功 定位查询按钮失败
FOR ${n} IN RANGE 10
Click Element ${PolicySearch}
${work_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//div[contains(text(),"${recover_name}")]/../../td[6]/div[text()="成功"]
Run Keyword If ${work_status}==False Log 恢复未完成
... ELSE Exit For Loop
Sleep 60s
END
Run Keyword If ${work_status}==False Fail
... ELSE Log 恢复成功
元素点击 ${Tab_Policy} 定位策略栏成功 定位策略失败
Sleep 2s
FOR ${n} IN RANGE 3
${policy_status} Run Keyword And Return Status Wait Until Element Is Visible ${VMPolicyDelete}
Run Keyword If ${policy_status}==True 策略删除
... ELSE Exit For Loop
END
Log 环境清理完毕
VM恢复文件_清理校验后
[Arguments] ${esxi_name} ${BC_Agent} #虚拟化主机名称|挂载代理
[Documentation] VM备份集恢复文件操作
...
... 新增备份集页面根据策略名称搜索操作,防止修改时间对恢复操作造成影响
...
... 清理校验后是指在执行TC07_Bk_CheckClean后经过修改时间使用此关键字不受修改时间的影响
元素点击 ${tab_backupset} 点击VM备份集页面成功 定位VMware备份集页面失败
元素输入 ${Find_Policy} ${random_strategyName} 定位策略名称输入框失败
元素点击 ${Button_Searchbutton} 点击搜索按钮 定位搜索按钮失败
Sleep 2s
循环点击 Xpath=//div[text()="${random_strategyName}"]/../..//a[text()="更多"] ${Vm_Recover_File}
元素点击 ${Vm_Recover_File} 点击恢复文件 定位“恢复文件”失败
元素点击 ${Vm_Recover_File_NextStep} 点击恢复文件下一步 定位“下一步”按钮失败
元素点击 ${Vm_Recover_File_Complete} 点击完成按钮完成虚拟机文件恢复策略 定位“完成”按钮失败
元素点击 ${Success_Confirm} 确定虚拟机文件恢复策略创建成功 定位“确定”按钮失败
元素点击 xpath=//span[text()="${BC_Agent}"] 选择黑方集成代理 定位黑方集成代理失败
Sleep 5s
元素点击 ${Common_Tab_Work} 切换到作业一栏 定位作业一览失败
FOR ${n} IN RANGE 5
${work_status} Run Keyword And Return Status Wait Until Element Is Visible ${Quick_Mount_Complete}
Run Keyword If ${work_status}==False Log 快速挂载未完成
... ELSE Exit For Loop
Sleep 60s
END
Run Keyword If ${work_status}==False Fail
... ELSE Log 挂载成功
元素点击 ${Stop_Mount} 点击停止挂载 定位停止挂载失败
元素点击 ${Stop_Work_Confirm} 确认停止挂载作业 定位确认停止弹窗失败
元素点击 ${Success_Confirm} 作业停止成功 作业停止失败
元素点击 Xpath=//span[text()="${esxi_name}"] 切换回esxi 定位esxi失败
元素点击 ${Tab_Policy} 点击切换到策略栏 定位策略失败
FOR ${n} IN RANGE 3
${policy_status} Run Keyword And Return Status Wait Until Element Is Visible ${Policy_Delete}
Run Keyword If ${policy_status}==True 策略删除
... ELSE Exit For Loop
END
Log 环境清理完毕
VM快速挂载_清理校验后
[Documentation] VM备份集快速挂载操作
...
... 新增在备份集页面根据策略名称搜索操作,防止修改时间对快速挂载操作造成影响
...
... 清理校验后是指在执行TC07_Bk_CheckClean后经过修改时间使用此关键字不受修改时间的影响
元素点击 ${tab_backupset} 点击VM备份集页面成功 定位VMware备份集页面失败
元素输入 ${Find_Policy} ${random_strategyName} 定位策略名称输入框失败
元素点击 ${Button_Searchbutton} 点击搜索按钮 定位搜索按钮失败
Sleep 2s
元素点击 xpath=//div[text()="${random_strategyName}"]/../..//a[@lay-event="quickMount_VM"] 点击快速挂载按钮 定位快速挂载按钮失败
Clear Element Text ${Recover_Vmname}
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${mount_name}= Catenate SEPARATOR=_ AutoRecover ${date}
Input Text ${Recover_Vmname} ${mount_name}
Log 输入挂载后的虚拟机名称
元素点击 ${Choose_Storage} 点击展开存储选项 定位存储下拉框失败
元素点击 ${Datastore} 点击选择存储 定位存储失败
元素点击 ${Confirm_Quick_Mount} 点击完成快速挂载策略创建 定位确定按钮失败
元素点击 ${Success_Confirm} 点击确认添加成功 定位添加成功弹窗失败
元素点击 ${Tab_Work} 切换到作业一栏 定位作业一览失败
FOR ${n} IN RANGE 5
Click Element ${Button_Searchwork}
${work_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//div[contains(text(),"${mount_name}")]/../..//div[text()="成功"]
Run Keyword If ${work_status}==False Log 快速挂载未完成
... ELSE Exit For Loop
Sleep 60s
END
Run Keyword If ${work_status}==False Fail 快速挂载失败
... ELSE Log 挂载成功
元素点击 ${Tab_Policy} 切换到策略功能栏 定位策略失败
FOR ${n} IN RANGE 3
${policy_status} Run Keyword And Return Status Wait Until Element Is Visible ${Policy_Delete}
Run Keyword If ${policy_status}==True 策略删除
... ELSE Exit For Loop
END
Log 环境清理完毕
备份集清理_清理校验后
[Documentation] 清理备份链中的VM完全备份集
...
... 清理校验后是指在执行TC07_Bk_CheckClean后经过修改时间使用此关键字不受修改时间的影响
元素点击 ${tab_backupset} 点击VM备份集页面成功 定位VMware备份集页面失败
元素输入 ${Find_Policy} ${random_strategyName} 定位策略名称输入框失败
元素点击 ${Button_Searchbutton} 点击搜索按钮 定位搜索按钮失败
Sleep 2s
元素点击 xpath=//div[text()="${random_strategyName}"]/../..//div[text()="VMware完全备份"]/../..//a[text()="更多"] 点击更多展开备份集操作 定位备份集更多失败
元素点击 ${Bk_More_Delete} 点击删除备份集 定位备份集删除失败
元素点击 ${Confim_Delete_Bk} 点击确认删除备份集 定位确定删除备份集失败
元素点击 ${Success_Confirm} 删除成功 定位删除成功失败
VM备份
[Arguments] ${esxi_name} ${bk_type} ${bk_name} ${pipelineEncryption} ${pipelineCompress} ${pipelineDedup} # esxi名称|备份类型|介质名称|管道加密|管道压缩|管道重删
元素点击 ${CDM_dataProtect} 选择副本数据保护 定位副本数据保护栏失败
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${random_strategyName}= Catenate SEPARATOR=_ ${bk_type} ${date}
Set Suite Variable ${random_strategyName}
Log 切换为全局变量
Sleep 5s
元素点击 Xpath=//span[text()="${esxi_name}"] 点击定位esxi 定位esxi失败
策略清理
元素点击 ${Add_VM_Policy} 点击添加策略按钮 添加策略定位失败
元素输入 ${Input_Vmname} ${bk_name} 定位虚拟机输入框失败
Log 输入虚拟机名称完毕
元素点击 ${Search_Vmname} 点击搜索虚拟机按钮 定位搜索虚拟机按钮失败
元素点击 xpath=//span[text()="${bk_name}"]/../../td[2]/div 勾选备份虚拟机 定位虚拟机失败
元素点击 ${Add_Vmname} 添加虚拟机完毕 定位添加虚拟机按钮失败
元素点击 ${Add_Vm_Policy_Nextstep} 进入任务周期 定位添加策略下一步失败
元素点击 ${AddTaskCycle} 添加任务周期成功 添加任务周期定位失败
Run Keyword If "${bk_type}"=="完全" KeyWord_VM.完全备份
... ELSE IF "${bk_type}"=="增量" 增量备份
元素点击 ${Cycle_Onetime} 添加仅一次立即备份 一次循环模式定位失败
元素点击 ${Cycle_Confirm} 添加任务周期 任务周期确定定位失败
元素点击 ${Cycle_Nextstep} 点击下一步 任务周期下一步定位失败
Log 进入高级选项
Run Keyword If ${pipelineEncryption}==1 管道加密
Run Keyword If ${pipelineCompress}==1 管道压缩
Run Keyword If ${pipelineDedup}==1 管道重删
Sleep 2s
元素点击 ${Advance_Nextstep} 点击下一步 定位高级选项下一步失败
Log 进入概览
Sleep 2s
元素输入 ${Vm_PolicyName} ${random_strategyName} 定位虚拟机策略名称失败
Log 策略名称输入完毕
元素点击 ${Complete_policy} 点击完成按钮,策略创建完毕 定位虚拟机策略完成按钮失败
元素点击 ${Success_Confirm} 策略添加完成 备份策略完成定位失败
log 开始备份
元素点击 ${tab_backupset} 进入备份集栏 定位备份集选项失败
Sleep 60s
元素输入 ${Input_Policy_Name} ${random_strategyName} 定位策略名称输入框失败
Log 输入策略名进行搜索
Sleep 2s
FOR ${n} IN RANGE 10
Click Element ${Button_Searchbk}
Sleep 10s
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//div[text()="${random_strategyName}"]/../../td[10]/div[text()="已完成"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 120s
END
Run Keyword If ${bk_status}==False Fail
... ELSE Log 备份成功
Sleep 5s