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

407 lines
18 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

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

*** Settings ***
Library SSHLibrary
Library Selenium2Library
Resource ElementPath.robot
#Library ../../Script/SC0_Common/00_Initial/Vsphere.py
Library DatabaseLibrary
#Library AutoItLibrary
Library Process
*** Keywords ***
登录黑方
[Arguments] ${IPaddress} ${login_name} ${login_pwd} # 黑方服务器IP地址 \| 登录名称 \| 登录密码
Open Browser ${IPaddress} ff
Sleep 2s
Set Window Size 1920 1080
Log 切换浏览器窗口 1920*1080
Wait Until Element Is Visible ${Bc_Logo} 60s 浏览器打开失败
Sleep 5s
元素输入 ${Input_UserName} ${login_name} 定位用户名输入框失败
元素输入 ${Input_UserPWD} ${login_pwd} 定位用户密码输入框失败
元素点击 ${Button_Login} 点击登录按钮 定位登录按钮失败
Wait Until Page Contains Element xpath=//span[text()="${login_name}"] 60s 用户登录失败
Log ${login_name}登录成功
Sleep 5s
元素点击
[Arguments] ${location} ${log_localsuccess} ${log_localfail} ${sleeptime}=30s
[Documentation] 元素点击:
... 点击页面上某个元素
...
... 用法:
... 元素点击 \ \ 元素路径 \ \ 元素点击成功输出的日志 \ \ \ 元素点击失败输出的日志 \ \ \ 等待N秒直到元素出现
Wait Until Page Contains Element ${location} ${sleeptime} ${log_localfail}
Set Focus To Element ${location}
Click Element ${location}
Log ${log_localsuccess}
Sleep 5s
元素输入
[Arguments] ${location} ${input_content} ${log_localfail} ${sleeptime}=30s
Wait Until Element Is Visible ${location} ${sleeptime} ${log_localfail}
Set Focus To Element ${location}
Input Text ${location} ${input_content}
Log 输入内容为${input_content}
Sleep 2s
关闭浏览器
Close Browser
Log 浏览器关闭成功
关闭全部浏览器
Close All Browsers
Log 全部浏览器关闭成功
系统初始化
[Arguments] ${ip} ${username} ${password} ${path} ${snapname} ${bc_ip} ${bc_root} ${bc_pwd} # esxi IP地址|登录账号|登录密码|虚拟机文件|快照名称|黑方ip|黑方用户|黑方密码
Sphere Login ${ip} ${username} ${password}
Log 登录esxi成功
Vm Revert Snapshot ${path} ${snapname}
Log 恢复指定虚拟机快照
Vm Poweron ${path}
Log 开启虚拟机
Sleep 240s
Open Connection ${bc_ip}
SSHLibrary.Login ${bc_root} ${bc_pwd}
Log 黑方连接成功
FOR ${n} IN RANGE 10
Execute Command systemctl status unabackup > /bc_status.txt
${bc_status} Execute Command grep "unabackup start success" /bc_status.txt
${bc_status_length} Get Length ${bc_status}
Run Keyword If ${bc_status_length}>0 Exit For Loop
... ELSE Log 黑方服务还未启动
Sleep 30s
END
Run Keyword If ${bc_status_length}==0 Fail
... ELSE Log 黑方服务已启动
Close Connection
密码初始化
[Arguments] ${new_pwd}
登录黑方 ${Plantform_BC_Url} ${Sys_Admin} ${DefaultPWD}
${change_pwd_window}= Run Keyword And Return Status Wait Until Element Is Visible ${Change_Pwd}
Run Keyword If '${change_pwd_window}'=='True' 修改密码 ${DefaultPWD} ${new_pwd}
... ELSE Close Browser
Sleep 2s
Log ${Sys_Admin}密码初始化完毕
Close Browser
登录黑方 ${Plantform_BC_Url} ${Sec_Admin} ${DefaultPWD}
${change_pwd_window}= Run Keyword And Return Status Wait Until Element Is Visible ${Change_Pwd}
Run Keyword If '${change_pwd_window}'=='True' 修改密码 ${DefaultPWD} ${new_pwd}
... ELSE Close Browser
Sleep 2s
Log ${Sec_Admin}密码初始化完毕
Close Browser
登录黑方 ${Plantform_BC_Url} ${Aud_Admin} ${DefaultPWD}
${change_pwd_window}= Run Keyword And Return Status Wait Until Element Is Visible ${Change_Pwd}
Run Keyword If '${change_pwd_window}'=='True' 修改密码 ${DefaultPWD} ${new_pwd}
... ELSE Close Browser
Sleep 2s
Log ${Aud_Admin}密码初始化完毕
Close Browser
修改密码
[Arguments] ${old_pwd} ${new_pwd} # 旧密码|新密码
Wait Until Element Is Visible ${Change_Pwd} 30s 定位修改密码窗口失败
Sleep 2s
Wait Until Element Is Visible ${Input_Email} 10s 定位邮箱输入框失败
Set Focus To Element ${Input_Email}
Input Text ${Input_Email} ${Email}
Sleep 2s
Wait Until Element Is Visible ${Input_old_pwd} 10s 定位旧密码输入框失败
Set Focus To Element ${Input_old_pwd}
Input Text ${Input_old_pwd} ${old_pwd}
Sleep 2s
Wait Until Element Is Visible ${Input_new_pwd} 10s 定位新密码输入框失败
Set Focus To Element ${Input_new_pwd}
Input Text ${Input_new_pwd} ${new_pwd}
Sleep 2s
Wait Until Element Is Visible ${Input_verify_pwd} 10s 定位新密码确认输入框失败
Set Focus To Element ${Input_verify_pwd}
Input Text ${Input_verify_pwd} ${new_pwd}
Sleep 5s
Wait Until Element Is Visible ${Change_success_confirm} 10s 定位确定按钮失败
Set Focus To Element ${Change_success_confirm}
Click Element ${Change_success_confirm}
Sleep 2s
试用授权
登录黑方 ${Plantform_BC_Url} ${Sys_Admin} ${WebPWD}
Wait Until Element Is Visible ${System_Config} 30s 定位系统设置栏失败
Set Focus To Element ${System_Config}
Click Element ${System_Config}
Log 进入系统设置栏
Sleep 2s
Wait Until Element Is Visible ${Bc_Auth} 30s 定位产品授权栏失败
Set Focus To Element ${Bc_Auth}
Click Element ${Bc_Auth}
Log 进入产品授权管理栏
Sleep 2s
Wait Until Element Is Visible ${Temp_Auth} 30s 定位产品试用授权失败
Set Focus To Element ${Temp_Auth}
Click Element ${Temp_Auth}
Log 点击试用
Sleep 2s
Wait Until Element Is Visible ${Bc_Auth_confirm} 30s 定位确认试用按钮失败
Set Focus To Element ${Bc_Auth_confirm}
Click Element ${Bc_Auth_confirm}
Log 点击确认试用
Sleep 2s
Close Browser
关闭页面锁定
登录黑方 ${Plantform_BC_Url} ${Sys_Admin} ${WebPWD}
Wait Until Element Is Visible ${System_Config} 30s 定位系统设置栏失败
Set Focus To Element ${System_Config}
Click Element ${System_Config}
Log 进入系统设置栏
Sleep 2s
Wait Until Element Is Visible ${Button_ChangeLockTime} 30s 定位更改锁定时间按钮失败
Set Focus To Element ${Button_ChangeLockTime}
Click Element ${Button_ChangeLockTime}
Log 点击锁定时间更改按钮
Sleep 2s
Wait Until Element Is Visible ${Input_SessionLock} 30s 定位会话锁定时间输入框失败
Set Focus To Element ${Input_SessionLock}
Input Text ${Input_SessionLock} 60
Log 设置会话锁定时间为60
Sleep 2s
Wait Until Element Is Visible ${SessionLock_confirm} 30s 定位确认更改会话锁定失败
Set Focus To Element ${SessionLock_confirm}
Click Element ${SessionLock_confirm}
Log 设置会话锁定成功
Wait Until Element Is Visible ${Change_Locktime_Success} 30s 锁定时间设置失败
Click Element ${Success_Confirm}
打开黑方登录页面
[Arguments] ${IPaddress} # 黑方地址
Open Browser ${IPaddress} ff \ \ \ \ \ \ C:/Python38/geckodriver.exe
Sleep 2s
Set Window Size 1920 1080
Log 切换浏览器窗口 1920*1080
Wait Until Element Is Visible ${Bc_Logo} 60s 浏览器打开失败
Sleep 5s
黑方服务重启
[Arguments] ${ip} ${user} ${pwd} # 黑方ip|ssh用户名|ssh密码
Open Connection ${ip}
SSHLibrary.Login ${user} ${pwd}
Log 黑方连接成功
Execute Command service unabackup restart
Sleep 300s
Close Connection
黑方Mysql解限 ${ip} ${user} ${pwd}
循环点击
[Arguments] ${locator1} ${locator2} ${sleep_time}=5s # 需要点击的元素|预计应该看到的元素|默认等待时间
FOR ${n} IN RANGE 10
Sleep ${sleep_time}
Set Focus To Element ${locator1}
Click Element ${locator1}
Sleep ${sleep_time}
${status}= Run Keyword And Return Status Wait Until Element Is Visible ${locator2}
Run Keyword If ${status} Exit For Loop
... ELSE Log 点击${n}次
END
生成策略名
[Arguments] ${program} # 项目名比如DPM定时CDM副本
${date} Evaluate time.strftime('%Y%m%d%H%M%S',time.localtime()) time
${taskname}= Catenate SEPARATOR=_ ${program} ${date}
Set Suite Variable ${taskname}
Log 设置策略名称为全局变量
清理历史作业
[Arguments] ${ip} ${user} ${pwd} # 黑方地址|用户名称|密码
[Documentation] 清理黑方页面历史作业信息
黑方Mysql解限 ${ip} ${user} ${pwd}
Connect To Database Using Custom Params pymysql host='${ip}', port=${BCPort}, user='${BCUser}', passwd='${BCPwd}', db='unary', charset= 'utf8'
Execute Sql String use unary;
Execute Sql String delete from tbl_jobhistory;
Execute Sql String delete from tbl_jobhistory_info;
Disconnect From Database
Log 断开数据库连接
黑方网速监控_RX
[Arguments] ${ip} ${user} ${pwd} ${check_speed} # 黑方ip|ssh用户名|ssh密码|实际校验网速
Open Connection ${ip}
SSHLibrary.Login ${user} ${pwd}
Log 黑方连接成功
Execute Command sar -n DEV 5 10|grep eth0 > /net.txt
${TX_KB}= Execute Command cat /net.txt|awk NR==11|awk '{print $5}'
${TX_MB}= Evaluate ${TX_KB}/1024
${check_speed}= Evaluate ${check_speed}+0.5
Run Keyword If ${TX_MB}>${check_speed} Fail 超速了
... ELSE log 网速正常
Sleep 60s
代理初始化
[Arguments] ${ip} ${user} ${pwd} ${path} ${name} # esxi_ip地址|用户名|密码|虚拟机路径|快照名称
sphere_login ${ip} ${user} ${pwd}
sleep 2S
log 恢复到指定快照
vm_revert_snapshot ${path} ${name}
sleep 20s
sphere_logoff
代理开机
[Arguments] ${ip} ${user} ${pwd} ${agent_name} # ip地址|用户名|密码|生产机名称
log 生产机开机esxi中操作
sphere_login ${ip} ${user} ${pwd}
sleep 2s
vm_poweron_name ${agent_name}
sleep 5s
sphere_logoff
sleep 200s
代理下载_Win
[Arguments] ${ip} ${user} ${pwd} ${agent_zip} ${ip_win} ${user_win} ${pwd_win} # 黑方IP | 黑方用户名 | 黑方密码|黑方后台代理路径|win代理ip|win用户名|win密码
Open Connection ${ip} 22
SSHLibrary.Login ${user} ${pwd}
Log 进入服务器
sleep 5s
log 黑方解压安装包
Write rm -rf /opt/agentsetup
Write unzip ${agent_zip} -d /opt
sleep 30s
Write scp -r /opt/agentsetup ${user_win}@${ip_win}:C:/
Sleep 3s
Write yes
Sleep 3s
Write ${pwd_win}
Sleep 60s
Close Connection
代理下载_Lin
[Arguments] ${ip} ${user} ${pwd} ${agent_zip} ${ip_lin} ${user_lin} ${pwd_lin} # 黑方IP | 黑方用户名 | 黑方密码|黑方后台代理路径|lin代理ip|lin用户名|lin密码
Open Connection ${ip} 22
SSHLibrary.Login ${user} ${pwd}
Log 进入服务器
sleep 5s
Write scp ${agent_zip} ${user_lin}@${ip_lin}:/opt
Sleep 15s
Write yes
Sleep 15s
Write ${pwd_lin}
Sleep 60s
Close Connection
代理安装_Win
[Arguments] ${ip_win} ${user_win} ${pwd_win} ${module} ${bc_url} # 代理ip|代理登录名称|代理密码|安装的组件模块(以@间隔,如@file@mysql|黑方url
Open Connection ${ip_win} 22
SSHLibrary.Login ${user_win} ${pwd_win}
Log 进入生产机
sleep 5s
Start Command C:\\agentsetup\\install.bat C:\\Agent uagent${module} ${bc_url}:443 \ ${ip_win} C:\\agentsetup
Sleep 360s
Close Connection
代理安装_Lin
[Arguments] ${ip_lin} ${user_lin} ${pwd_lin} ${agent_tar} ${module} ${bc_url} # 代理ip|代理用户名|代理密码|代理压缩包名称|要安装的组件|黑方url
Open Connection ${ip_lin} 22
SSHLibrary.Login ${user_lin} ${pwd_lin}
Log 进入生产机
sleep 5s
Write cd /opt
Sleep 3s
Write tar -xvf ${agent_tar}
Sleep 20s
Write cd agentsetup
Sleep 3s
Write ./install.sh /opt/agent uagent${module} ${bc_url}:443 ${ip_lin} /opt/agentsetup
Sleep 300s
Close Connection
启用恢复模式
[Arguments] ${agent_name} # 代理名称
元素点击 ${Timed_DataProtect} 点击进入定时数据管理 定位副本数据栏失败
元素输入 ${Input_Agent_Name} ${agent_name} 定位代理名称输入框失败
Right Click Element xpath=//span[text()="${agent_name}"]
Sleep 5s
元素点击 ${Active_Recover} 启用代理恢复模式 定位启用恢复模式失败
元素点击 ${Success_Confirm} 确定代理启用成功 定位启用成功弹窗失败
Sleep 5s
代理卸载_Lin
[Arguments] ${Agent_IP} ${Agent_User} ${Agent_Passwd}
Open Connection ${Agent_IP} 22
log 用户登录远程测试机器
SSHLibrary.Login ${Agent_User} ${Agent_Passwd}
log 卸载代理开始
${out}= Execute Command sh /opt/agent/ubackup/uagent/bin/uninstall.sh
Should Contain ${out} Welcome to use it next time
Execute Command rm -rf /opt/agent*
log 卸载代理结束
Close Connection
黑方网速监控_TX
[Arguments] ${ip} ${user} ${pwd} ${check_speed} # 黑方ip|ssh用户名|ssh密码|实际校验网速
Open Connection ${ip}
SSHLibrary.Login ${user} ${pwd}
Log 黑方连接成功
Execute Command sar -n DEV 5 10|grep eth0 > /net.txt
${TX_KB}= Execute Command cat /net.txt|awk NR==11|awk '{print $6}'
${TX_MB}= Evaluate ${TX_KB}/1024
${check_speed}= Evaluate ${check_speed}+0.5
Run Keyword If ${TX_MB}>${check_speed} Fail 超速了
... ELSE log 网速正常
升级黑方版本
[Arguments] ${udb_path} ${bc_ip} ${login_name} ${password} # 218UDB包归档路径|升级黑方IP|SSH登录名|SSH密码
Open Connection ${bc_ip}
SSHLibrary.Login ${login_name} ${password}
Sleep 5s
Execute Command rm -rf /opt/udb/*
Log 清空黑方后台UDB包路径
Sleep 5s
Execute Command mount -t cifs -o username=tester,password=Unary@2022 "${udb_path}" /mnt/
Log 执行udb目录挂载到黑方/mnt目录
${UDB}= Execute Command find /mnt/*.udb | wc -l
log 计算UDB包数量
Execute Command cp \ /mnt/* \ /opt/udb/
Log 将udb包拷贝至黑方目录/opt/udb/
Execute Command umount /mnt/
Log 卸载挂载目录
Log 上传安装脚本
Put File ${Scripts_Path}${/}..${/}Script${/}SC0_Common${/}01_Update${/}updateUDB.sh /opt/udb/ mode=7777
Log 上传升级脚本完毕
Start Command /opt/udb/updateUDB.sh
Log 开始升级
FOR ${n} IN RANGE 60
${out}= Execute Command ps -ef | grep -c \ updateUDB.sh
Run Keyword If ${out}==2 Exit For Loop
... ELSE Log 升级未完成
Sleep 30s
END
Log 黑方升级完毕
${success}= Execute Command cat /opt/udb/outfile.txt | grep -c success
Should Be Equal ${UDB} ${success}
Log 校验所有UDB包升级成功
黑方Mysql解限
[Arguments] ${ip} ${root} ${root_pwd}
Open Connection ${ip}
SSHLibrary.Login ${root} ${root_pwd}
Execute Command touch /mysql.sh
Execute Command echo '#!/bin/bash' >>/mysql.sh
Execute Command echo "sed -i 's/bind/#bind/g' /etc/my.cnf" >>/mysql.sh
Execute Command echo 'service mysql restart' >>/mysql.sh
Execute Command echo 'service iptables stop' >>/mysql.sh
Execute Command echo 'chkconfig iptables off' >>/mysql.sh
Execute Command chmod -R 777 /mysql.sh
Execute Command /mysql.sh
Execute Command mysql -uunadba -p1223Bc@2008 -e "GRANT ALL PRIVILEGES ON *.* TO unadba@'%' IDENTIFIED BY '1223Bc@2008';FLUSH PRIVILEGES;"
Log 黑方mysql解除限制完毕
循环点击_JS
[Arguments] ${noxpath} ${local} # 需要循环点击的xpath路径|点击后出现的响应元素
FOR ${n} IN RANGE 10
Sleep 5s
Execute Javascript document.evaluate('${noxpath}',document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null).snapshotItem(0).click()
Log 执行js点击元素${n}次
Sleep 5s
${status}= Run Keyword And Return Status Wait Until Element Is Visible ${local}
Run Keyword If ${status} Exit For Loop
... ELSE Log 点击${n}次
END