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

1088 lines
75 KiB
Plaintext

*** Settings ***
Resource ../RE0_Common/KeyWord.robot
Resource ElementPath.robot
Library DatabaseLibrary
Library Selenium2Library
Library DateTime
Library string
Resource ../RE3_DPM/ElementPath.robot
Resource ../RE12_Archive/ElementPath.robot
Variables ../../Config/CDM/CDM_config.py
*** Keywords ***
Sqlserver备份
[Arguments] ${agent_name} ${mds_name} ${pipelineEncryption} ${pipelineCompress} ${pipelineDedup} ${SQLserver_CheckType}=SQLserver
代理策略预清理 ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${Add_Sqlserver_Policy} 点击添加策略按钮 定位策略添加按钮失败
元素点击 ${SQLServer_CDM_Module} 选择sqlserver数据模块 定位sqlserver模块失败
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${random_strategyName}= Catenate SEPARATOR=_ Sqlserver ${date}
Set Suite Variable ${random_strategyName}
Log 切换为全局变量
Sleep 5s
元素输入 ${Policy_Name} ${random_strategyName} 定位策略名输入框失败
Run Keyword If "${SQLserver_CheckType}"=="Windows" windows身份验证
... ELSE IF "${SQLserver_CheckType}"=="SQLserver" SQLserver身份验证
元素点击 ${Sqlserver_CDM_NextStep_2} 点击下一步进入目标数据库界面 定位实例选择下一步按钮失败
元素点击 ${Select_Bk_DB} 勾选指定数据库 定位指定数据库勾选框失败
元素点击 ${Sqlserver_CDM_NextStep_3} 点击下一步进入任务周期界面 定位目标数据库下一步按钮失败
元素点击 ${AddTaskCycle} 点击添加任务周期 添加任务周期定位失败
元素点击 ${Cycle_Onetime} 选择仅备份一次 定位一次循环模式定位失败
元素点击 ${Cycle_Confirm} 点击确认完成任务周期设置 任务周期确定定位失败
元素点击 ${Sqlserver_CDM_NextStep_4} 点击下一步进入备份集存储页面 定位任务周期下一步定位失败
元素点击 ${Input_Choose_MDS} 选择手动指定MDS介质 定位手动选择MDS介质选项失败
元素点击 ${Select_MDS_CDM} 点击展开介质选项下拉框 定位介质下拉框失败
元素点击 xpath=//select[@id="dialogues_addCycleStorage_storagePath_selectMedia_selectedMdsIP_select"]/option[text()="${mds_name}"] 点击选择指定介质 定位指定介质失败
Run Keyword If ${pipelineDedup}==1 管道重删
元素点击 ${Sqlserver_CDM_NextStep_5} 点击下一步进入到备份高级选项页面 定位下一步按钮失败
Run Keyword If ${pipelineEncryption}==1 管道加密
Run Keyword If ${pipelineCompress}==1 管道压缩
元素点击 ${Btn_Finish_Sqlserver} 点击完成策略创建 定位策略完成失败
Sleep 2s
元素点击 ${Success_Confirm} 策略确定创建完毕 定位策略创建成功弹窗失败
FOR ${n} IN RANGE 10
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//td[text()="${random_strategyName}"]/../td[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 2s
完全备份
Sleep 2s
Click Element ${Full_Backup}
Log 勾选完全备份
增量备份
Sleep 2s
Click Element ${Incremental_Backup}
Log 勾选增量备份
管道加密
Click Element ${Pipeline_Encryption_SQLServer}
Sleep 2s
Log 勾选管道加密
管道压缩
Click Element ${Pipeline_Compress_SQLServer}
Sleep 2s
Log 勾选管道压缩
管道重删
Click Element ${Pipeline_Dedup_SQLServer}
Sleep 2s
Log 勾选管道重删
代理环境清理
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
Mouse Out ${CDM_dataProtect}
Sleep 5s
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
Sleep 5s
元素点击 xpath=//td[text()="${random_strategyName}"]/..//span[text()="删除"] 点击删除指定策略 定位删除策略按钮失败
Sleep 2s
元素点击 ${Button_Del_Policy} 确认删除策略 定位确认删除按钮失败
元素点击 ${Success_Confirm} 策略删除成功 策略删除失败
元素点击 ${CDM_BK} 点击进入副本数据备份集页面 定位副本数据页面失败
Sleep 2s
${Backup_Act}= catenate SEPARATOR=_ backupAction ${random_strategyName}
${Backup_Del}= catenate SEPARATOR=_ cdmBkset_delete ${random_strategyName}
循环点击 ${Backup_Act} ${Backup_Del}
Sleep 2s
元素点击 ${Backup_Del} 点击删除备份集 定位删除按钮失败
Sleep 2s
元素点击 ${Button_Confirm_Del} 点击确定删除备份集 定位确定按钮失败
元素点击 ${Success_Confirm} 确定完成备份集删除 定位备份集删除确定弹框失败
创建Sqlserver数据表
[Arguments] ${host} ${db_user} ${db_pwd} ${db}
Connect To Database Using Custom Params pymssql host='${host}',user='${db_user}',password='${db_pwd}',database='${db}',charset='CP936'
${row_count} Row Count SELECT * FROM dbo.SysObjects WHERE ID = object_id('test') AND OBJECTPROPERTY(ID, 'IsTable') = 1;
Run Keyword IF ${row_count}>0 Execute Sql String drop table test;
Execute Sql String use unary;
log 执行sql建表
Execute Sql String create table test(id int,dt int)
log 插入数据
Execute Sql String insert into test values(1, 2021)
log 建表完成
Disconnect From Database
Log 断开数据库连接
删除Sqlserver数据表
[Arguments] ${host} ${db_user} ${db_pwd} ${db}
Connect To Database Using Custom Params pymssql host='${host}',user='${db_user}',password='${db_pwd}',database='${db}',charset='CP936'
${row_count} Row Count SELECT * FROM dbo.SysObjects WHERE ID = object_id('test') AND OBJECTPROPERTY(ID, 'IsTable') = 1;
Execute Sql String use unary;
Run Keyword IF ${row_count}>0 Execute Sql String drop table test;
Disconnect From Database
Log 断开数据库连接
校验Sqlserver数据表
[Arguments] ${host} ${db_user} ${db_pwd} ${db}
Connect To Database Using Custom Params pymssql host='${host}',user='${db_user}',password='${db_pwd}',database='${db}',charset='CP936'
Execute Sql String use unary;
${query_result} query select * from test;
Run Keyword If ${query_result[0][1]}==2021 Log 校验成功
... ELSE Fail 数据校验失败
Execute Sql String drop table test;
Disconnect From Database
Log 断开数据库连接
Sqlserver恢复
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
Sleep 5s
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Sleep 2s
元素点击 xpath=//td[text()="${random_strategyName}"]/..//span[text()="恢复"] 点击恢复进入备份集恢复界面 定位恢复按钮失败
Sleep 5s
comment 元素点击 xpath=//button[@id="backupAction_0"] 点击展开操作 定位备份集操作按钮下拉框失败
元素点击 xpath=//div[text()="${random_strategyName}"]/../..//button 点击展开操作 定位备份集操作按钮下拉框失败
元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败
Comment 元素输入 ${Input_Sync_Name} ${Sys_Admin} 定位鉴权用户名输入框失败
Comment 元素输入 ${Input_Sync_Pwd} ${WebPWD} 定位鉴权密码输入框失败
Comment 元素点击 ${Sync_Confirm} 点击确定完成鉴权 定位鉴权确定按钮失败
元素点击 ${Sqlserver_Select_Agent} 点击展开恢复代理 定位展开恢复代理失败
Comment 元素点击 xpath=//dd[text()="${CDM_Sqlserver_Des_name}"] 选择目标端代理 定位目标端代理失败
元素点击 xpath=//dd[contains(text(),"${agent_name}")] 选择目标端代理 定位目标端代理失败
元素点击 ${Sqlserver_Rec_NextStep_1} 点击下一步进入实例选择界面 定位下一步按钮失败
元素点击 ${Sqlserver_Rec_NextStep_2} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Sqlserver_Rec_NextStep_3} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} E: 定位恢复指定路径输入框失败
Comment 元素点击 ${Sqlserver_Rec_NextStep_4} 点击进入信息确认界面 定位下一步按钮失败
元素点击 ${Sqlserver_Rec_Complete} 点击完成按钮 定位完成按钮失败
元素点击 ${Btn_Second_Define} 二次确认执行恢复操作 定位确认恢复按钮失败
元素点击 ${Success_Confirm} 恢复策略添加成功 定位恢复策略添加成功弹窗的确认按钮失败
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
Sleep 2s
${Time_out} Run Keyword And Return Status Wait Until Element Is Visible ${Success_Confirm}
Run Keyword If ${Time_out}==True 元素点击 ${Success_Confirm} 点击连接超时的失败按钮 定位超时弹窗失败
comment 副本代理选择 ${agent_name}
Sleep 120s
Wait Until Element Is Visible ${Recover_Status} 60s 定位恢复状态失败
Log 恢复成功
SQLServer_CDM备份
[Arguments] ${agent_name} ${SQLserver_CheckType} ${Pipeline_encryption} ${Pipeline_compression} ${Pipeline_dedup}
元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败
元素输入 ${Input_Oracle_SearchName} ${CDM_MSSql_HostName} 定位搜索输入框失败
sleep 10s
元素点击 xpath=//span[text()="${CDM_MSSql_HostName}"] 选择备份代理 定位备份代理失败
SQLserver_cdm策略清理
元素点击 ${Add_Sqlserver_Policy} 点击添加策略按钮 定位策略添加按钮失败
元素点击 ${Module_Sqlserver} 选择sqlserver数据模块 定位sqlserver模块失败
log 定义策略名规则
${policy_head} Set Variable 完全备份
${date} Get Current Date result_format=%Y%m%d%H%M%S
${random_strategyName}= Catenate SEPARATOR=_ ${policy_head} ${date}
Set Global Variable ${random_strategyName}
log 输入策略名
元素输入 ${Policy_Name} ${random_strategyName} 定位策略名输入框失败
Run Keyword If "${SQLserver_CheckType}"=="windows" windows身份验证
... ELSE IF "${SQLserver_CheckType}"=="SQLserver" SQLserver身份验证
元素点击 ${Instance_Nextstep} 点击进入下一步目标数据库选择页面 定位下一步按钮失败
元素点击 ${Select_bk_SQLDB_test} 勾选指定数据库 定位指定数据库勾选框失败
元素点击 ${Select_DB_Nextstep} 点击下一步进入任务周期选择界面 定位下一步按钮失败
元素点击 ${AddTaskCycle} 点击添加任务周期 添加任务周期定位失败
元素点击 ${Cycle_Onetime} 选择仅备份一次 定位一次循环模式定位失败
元素点击 ${Cycle_Confirm} 点击确认完成任务周期设置 任务周期确定定位失败
元素点击 ${Cycle_Nextstep} 点击下一步进入备份集存储页面 任务周期下一步定位失败
Comment Run Keyword If ${Pipeline_dedup}==1 管道重删
... ELSE log 不重删
元素点击 ${Storage_Nextstep} 点击下一步进入到备份高级选项页面 定位下一步按钮失败
Run Keyword If ${Pipeline_encryption}==1 管道加密
... ELSE log 不加密
Run Keyword If ${Pipeline_compression}==1 管道压缩
... ELSE log 不压缩
Run Keyword If ${Pipeline_dedup}==1 管道重删
... ELSE log 不重删
Comment Run Keyword If ${check_attr}==1 校验
Comment Run Keyword If ${cache}==1 备份缓存 /opt
Comment 元素点击 ${Senior_Nextstep} 点击下一步进入到信息确认 定位下一步按钮失败
元素点击 ${SQLServer_PolicyComplete} 点击完成策略创建 定位策略完成失败
Sleep 2s
元素点击 ${Success_Confirm} 策略确定创建完毕 定位策略创建成功弹窗失败
FOR ${n} IN RANGE 40
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//td[text()="${random_strategyName}"]/../td[text()="成功"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 30s
END
Run Keyword If ${bk_status}==False Fail
... ELSE Log 备份成功
Sleep 2s
SQLServer_CDM恢复
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${CDM_MSSql_HostName}"] 选择备份代理 定位备份代理失败
元素点击 ${Backup_html} 点击进入备份集恢复界面 定位副本数据按钮失败
sleep 5s
元素点击 xpath=//tr[@data-index=0]//button[@id="backupAction_${random_strategyName}"] 点击展开操作 定位备份集操作按钮下拉框失败
sleep 5s
元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败
sleep 5s
元素点击 ${Button_RecoveryIdentifyVarification_CDM} 恢复身份验证下拉框 定位恢复身份验证下拉框失败
元素点击 ${Span_RecoveryIdentifyVarification_CDM} 恢复SQL身份验证 定位恢复SQL身份验证失败
元素点击 ${Recover_Nextstep_SQLServer} 点击下一步进入实例选择界面 定位下一步按钮失败
元素输入 ${SQLServer_Recory_InputPwd_CDM} ${CDM_MSSql_DB_PWD1} 定位恢复密码输入框失败
元素点击 ${Recover_Instance_Select_Nextstep} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target_sqltest} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Select_DB_Nextstep1} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} D: 定位恢复指定路径输入框失败
Comment 元素点击 xpath=//button[@id="cdm_sqlServer_addRecoveryPolicy_backStep45_btn"] 点击下一步进入确认恢复页面 点击下一步按钮失败
元素点击 ${SQLServer_BackupComplete} 点击完成按钮完成恢复策略创建 定位完成按钮失败
元素点击 ${Btn_Second_Define} 点击确认执行执行恢复 定位确认失败
元素点击 ${Success_Confirm} 确认恢复策略创建完成 定位恢复确认弹窗失败
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
Sleep 100s
Wait Until Element Is Visible ${Recover_Status} 30s 定位恢复状态失败
Log 恢复成功
SQLServer立即执行增量备份
元素点击 ${Run_Now} 点击立即执行按钮成功 定位立即执行按钮失败
元素点击 ${Now_Run_Type} 选择备份类型 定位选择备份类型失败
元素点击 ${Option_Increbk} 选择增量备份 定位增量备份失败
元素点击 ${Cycle_Run_Now_Finish} 点击完成按钮成功 定位完成按钮失败
元素点击 ${Cycle_Restore_Finish_OK} 点击添加成功按钮 定位添加成功按钮失败
元素点击 ${Select_JobHtml} 点击作业按钮 定位作业界面失败
log 开始增量备份
FOR ${n} IN RANGE 60
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//tr[@data-index="0"]/td[@data-field="description"]/div[text()="成功"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 30s
END
Run Keyword If ${bk_status}==False Fail
... ELSE Log 备份成功
Sleep 2s
SQLServer_CDM挂载
元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败
元素点击 xpath=//span[text()="${CDM_MSSql_HostName}"] 选择SQLServer代理机器 定位SQLServer代理机节点失败
元素点击 ${Backup_html} 点击副本管理成功 定位副本管理界面失败
sleep 5s
元素点击 xpath=//tr[@data-index=0]//button[@id="backupAction_${random_strategyName}"] 点击操作成功 定位操作按钮失败
sleep 5s
元素点击 ${Oracle_Backups_Mount} 点击挂载按钮成功 定位挂载按钮失败
sleep 5s
Comment Select From List By Label ${Select_SQLServer_hosts} ${CDM_MSSql_HostName2}
Comment sleep 5s
元素点击 ${Button_RecoveryIdentifyVarification_CDM} 点击身份验证下拉框成功 点击身份验证下拉框失败
元素点击 ${Span_RecoveryIdentifyVarification_CDM} 选择SQLserver身份验证成功 选择SQLserver身份验证失败
元素点击 ${Cycle_SQLserver_Mount_Next1} 点击下一步成功 定位挂载目标下一步失败
元素输入 xpath=//div[@ng-show="sqlserverIdentity"]/div[@class="input-group hide-password-plaintext"]/input[@class="form-control ng-pristine ng-untouched ng-valid"] ${CDM_MSSql_DB_PWD1} 输入密码失败
元素点击 ${Cycle_SQLServer_Mount_Next} 点击下一步成功 定位实例选择下一步失败
元素点击 ${Recover_Target_sqltest} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Cycle_SQL_Mount_Next} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Diff_Name_Recover} 点击异名挂载成功 点击异名挂载失败
元素输入 ${input_Diff_Name} ${CDM_MSSql_Mount_DB} 输入数据库挂载异名失败
元素点击 ${Recover_New_DB_Comfirm} 点击确定按钮成功 点击确定按钮失败
Comment 元素点击 ${Cycle_SQLserver_Mount_Next4} 点击下一步进入确认挂载成功 点击下一步进入确认挂载失败
元素点击 ${SQLServer_BackupComplete} 点击完成按钮完成恢复策略创建 定位完成按钮失败
元素点击 ${Success_Confirm} 确认恢复策略创建完成 定位恢复确认弹窗失败
Comment 元素输入 ${Input_Oracle_SearchName} ${CDM_MSSql_HostName} 定位搜索输入框失败
sleep 5s
元素点击 xpath=//span[text()="${CDM_MSSql_HostName}"] 选择挂载代理机器 定位挂载代理机节点失败
元素点击 ${Select_JobHtml} 点击作业界面成功 定位作业界面失败
sleep 60s
Wait Until Page Contains Element ${SQLServer_Mount_JobStatus} 300s 挂载未完成
Log 挂载成功
SQLServer_CDM停止挂载
元素点击 ${fuben_yingyong} 点击副本应用成功 点击副本应用失败
元素点击 ${sqlserver_umount} 点击卸载按钮成功 点击卸载按钮失败
元素点击 ${umount_sure} 点击卸载确定按钮成功 点击卸载确定按钮失败
sleep 5s
元素点击 xpath=//a[@id="unnamed_module_layerCancel"] 点击确定按钮成功 点击确定按钮失败
Log 停止挂载成功
MSSQL_CDM备份
[Arguments] ${agent_name} ${SQLserver_CheckType} ${Pipeline_encryption} ${Pipeline_compression} ${Pipeline_dedup}
元素点击 ${CDM_dataProtect} 点击副本数据保护成功 定位副本数据保护定位失败
元素输入 ${Input_Oracle_SearchName} ${agent_name} 定位搜索输入框失败
sleep 10s
元素点击 xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
SQLserver_cdm策略清理
元素点击 ${Add_Sqlserver_Policy} 点击添加策略按钮 定位策略添加按钮失败
元素点击 ${Module_Sqlserver} 选择sqlserver数据模块 定位sqlserver模块失败
log 定义策略名规则
${policy_head} Set Variable 完全备份
${date} Get Current Date result_format=%Y%m%d%H%M%S
${random_strategyName}= Catenate SEPARATOR=_ ${policy_head} ${date}
Set Global Variable ${random_strategyName}
log 输入策略名
元素输入 ${Policy_Name} ${random_strategyName} 定位策略名输入框失败
Run Keyword If "${SQLserver_CheckType}"=="windows" windows身份验证
... ELSE IF "${SQLserver_CheckType}"=="SQLserver" SQLserver身份验证
元素点击 ${Instance_Nextstep} 点击进入下一步目标数据库选择页面 定位下一步按钮失败
元素点击 ${Select_bk_SQLDB_test} 勾选指定数据库 定位指定数据库勾选框失败
元素点击 ${Select_bk_SQLDB_UNARY} 勾选指定数据库 定位指定数据库勾选框失败
元素点击 ${Button_baseFilter_CDM} 点击过滤设置 定位过滤设置失败
元素点击 ${Button_baseFilter_baseFilterKe_CDM} 点击文字过滤 定位文字过滤设置失败
元素输入 ${Input_baseFilter_keyFilterCon_CDM} test 定位关键字输入框失败
元素点击 ${Button_baseFilter_keyFilterCon_add} 点击添加关键字 定位添加按钮失败
元素点击 ${Button_baseFilter_keyFilterCon_ok} 点击确定确定添加关键字 定位添加按钮失败
元素点击 ${Select_DB_Nextstep} 点击下一步进入任务周期选择界面 定位下一步按钮失败
元素点击 ${AddTaskCycle} 点击添加任务周期 添加任务周期定位失败
元素点击 ${Cycle_Onetime} 选择仅备份一次 定位一次循环模式定位失败
元素点击 ${Cycle_Confirm} 点击确认完成任务周期设置 任务周期确定定位失败
元素点击 ${Cycle_Nextstep} 点击下一步进入备份集存储页面 任务周期下一步定位失败
Comment Run Keyword If ${Pipeline_dedup}==1 管道重删
... ELSE log 不重删
元素点击 ${Storage_Nextstep} 点击下一步进入到备份高级选项页面 定位下一步按钮失败
Run Keyword If ${Pipeline_encryption}==1 管道加密
... ELSE log 不加密
Run Keyword If ${Pipeline_compression}==1 管道压缩
... ELSE log 不压缩
Run Keyword If ${Pipeline_dedup}==1 管道重删
... ELSE log 不重删
Comment Run Keyword If ${check_attr}==1 校验
Comment Run Keyword If ${cache}==1 备份缓存 /opt
Comment 元素点击 ${Senior_Nextstep} 点击下一步进入到信息确认 定位下一步按钮失败
元素点击 ${SQLServer_PolicyComplete} 点击完成策略创建 定位策略完成失败
Sleep 2s
元素点击 ${Success_Confirm} 策略确定创建完毕 定位策略创建成功弹窗失败
MSSQL作业校验 ${random_strategyName}
Log 备份作业执行成功
MSSQL作业校验
[Arguments] ${workname}
# 切换到作业
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
# 输入策略查询
元素输入 ${input_cdm_tab_work_PolicyName} ${workname} 定位关键字输入框失败
元素点击 ${Button_cdm_tab_work_search} 点击查询按钮 定位查询按钮失败
# 确认创建成功了
FOR ${counter} IN RANGE 20
Log ${counter}
${select_text}= Execute Javascript return ${Jquery_select_count}
Log 查询到的作业个数:${select_text}
Run Keyword If '${select_text}' >= '2' Exit For Loop
... ELSE Log 作业尚未创建
Sleep 2s
元素点击 ${Button_cdm_tab_work_search} 点击查询按钮 定位查询按钮失败
END
Log 作业创建成功,正在运行中
# 等待运行完成
FOR ${index} IN RANGE 300
Log 第${index}次查询作业状态
${task_run}= Execute Javascript return ${Jquery_task_status}
Log 作业状态:${task_run}
Run Keyword If '${task_run}' == '成功' or '${task_run}' == '失败' Exit For Loop
... ELSE Log 任务尚未执行完成
Sleep 2s
元素点击 ${Button_cdm_tab_work_search} 点击查询按钮 定位查询按钮失败
END
# 最后再判断一下确保是成功的
Should Be Equal As Strings ${task_run} 成功 任务运行失败
Log 作业策略执行成功
MSSQL_CDM恢复
元素点击 ${Backup_html} 点击进入备份集恢复界面 定位副本数据按钮失败
sleep 5s
# 校验上一步备份产生的结果
元素输入 ${input_policy_backTabPolicy} ${random_strategyName} 定位查询备份策略输入框失败
元素点击 ${Cycle_Search_PolicyName} 点击查询按钮 定位查询按钮失败
# 获取查询到的数量
${select_count}= Execute Javascript return ${Count_bk_num}
Run Keyword If '${select_count}' != '1' Fail 产生的备份集数量不对
... ELSE Log 备份结果正确
#进行恢复
元素点击 xpath=//tr[@data-index=0]//button[@id="backupAction_${random_strategyName}"] 点击展开操作 定位备份集操作按钮下拉框失败
sleep 5s
元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败
sleep 5s
元素点击 ${Recover_Nextstep_SQLServer} 点击下一步进入实例选择界面 定位下一步按钮失败
元素点击 ${Recover_Instance_Select_Nextstep} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target_UNARY} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Select_DB_Nextstep1} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} ${recTargetPath} 定位恢复指定路径输入框失败
Comment 元素点击 xpath=//button[@id="cdm_sqlServer_addRecoveryPolicy_backStep45_btn"] 点击下一步进入确认恢复页面 点击下一步按钮失败
元素点击 ${SQLServer_BackupComplete} 点击完成按钮完成恢复策略创建 定位完成按钮失败
元素点击 ${Btn_Second_Define} 点击确认执行执行恢复 定位确认失败
元素点击 ${Success_Confirm} 确认恢复策略创建完成 定位恢复确认弹窗失败
# 恢复作业的作业名是根据时间来的,这里生成一下
${Date}= Get Current Date result_format=%Y-%m-%d %H:%M
${recoveryname}= Catenate SEPARATOR= 恢复策略 ${Date[:-1]}
Log 恢复作业的名称是:${recoveryname}
MSSQL作业校验 ${recoveryname}
Log 恢复作业执行成功
执行SQL建表
[Arguments] ${tablename} ${hostip} ${CDMSQL_PWD} ${CDMSQL_DB_User} ${CDMMSSql_DB}
执行SQL删表 ${tablename} ${hostip} ${CDMSQL_PWD}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDMSQL_DB_User}',password='${CDMSQL_PWD}',database='${CDMMSSql_DB}'
log 创建数据表
Execute Sql String create table ${tablename}(id int,name char(50))
log 插入数据
Execute Sql String insert into ${tablename} values(1,'aaa')
Execute Sql String insert into ${tablename} values(2,'bbb')
Execute Sql String insert into ${tablename} values(3,'ccc')
${out}= Row Count select * from ${tablename}
Set Suite Variable ${out}
log ${out}
Disconnect From Database
Log 断开数据库连接
执行SQL删表
[Arguments] ${tablename} ${hostip} ${SQLServer_passwd}
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='${CDM_MSSql_DB}'
${row_count} Row Count SELECT \ * FROM dbo.SysObjects WHERE ID = object_id(N'${tablename}') AND OBJECTPROPERTY(ID, 'IsTable') = 1
Run Keyword IF ${row_count}>0 Execute Sql String drop table ${tablename}
Disconnect From Database
Log 断开数据库连接
MSSQL建库
[Arguments] ${databasename} ${hostip} ${SQLServer_passwd}
MSSQL删库 ${databasename} ${hostip} ${SQLServer_passwd}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',autocommit=${True}
log 创建UNARYK库
Execute Sql String create database ${databasename}
Disconnect From Database
Log 断开数据库连接
MSSQL删库
[Arguments] ${databasename} ${hostip} ${SQLServer_passwd}
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='master',autocommit=${True}
${row_count} Row Count SELECT \ * FROM master.dbo.sysdatabases where name='${databasename}'
Run Keyword IF ${row_count}>0 Execute Sql String DROP DATABASE ${databasename}
Disconnect From Database
Log 断开数据库连接
MSSQL建表并插入当前时间点
[Arguments] ${tablename} ${hostip} ${CDMSQL_PWD} ${CDMSQL_DB_User} ${CDMMSSql_DB}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDMSQL_DB_User}',password='${CDMSQL_PWD}',database='${CDMMSSql_DB}'
log 创建数据表
Execute Sql String create table ${tablename}(test char(50))
log 插入数据
${Date}= Get Current Date result_format=%Y%m%d%H%M%S
Log 插入:${Date}
Execute Sql String insert into ${tablename}(test) values('${Date}')
${out}= Row Count select * from ${tablename}
Set Suite Variable ${out}
log ${out}
Disconnect From Database
Log 断开数据库连接
MSSQL删除表
[Arguments] ${tablename} ${hostip} ${SQLServer_passwd} ${CDMMSSql_DB}
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='${CDMMSSql_DB}'
${row_count} Row Count SELECT \ * FROM ${CDMMSSql_DB}.dbo.sysObjects WHERE name='${tablename} '
Run Keyword IF ${row_count}>0 Execute Sql String drop table ${tablename}
Disconnect From Database
Log 断开数据库连接
MSSQL校验
[Arguments] ${tablename} ${hostip} ${SQLServer_passwd} ${CDM_MSSql_DB}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='${CDM_MSSql_DB}'
log 获取函数
${row_count} Row Count SELECT \ * FROM ${CDMMSSql_DB}.dbo.sysObjects WHERE name='${tablename} '
Run Keyword IF ${row_count} == None Return From Keyword ${False}
Run Keyword IF ${row_count}>0 log 存在表${tablename}
... ELSE Fail 表不存在,恢复失败
${result} Row Count select * from ${tablename}
Run Keyword IF "${out}"=="${result}" log 数据校验一致,恢复成功
... ELSE Fail 数据校验不一致,恢复失败
Disconnect From Database
Log 断开数据库连接
执行SQL查询
[Arguments] ${tablename} ${hostip} ${SQLServer_passwd}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='${CDM_MSSql_DB}'
${row_count} Row Count SELECT \ * FROM dbo.SysObjects WHERE ID = object_id(N'${tablename}') AND OBJECTPROPERTY(ID, 'IsTable') = 1
Run Keyword IF ${row_count}>0 log 存在表${tablename}
${out}= Row Count select * from ${tablename}
log ${out}
Return From Keyword ${out}
Disconnect From Database
Log 断开数据库连接
执行SQL校验
[Arguments] ${tablename} ${hostip} ${SQLServer_passwd} ${CDM_MSSql_DB}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='${CDM_MSSql_DB}'
log 获取函数
${row_count} Row Count SELECT \ * FROM dbo.SysObjects WHERE ID = object_id(N'${tablename}') AND OBJECTPROPERTY(ID, 'IsTable') = 1
Run Keyword IF ${row_count} == None Return From Keyword ${False}
Run Keyword IF ${row_count}>0 log 存在表${tablename}
${result} Row Count select * from ${tablename}
Run Keyword IF "${out}"=="${result}" log 数据校验一致,恢复成功
... ELSE Fail 数据校验不一致,恢复失败
执行策略清理
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 ${Cycle_CDM_Policy} 点击进入定时保护策略栏 定位定时数据保护页面失败
元素点击 Xpath=//span[text()="${CDM_MSSql_HostName}"] 选择备份代理 定位备份代理失败
Sleep 10s
元素点击 xpath=//*[@id="compileButton0"]/span[text()="删除"] 点击删除指定策略 定位删除策略按钮失败
元素点击 ${Button_Del_Policy} 确认删除策略 定位确认删除按钮失败
元素点击 ${Success_Confirm} 策略删除成功 策略删除失败
执行备份集清理
[Arguments] ${num}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${CDM_MSSql_HostName}"] 选择备份代理 定位备份代理失败
元素点击 ${CDM_BK} 点击进入副本数据备份集页面 定位副本数据页面失败
元素点击 xpath=//*[@id="backupAction_${num}"] 点击展开操作 定位备份集操作按钮下拉框失败
sleep 5s
元素点击 ${CDM_BK_Del} 点击删除备份集 定位删除按钮失败
sleep 5s
元素点击 ${CDM_Complete_Del} 点击完全删除 定位完全删除失败
元素点击 ${Button_Confirm_Del} 点击确定删除备份集 定位确定按钮失败
元素点击 ${Success_Confirm} 确定完成备份集删除 定位备份集删除确定弹框失败
代理策略预清理
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
Mouse Out ${CDM_dataProtect}
Sleep 5s
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
Sleep 5s
${Policy_Status}= Run Keyword And Return Status Wait Until Element Is Visible xpath=//div[@id="compileButton0"]/span[text()="删除"]
Run Keyword If "${Policy_Status}"=="True" 删除策略
... ELSE Log 无数据残留
Sleep 5s
副本备份集删除加载
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${CDM_BK} 点击进入副本数据备份集页面 定位副本数据备份集页面失败
Sleep 2s
循环点击 xpath=//div[text()="${random_strategyName}"]/../..//button ${CDM_BK_Del}
Sleep 2s
元素点击 ${CDM_BK_Del} 点击删除备份集 定位删除按钮失败
Sleep 2s
元素点击 ${Button_Confirm_Del} 点击确定删除备份集 定位确定按钮失败
元素点击 ${Success_Confirm} 确定完成备份集删除 定位备份集删除确定弹框失败
Sleep 30s
${Same_Bk_Result}= Run Keyword And Return Status Wait Until Element Is Visible xpath=//div[text()="${random_strategyName}"]/../..//button 10s
Run Keyword If ${Same_Bk_Result}==True 副本备份集删除 ${agent_name}
Sleep 30s
元素点击 ${Archive} 点击进入创建归档策略栏 定位左侧创建归档策略栏失败
元素点击 ${Arched_Bk} 点击切换到已归档备份集一栏 定位已归档备份集失败
元素输入 ${Input_Arch_PolicyName} ${archive_policy} 定位归档策略输入框失败
元素点击 ${Button_Search_Policy} 点击搜索查询已归档备份集 定位搜索按钮失败
元素点击 xpath=//tr[1]//div[text()="${random_strategyName}"]/../..//button[text()="加载"] 点击加载备份集 定位备份集加载按钮失败
元素输入 ${Input_Load_PolicyName} 加载${random_strategyName}备份集 定位加载策略输入框失败
元素点击 ${Complete_Load_Policy} 点击完成加载策略 定位完成按钮失败
元素点击 ${Success_Confirm} 确定备份集加载任务启动成功 定位备份集加载确定弹框失败
元素点击 ${Archive_Monitor} 点击切换到归档任务监控界面 定位归档任务监控栏失败
元素输入 ${Archive_Task_Name} ${random_strategyName} 定位归档任务输入框失败
元素点击 ${Search_Archive_Task} 点击查询按钮搜索归档任务 定位归档任务查询按钮失败
FOR ${n} IN RANGE 10
${jz_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//td[contains(text(),"加载成功")]
Run Keyword If "${jz_status}"=="True" Exit For Loop
... ELSE Log 加载未完成
Sleep 30s
END
Run Keyword If "${jz_status}"=="False" Fail
... ELSE Log 加载成功
元素点击 ${Timed_DataProtect} 点击进入定时数据保护页面 定位定时数据保护失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${BackupSet} 点击进入备份集一栏 定位备份集栏失败
Sleep 2s
删除策略
元素点击 xpath=//div[@id="compileButton0"]/span[text()="删除"] 点击删除策略 定位策略删除按钮失败
元素点击 ${Button_Del_Policy} 确认删除策略 定位确认删除按钮失败
元素点击 ${Success_Confirm} 策略删除成功 策略删除失败
副本备份集删除
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${CDM_BK} 点击进入副本数据备份集页面 定位副本数据备份集页面失败
Sleep 2s
循环点击 xpath=//div[text()="${random_strategyName}"]/../..//button ${CDM_BK_Del}
Sleep 2s
元素点击 ${CDM_BK_Del} 点击删除备份集 定位删除按钮失败
Sleep 2s
元素点击 ${Button_Confirm_Del} 点击确定删除备份集 定位确定按钮失败
元素点击 ${Success_Confirm} 确定完成备份集删除 定位备份集删除确定弹框失败
Sleep 30s
副本备份集加载
[Arguments] ${agent_name}
元素点击 ${Archive} 点击进入创建归档策略栏 定位左侧创建归档策略栏失败
元素点击 ${Arched_Bk} 点击切换到已归档备份集一栏 定位已归档备份集失败
元素输入 ${Input_Arch_PolicyName} ${archive_policy} 定位归档策略输入框失败
元素点击 ${Button_Search_Policy} 点击搜索查询已归档备份集 定位搜索按钮失败
元素点击 xpath=//tr[1]//div[text()="${random_strategyName}"]/../..//button[text()="加载"] 点击加载备份集 定位备份集加载按钮失败
元素输入 ${Input_Load_PolicyName} 加载${random_strategyName}备份集 定位加载策略输入框失败
元素点击 ${Complete_Load_Policy} 点击完成加载策略 定位完成按钮失败
元素点击 ${Success_Confirm} 确定备份集加载任务启动成功 定位备份集加载确定弹框失败
元素点击 ${Archive_Monitor} 点击切换到归档任务监控界面 定位归档任务监控栏失败
元素输入 ${Archive_Task_Name} ${random_strategyName} 定位归档任务输入框失败
元素点击 ${Search_Archive_Task} 点击查询按钮搜索归档任务 定位归档任务查询按钮失败
FOR ${n} IN RANGE 10
${jz_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//td[contains(text(),"加载成功")]
Run Keyword If "${jz_status}"=="True" Exit For Loop
... ELSE Log 加载未完成
Sleep 30s
END
Run Keyword If "${jz_status}"=="False" Fail
... ELSE Log 加载成功
元素点击 ${Timed_DataProtect} 点击进入定时数据保护页面 定位定时数据保护失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${BackupSet} 点击进入备份集一栏 定位备份集栏失败
Sleep 2s
sqlserverCDM恢复_磁带库
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Sleep 10s
元素点击 xpath=//td[text()="${random_strategyName}"]/..//span[text()="恢复"] 点击恢复进入备份集恢复界面 定位恢复按钮失败
sleep 5s
元素点击 xpath=//div[text()="${random_strategyName}"]/../..//button 点击展开操作 定位备份集操作按钮下拉框失败
sleep 5s
元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败
sleep 5s
元素点击 ${Recover_Nextstep_SQLServer} 点击下一步进入实例选择界面 定位下一步按钮失败
元素点击 ${Recover_Instance_Select_Nextstep} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Select_DB_Nextstep1} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} E: 定位恢复指定路径输入框失败
元素点击 ${Sqlserver_Rec_NextStep_4} 点击进入信息确认界面 定位下一步按钮失败
元素点击 ${Sqlserver_Rec_Complete} 点击完成按钮,完成复策略创建 定位完成按钮失败
元素点击 ${Success_Confirm} 确认恢复策略创建完成 定位恢复确认弹窗失败
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
Sleep 2s
${Time_out} Run Keyword And Return Status Wait Until Element Is Visible ${Success_Confirm}
Run Keyword If ${Time_out}==True 元素点击 ${Success_Confirm} 点击连接超时的失败按钮 定位超时弹窗失败
副本代理选择 ${CDM_Sqlserver_Des_name}
Sleep 60s
Wait Until Element Is Visible ${Recover_Status} 30s 定位恢复状态失败
Log 恢复成功
Sqlserver立即执行
[Arguments] ${bk_style}
元素点击 ${Run_Now} 点击立即执行按钮成功 定位立即执行按钮失败
循环点击 ${Now_Run_Type} ${Option_Permanent_increment}
Run Keyword If "${bk_style}"=="完全" Click Element ${Option_Fullbk}
... ELSE IF "${bk_style}"=="增量" Click Element ${Option_Increbk}
... ELSE IF "${bk_style}"=="永久增量" Click Element ${Option_Permanent_increment}
元素点击 ${Cycle_Run_Now_Finish} 点击完成按钮成功 定位完成按钮失败
元素点击 ${Cycle_Restore_Finish_OK} 点击添加成功按钮 定位添加成功按钮失败
元素点击 ${Select_JobHtml} 点击作业按钮 定位作业界面失败
log 开始备份
FOR ${n} IN RANGE 60
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//tbody/tr[1]/td/div[text()="成功"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 30s
END
Run Keyword If ${bk_status}==False Fail
... ELSE Log 备份成功
Sleep 2s
Sqlserver恢复_归档
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
Sleep 5s
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Sleep 2s
元素点击 xpath=//td[text()="${random_strategyName}"]/..//span[text()="恢复"] 点击恢复进入备份集恢复界面 定位恢复按钮失败
Sleep 5s
元素点击 xpath=//button[@id="backupAction_1"] 点击展开操作 定位备份集操作按钮下拉框失败
元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败
元素点击 ${Recover_Nextstep} 点击下一步进入实例选择界面 定位下一步按钮失败
元素点击 ${Recover_Instance_Select_Nextstep} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${SqlServer_Recover_Target_Nextstep} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} E: 定位恢复指定路径输入框失败
元素点击 ${Complete_Mssql_Rec} 点击完成按钮完成恢复策略创建 定位完成按钮失败
元素点击 ${Success_Confirm} 确认恢复策略创建完成 定位恢复确认弹窗失败
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
Sleep 60s
Wait Until Element Is Visible ${Recover_Status} 30s 定位恢复状态失败
Log 恢复成功
归档路径查询_Sqlserver
[Arguments] ${agent_name} ${tape_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
Sleep 5s
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Sleep 2s
元素点击 xpath=//td[text()="${random_strategyName}"]/..//span[text()="恢复"] 点击恢复进入备份集恢复界面 定位恢复按钮失败
Sleep 5s
循环点击 xpath=//button[@id="backupAction_0"] ${Sqlserver_Bk_More}
元素点击 ${Sqlserver_Bk_More} 点击详情查看备份集属性 定位详情失败
元素点击 ${Archpath} 点击归档路径查询 定位归档路径查询按钮失败
Wait Until Element Is Visible xpath=//div[text()="${tape_name}"] 15s 归档路径查询失败
副本代理选择
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护失败
元素输入 ${Search_Agent} ${agent_name} 定位代理名称输入框失败
元素点击 xpath=//span[text()="${agent_name}"] 点击选择代理 定位代理所在位置失败
副本备份集删除加载_D2D2B
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${CDM_BK} 点击进入副本数据备份集页面 定位副本数据备份集页面失败
Sleep 2s
循环点击 xpath=//div[text()="${random_strategyName}"]/../..//button ${CDM_BK_Del}
Sleep 2s
元素点击 ${CDM_BK_Del} 点击删除备份集 定位删除按钮失败
Sleep 2s
元素点击 ${Button_Confirm_Del} 点击确定删除备份集 定位确定按钮失败
元素点击 ${Success_Confirm} 确定完成备份集删除 定位备份集删除确定弹框失败
Sleep 30s
元素点击 ${Archive} 点击进入创建归档策略栏 定位左侧创建归档策略栏失败
元素点击 ${Arched_Bk} 点击切换到已归档备份集一栏 定位已归档备份集失败
元素输入 ${Input_Arch_PolicyName} ${archive_policy} 定位归档策略输入框失败
元素点击 ${Button_Search_Policy} 点击搜索查询已归档备份集 定位搜索按钮失败
Sleep 300s
元素点击 xpath=//tr[1]//div[text()="${random_strategyName}"]/../..//button[text()="加载"] 点击加载备份集 定位备份集加载按钮失败
元素输入 ${Input_Load_PolicyName} 加载${random_strategyName}备份集 定位加载策略输入框失败
元素点击 ${Complete_Load_Policy} 点击完成加载策略 定位完成按钮失败
元素点击 ${Success_Confirm} 确定备份集加载成功 定位备份集加载确定弹框失败
元素点击 ${Timed_DataProtect} 点击进入副本数据管理页面 定位副本数据管理失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${BackupSet} 点击进入副本数据一栏 定位副本数据栏失败
Sleep 2s
sqlserverCDM恢复_D2D2B
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
元素点击 ${CDM_BK} 点击进入备份集恢复界面 定位副本数据按钮失败
sleep 5s
元素点击 xpath=//button[@id="backupAction_0"] 点击展开操作 定位备份集操作按钮下拉框失败
sleep 5s
元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败
sleep 5s
元素点击 ${Recover_Nextstep_SQLServer} 点击下一步进入实例选择界面 定位下一步按钮失败
元素点击 ${Recover_Instance_Select_Nextstep} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Select_DB_Nextstep1} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} E: 定位恢复指定路径输入框失败
元素点击 ${Sqlserver_Rec_NextStep_4} 点击进入信息确认界面 定位下一步按钮失败
元素点击 ${Sqlserver_Rec_Complete} 点击完成按钮,完成复策略创建 定位完成按钮失败
元素点击 ${Success_Confirm} 确认恢复策略创建完成 定位恢复确认弹窗失败
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
Sleep 2s
${Time_out} Run Keyword And Return Status Wait Until Element Is Visible ${Success_Confirm}
Run Keyword If ${Time_out}==True 元素点击 ${Success_Confirm} 点击连接超时的失败按钮 定位超时弹窗失败
副本代理选择 ${CDM_Sqlserver_Des_name}
Sleep 80s
Wait Until Element Is Visible ${Recover_Status} 60s 定位恢复状态失败
Log 恢复成功
副本备份集删除加载_d2d2c
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${CDM_BK} 点击进入副本数据备份集页面 定位副本数据备份集页面失败
Sleep 2s
循环点击 id=backupAction_${random_strategyName} ${CDM_BK_Del}
Sleep 2s
元素点击 ${CDM_BK_Del} 点击删除备份集 定位删除按钮失败
Sleep 2s
元素点击 ${Button_Confirm_Del} 点击确定删除备份集 定位确定按钮失败
元素点击 ${Success_Confirm} 确定完成备份集删除 定位备份集删除确定弹框失败
Sleep 30s
元素点击 ${Archive} 点击进入创建归档策略栏 定位左侧创建归档策略栏失败
元素点击 ${Arched_Bk} 点击切换到已归档备份集一栏 定位已归档备份集失败
元素输入 ${Input_Arch_PolicyName} ${archive_policy} 定位归档策略输入框失败
FOR ${n} IN RANGE 10
元素点击 ${Button_Search_Policy} 点击搜索查询已归档备份集 定位搜索按钮失败
${jz_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//tr[1]//div[text()="${random_strategyName}"]/../..//button[text()="加载"]
Run Keyword If "${jz_status}"=="True" Exit For Loop
... ELSE Log 加载按钮未出现
Sleep 35s
END
元素点击 ${Button_Search_Policy} 再次点击搜索查询已归档备份集 定位搜索按钮失败
元素点击 xpath=//tr[1]//div[text()="${random_strategyName}"]/../..//button[text()="加载"] 点击加载备份集 定位备份集加载按钮失败
元素输入 ${Input_Load_PolicyName} 加载${random_strategyName}备份集 定位加载策略输入框失败
元素点击 ${Complete_Load_Policy} 点击完成加载策略 定位完成按钮失败
元素点击 ${Success_Confirm} 确定备份集加载成功 定位备份集加载确定弹框失败
元素点击 ${Timed_DataProtect} 点击进入定时数据保护页面 定位定时数据保护失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${BackupSet} 点击进入备份集一栏 定位备份集栏失败
Sleep 2s
sqlserverCDM恢复_d2d2c
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
元素点击 Xpath=//*[@id="cdm_tab_backupset_li"]/span 点击进入备份集恢复界面 定位副本数据按钮失败
sleep 5s
元素点击 xpath=//button[@id="backupAction_0"] 点击展开操作 定位备份集操作按钮下拉框失败
sleep 5s
元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败
sleep 5s
元素点击 ${Recover_Nextstep_SQLServer} 点击下一步进入实例选择界面 定位下一步按钮失败
元素点击 ${Recover_Instance_Select_Nextstep} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Select_DB_Nextstep1} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} E: 定位恢复指定路径输入框失败
元素点击 ${Sqlserver_Rec_NextStep_4} 点击进入信息确认界面 定位下一步按钮失败
元素点击 ${Sqlserver_Rec_Complete} 点击完成按钮,完成复策略创建 定位完成按钮失败
元素点击 ${Success_Confirm} 确认恢复策略创建完成 定位恢复确认弹窗失败
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
Sleep 2s
${Time_out} Run Keyword And Return Status Wait Until Element Is Visible ${Success_Confirm}
Run Keyword If ${Time_out}==True 元素点击 ${Success_Confirm} 点击连接超时的失败按钮 定位超时弹窗失败
副本代理选择 ${CDM_Sqlserver_Des_name}
Sleep 60s
Wait Until Element Is Visible ${Recover_Status} 30s 定位恢复状态失败
Log 恢复成功
Sqlserver立即执行_归档
[Arguments] ${agent_name} ${bk_style} # 代理名称|备份类型
元素点击 ${CDM_dataProtect} 点击进入副本数据管理页面 定位副本数据管理页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${Run_Now} 点击立即执行按钮成功 定位立即执行按钮失败
sleep 2s
循环点击 ${Now_Run_Type} ${Option_Increbk}
Run Keyword If "${bk_style}"=="完全" Click Element ${Option_Fullbk}
... ELSE IF "${bk_style}"=="增量" Click Element ${Option_Increbk}
元素点击 ${Cycle_Run_Now_Finish} 点击完成按钮成功 定位完成按钮失败
元素点击 ${Cycle_Restore_Finish_OK} 点击添加成功按钮 定位添加成功按钮失败
元素点击 ${Select_JobHtml} 点击作业按钮 定位作业界面失败
log 开始备份
FOR ${n} IN RANGE 60
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//div[text()="${random_strategyName}"]/../../..//tr[1]//div[text()="成功"]
Run Keyword If "${bk_status}"=="True" Exit For Loop
... ELSE Log 备份未完成
Sleep 30s
END
Run Keyword If ${bk_status}==False Fail
... ELSE Log 备份成功
Sleep 2s
Sqlserver恢复_同步
[Arguments] ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
Sleep 5s
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Sleep 2s
${Backup_Recover}= catenate SEPARATOR=_ cdmPolicy_recovery ${random_strategyName}
元素点击 ${Backup_Recover} 点击恢复进入备份集恢复界面 定位恢复按钮失败
Sleep 5s
${Backup_Act}= catenate SEPARATOR=_ backupAction ${random_strategyName}
${Backup_Rec}= catenate SEPARATOR=_ cdmBkset_recovery ${random_strategyName}
循环点击 ${Backup_Act} ${Backup_Rec}
元素点击 ${Backup_Rec} 点击恢复按钮 定位恢复按钮失败
元素输入 ${Input_Sync_Name} ${Sys_Admin} 定位鉴权用户名输入框失败
元素输入 ${Input_Sync_Pwd} ${WebPWD} 定位鉴权密码输入框失败
元素点击 ${Sync_Confirm} 点击确定完成鉴权 定位鉴权确定按钮失败
元素点击 ${Sqlserver_Select_Agent} 点击展开恢复代理 定位展开恢复代理失败
元素点击 xpath=//dd[contains(text(),'${CDM_Sqlserver_Des_name}')] 选择目标端代理 定位目标端代理失败
元素点击 ${Sqlserver_Rec_NextStep_1} 点击下一步进入实例选择界面 定位下一步按钮失败
元素点击 ${Sqlserver_Rec_NextStep_2} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Sqlserver_Rec_NextStep_3} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} E: 定位恢复指定路径输入框失败
元素点击 ${Sqlserver_Rec_Complete} 点击完成按钮,完成恢复策略创建 定位完成按钮失败
元素点击 ${confirm_restore} 点击确定恢复 定位恢复确定按钮失败
元素点击 ${Success_Confirm} 确认恢复策略创建完成 定位恢复确认弹窗失败
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
Sleep 2s
${Time_out} Run Keyword And Return Status Wait Until Element Is Visible ${Success_Confirm}
Run Keyword If ${Time_out}==True 元素点击 ${Success_Confirm} 点击连接超时的失败按钮 定位超时弹窗失败
副本代理选择 ${CDM_Sqlserver_Des_name}
Sleep 120s
Wait Until Element Is Visible ${Recover_Status} 30s 定位恢复状态失败
Log 恢复成功
SQLserver_cdm策略清理
Sleep 2s
FOR ${n} IN RANGE 3
${policy_status} Run Keyword And Return Status Wait Until Element Is Visible xpath=//tr[@class=" ev_dhx_web"]
Run Keyword If ${policy_status}==False log 无残留策略
... ELSE 策略删除_SQLserverCDM
sleep 5s
END
Log 环境清理完毕
策略删除_SQLserverCDM
循环点击 ${SQLserver_Policy_Delete} ${SQLserver_Policy_Delete_Confirm}
元素点击 ${SQLserver_Policy_Delete_Confirm} 点击确认删除成功 定位确认按钮失败
元素点击 ${Delete_succeeded_OK} 点击删除成功 定位删除成功按钮失败
windows身份验证
元素点击 ${Button_RecoveryIdentifyVarification_CDM} 点击身份验证下拉框成功 点击身份验证下拉框失败
元素点击 ${Add_Policy_NextStep} 点击进入下一步实例选择页面 定位下一步按钮失败
SQLserver身份验证
元素点击 ${SQLServer_down} 身份验证下拉框 定位身份验证下拉框失败
元素点击 ${SQLServer_Shenfen} 选择SQL身份验证 定位SQL身份验证失败
元素点击 ${Sqlserver_CDM_NextStep_1} 点击进入下一步实例选择页面 定位下一步按钮失败
元素输入 ${SQLServer_Pwd} ${CDM_MSSql_DB_PWD1} 定位密码输入框失败
插入SQLserver数据
[Arguments] ${tablename} ${hostip} ${SQLServer_passwd}
log 连接数据库
Connect To Database Using Custom Params pymssql host='${hostip}',user='${CDM_MSSql_DB_User}',password='${SQLServer_passwd}',database='${CDM_MSSql_DB}'
log 插入数据表
log 插入数据
Execute Sql String insert into ${tablename} select * from ${tablename}
log 获取行数
${out}= Row Count select * from ${tablename}
Set Suite Variable ${out}
log ${out}
Disconnect From Database
Log 断开数据库连接
Sqlserver备份_归档
[Arguments] ${agent_name} ${bk_type} ${mds_name} ${pipelineEncryption} ${pipelineCompress} ${pipelineDedup}
代理策略预清理 ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${Add_Sqlserver_Policy} 点击添加策略按钮 定位策略添加按钮失败
元素点击 ${SQLServer_CDM_Module} 选择sqlserver数据模块 定位sqlserver模块失败
${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
元素输入 ${Policy_Name} ${random_strategyName} 定位策略名输入框失败
元素点击 ${Add_Policy_NextStep} 点击进入下一步实例选择页面 定位下一步按钮失败
元素点击 ${Instance_Nextstep} 点击进入下一步目标数据库选择页面 定位下一步按钮失败
元素点击 ${Select_Bk_DB} 勾选指定数据库 定位指定数据库勾选框失败
元素点击 ${Select_DB_Nextstep} 点击下一步进入任务周期选择界面 定位下一步按钮失败
元素点击 ${AddTaskCycle} 点击添加任务周期 添加任务周期定位失败
Run Keyword If "${bk_type}"=="完全" KeyWord_Sqlserver.完全备份
... ELSE IF "${bk_type}"=="增量" KeyWord_Sqlserver.增量备份
元素点击 ${Cycle_Onetime} 选择仅备份一次 定位一次循环模式定位失败
元素点击 ${Cycle_Confirm} 点击确认完成任务周期设置 任务周期确定定位失败
元素点击 ${Cycle_Nextstep} 点击下一步进入备份集存储页面 任务周期下一步定位失败
元素点击 ${Input_Choose_MDS} 选择手动指定MDS介质 定位手动选择MDS介质选项失败
元素点击 ${Select_MDS_CDM} 点击展开介质选项下拉框 定位介质下拉框失败
元素点击 xpath=//select[@id="dialogues_addCycleStorage_storagePath_selectMedia_selectedMdsIP_select"]/option[@label="${mds_name}"] 点击选择指定介质 定位指定介质失败
元素点击 ${Storage_Nextstep} 点击下一步进入到备份高级选项页面 定位下一步按钮失败
Run Keyword If ${pipelineEncryption}==1 管道加密
Run Keyword If ${pipelineCompress}==1 管道压缩
Run Keyword If ${pipelineDedup}==1 管道重删
comment 元素点击 ${CDM_Sqlserver_NextStep_6} 点击进入到信息确认界面 定位备份高级选项下一步失败
comment 元素点击 ${Complete_Add_Policy} 点击完成策略创建 定位策略完成失败
元素点击 ${Btn_Finish_Sqlserver} 点击完成策略创建 定位策略完成失败
Sleep 2s
元素点击 ${Success_Confirm} 策略确定创建完毕 定位策略创建成功弹窗失败
FOR ${n} IN RANGE 10
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//td[text()="${random_strategyName}"]/../td[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 60s
Sqlserver备份_限速
[Arguments] ${agent_name} ${mds_name} ${bk_speed} ${SQLserver_CheckType}=SQLserver
代理策略预清理 ${agent_name}
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Mouse Out Xpath=//span[text()="${agent_name}"]
元素点击 ${Add_Sqlserver_Policy} 点击添加策略按钮 定位策略添加按钮失败
元素点击 ${SQLServer_CDM_Module} 选择sqlserver数据模块 定位sqlserver模块失败
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${random_strategyName}= Catenate SEPARATOR=_ Sqlserver_CDM ${date}
Set Suite Variable ${random_strategyName}
Log 切换为全局变量
Sleep 5s
元素输入 ${Policy_Name} ${random_strategyName} 定位策略名输入框失败
Run Keyword If "${SQLserver_CheckType}"=="Windows" windows身份验证
... ELSE IF "${SQLserver_CheckType}"=="SQLserver" SQLserver身份验证
元素点击 ${Sqlserver_CDM_NextStep_2} 点击下一步进入目标数据库界面 定位实例选择下一步按钮失败
元素点击 ${Select_Bk_DB} 勾选指定数据库 定位指定数据库勾选框失败
元素点击 ${Sqlserver_CDM_NextStep_3} 点击下一步进入任务周期界面 定位目标数据库下一步按钮失败
元素点击 ${AddTaskCycle} 点击添加任务周期 添加任务周期定位失败
元素点击 ${Cycle_Onetime} 选择仅备份一次 定位一次循环模式定位失败
元素点击 ${Cycle_Confirm} 点击确认完成任务周期设置 任务周期确定定位失败
元素点击 ${Sqlserver_CDM_NextStep_4} 点击下一步进入备份集存储页面 定位任务周期下一步定位失败
元素点击 ${Input_Choose_MDS} 选择手动指定MDS介质 定位手动选择MDS介质选项失败
元素点击 ${Select_MDS_CDM} 点击展开介质选项下拉框 定位介质下拉框失败
元素点击 xpath=//select[@id="dialogues_addCycleStorage_storagePath_selectMedia_selectedMdsIP_select"]/option[text()="${mds_name}"] 点击选择指定介质 定位指定介质失败
元素点击 ${Sqlserver_CDM_NextStep_5} 点击下一步进入到备份高级选项页面 定位下一步按钮失败
元素点击 ${CDM_Speed_Control} 点击创建限速策略 定位创建限速策略失败
元素输入 ${CDM_Input_Speed} ${bk_speed} 定位限速输入框失败
元素点击 ${Btn_Finish_Sqlserver} 点击完成策略创建 定位策略完成失败
Sleep 2s
元素点击 ${Success_Confirm} 策略确定创建完毕 定位策略创建成功弹窗失败
Sleep 30s
Sqlserver恢复_限速
[Arguments] ${agent_name} ${recover_speed}
FOR ${n} IN RANGE 10
${bk_status} Run Keyword And Return Status Wait Until Element Is Visible Xpath=//td[text()="${random_strategyName}"]/../td[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 2s
元素点击 ${CDM_dataProtect} 点击进入副本数据保护页面 定位副本数据保护页面失败
Sleep 5s
元素点击 Xpath=//span[text()="${agent_name}"] 选择备份代理 定位备份代理失败
Sleep 2s
元素点击 xpath=//td[text()="${random_strategyName}"]/..//span[text()="恢复"] 点击恢复进入备份集恢复界面 定位恢复按钮失败
Sleep 5s
comment 元素点击 xpath=//button[@id="backupAction_0"] 点击展开操作 定位备份集操作按钮下拉框失败
元素点击 xpath=//div[text()="${random_strategyName}"]/../..//button 点击展开操作 定位备份集操作按钮下拉框失败
元素点击 ${CDM_BK_Recover} 点击恢复操作 定位恢复按钮失败
元素点击 ${Sqlserver_Select_Agent} 点击展开恢复代理 定位展开恢复代理失败
元素点击 xpath=//dd[contains(text(),"${agent_name}")] 选择目标端代理 定位目标端代理失败
元素点击 ${Sqlserver_Rec_NextStep_1} 点击下一步进入实例选择界面 定位下一步按钮失败
元素点击 ${Sqlserver_Rec_NextStep_2} 点击下一步进入目标数据库选择界面 定位下一步按钮失败
元素点击 ${Recover_Target} 点击勾选恢复的数据库 定位需要恢复的数据库失败
元素点击 ${Sqlserver_Rec_NextStep_3} 点击下一步进入高级选项 定位下一步按钮失败
元素点击 ${Origin_Name_Recover} 点击勾选原名恢复 定位异名恢复按钮失败
元素输入 ${Recover_xpath} E: 定位恢复指定路径输入框失败
元素点击 ${Sqlserver_Rec_Complete} 点击完成按钮 定位完成按钮失败
元素点击 ${Btn_Second_Define} 二次确认执行恢复操作 定位确认恢复按钮失败
元素点击 ${Success_Confirm} 恢复策略添加成功 定位恢复策略添加成功弹窗的确认按钮失败
Sqlserver备份集校验_限速
[Arguments] ${agent_name}
元素点击 ${Normal_Tab_Work} 点击切换到作业栏 定位作业栏失败
Sleep 2s
${Time_out} Run Keyword And Return Status Wait Until Element Is Visible ${Success_Confirm}
Run Keyword If ${Time_out}==True 元素点击 ${Success_Confirm} 点击连接超时的失败按钮 定位超时弹窗失败
副本代理选择 ${agent_name}
Sleep 60s
Wait Until Element Is Visible ${Recover_Status} 30s 定位恢复状态失败
Log 恢复成功