*** 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 恢复成功