巡检自动化
一、应用自动化
网页应用方面
分为三步:第一步实现网页自动化打开,登录到需巡检的界面,第二步通过截图,保存巡检时状态图,第三步通过接口推送至手机app如企业微信,钉钉等。
网页自动化
准备
第一:selenium环境部署和定位学习:https://blog.csdn.net/qq_54219272/article/details/123310772
第二:selenium使用:https://blog.csdn.net/qq_54219272/article/details/123338773
第三:快速下载vscode:
https://blog.csdn.net/thlchina/article/details/113940283
补充:
Microsoft Edge浏览器驱动安装:打开文件所在位置,可以直接看到版本,再到https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver下载对应驱动(接近版本号即可)
打开网页
需要提前完成两步:
第一步:完成python、selenium环境部署
第二步:完成浏览器驱动安装
详见:https://blog.csdn.net/qq_54219272/article/details/123310772
# 1、导包/提供python的库
from time import sleep
from selenium import webdriver
# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()
# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('https://www.bilibili.com/')
# 4、操作命令插入到这里
# 5、时间轴看效果,等待3秒
sleep(3)
# 6、关闭页面
driver.quit()
截图
使用方法:
driver.get_screenshot_as_file(imgepath)
#参数:
# imagepath:为图片要保存的目录地址及文件名称
#截图方法,建议使用png格式 , ./为当前路径, ../为上一级路径,如('./info.png')
加入到代码中
# 1、导包/提供python的库
from time import sleep
from selenium import webdriver
# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()
# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('https://www.bilibili.com/')
# 4、操作命令插入到这里
# 4.1、截图
driver.get_screenshot_as_file('./a.png')
# 5、时间轴看效果
sleep(3)
# 6、关闭页面
driver.quit()
接口推送
企业微信接口文档
图片
import requests
import base64
import hashlib
# 图片base64码
with open("./a.png", "rb") as f:
base64_data = base64.b64encode(f.read()).decode()
# base64.b64decode(base64data)
print(base64_data)
# 图片的md5值
file = open("./a.png", "rb")
md = hashlib.md5()
md.update(file.read())
res1 = md.hexdigest()
print(res1)
# 企业微信机器人发送消息
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=f6e7fcfd-ef6c-4145-88ee-3d2eeb3ccXXX"
headers = {"Content-Type": "text/plain"}
data = {
"msgtype": "image",
"image": {
"base64": base64_data,
"md5": res1
}
}
r = requests.post(url, headers=headers, json=data)
print(r.text)
插曲:出现如下报错【TypeError:Object of type bytes is not JSON】
解决方法如下:添加了.decode()
借鉴的文章:https://blog.csdn.net/xyl342300/article/details/109954038,不要轻易运行,不然很容易尴尬
插曲2:
谷歌浏览器的驱动有问题,重装新版的谷歌浏览器就可以解决,下载对应的驱动
插曲3:
将谷歌浏览器的驱动放到python的目录下解决
文本
通过企业微信接口文档-发送文本写出data={ }部分的信息
import requests
# 10、企业微信机器人发送消息:文本消息
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1bd9d632-1f3b-445d-98e8-429a1d7415ca"
headers = {"Content-Type": "text/plain"}
data = {
"msgtype": "text",
"text": {
"content" : "监控平台界面:正常标准为无异常告警"
}
}
r = requests.post(url, headers=headers)
print(r.text)
存在报错
查询后得知
import requests
# 10、企业微信机器人发送消息:文本消息
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1bd9d632-1f3b-445d-98e8-429a1d7415xx"
headers = {"Content-Type": "text/plain"}
data = {
"msgtype": "text",
"text": {
"content" : "监控平台界面:正常标准为无异常告警"
}
}
r = requests.post(url,headers=headers,json=data,verify=False)#企业微信群机器人的消息虽然是“text”类型的,但是post发送过去的头部是“application/json”,是json格式的
print(r.text)
成功发送
启动脚本
一、bat写法
@C:\Users\18826\AppData\Local\Programs\Python\Python38\python.exe C:\Users\18826\Desktop\patrol\renwu.py %*
上述路径是自身py所在的文件夹决定的,如下图
二、window自带的定时任务,需要注意以下更改点
遇到问题
- 执行后报错
解决方法
以上满足常规巡检
以下是对维格表尝试登录,但是失败的案例
网页操作
若需对网页进行操作,需学习:
1、利用元素定位进行网页操作
2、了解浏览器、键盘、鼠标操作
详见:https://developer.work.weixin.qq.com/tutorial/detail/54
常用命令如下:
driver.maximize_window() # 最大化浏览器
加入到代码中
# 1、导包/提供python的库
from time import sleep
from selenium import webdriver
# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()
# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('https://www.bilibili.com/')
# 4、操作命令插入到这里
# 4.1、截图
driver.maximize_window() # 最大化浏览器
# 5、时间轴看效果
sleep(3)
# 6、关闭页面
driver.quit()
账号密码
此处引入登录维格表,截图发群里通知人执行工作
插曲1:
4.4.3版本无法使用_by_命令,改成4.1.0
pip uninstall selenim
pip install selenim==4.1.0
插曲2:无法定位元素的报错
是由于账号密码界面需要切换,引入鼠标点击
# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN"]/div[1]/div/button/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()
顺利切换到如下界面
再通过元素定位法
# 5.4、输入账号密码
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN_PHONE_INPUT"]')
ele.send_keys('18826227807')
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN_PASSWORD_INPUT"]')
ele.send_keys('Stqer686')
最后,点击确认
文章来源:https://www.toymoban.com/news/detail-474872.html
# 5.5、点击
# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN"]/div[1]/div/button/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()
但是,最后维格表有防范机制,点击确认后,还是不算登录成功,哭哭文章来源地址https://www.toymoban.com/news/detail-474872.html
整体代码
巡检
# 1、导包/提供python的库
from time import sleep
from selenium import webdriver
# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()
# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('http://172.16.1.33:3000/d/WojOgXTmk/00-gao-jing-zhong-xin?orgId=1&refresh=5s')
# 4、时间轴看效果
sleep(6)
# 5、操作命令插入到这里
driver.get_screenshot_as_file('./a.png') #截图
driver.maximize_window() # 最大化浏览器
# 6、关闭页面
driver.quit()
import requests
import base64
import hashlib
# 7、图片base64码:提供给企业微信发送图片信息所需
with open("./a.png", "rb") as f:
base64_data = base64.b64encode(f.read()).decode()
# base64.b64decode(base64data)
print(base64_data)
# 8、图片的md5值
file = open("./a.png", "rb")
md = hashlib.md5()
md.update(file.read())
res1 = md.hexdigest()
print(res1)
# 9、企业微信机器人发送消息:提供给企业微信发送图片信息所需
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1bd9d632-1f3b-445d-98e8-429a1d7415xx"
headers = {"Content-Type": "text/plain"}
data = {
"msgtype": "image",
"image": {
"base64": base64_data,
"md5": res1
}
}
r = requests.post(url, headers=headers, json=data)
print(r.text)
维格表
# 1、导包/提供python的库
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()
# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('https://vika.cn/workbench/mirPTLa3fERa5Vt3Jt/dstyWW2rd6RgoKBxml/viwPVtNmkrHSC')
# 4、时间轴看效果
sleep(5)
# 5、操作命令插入到这里
# 5.1、最大化
driver.maximize_window() # 最大化浏览器
# 5.2、截图
driver.get_screenshot_as_file('./a.png')
# 5.3、鼠标单击切换到账号密码登录界面
# 5.3.1、点击“手机/邮件登录”按钮
# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN"]/div[1]/div/button/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()
# 5.3.2、点击“密码登录”按钮
# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_CHANGE_MODE_BTN"]/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()
# 5.4、输入账号密码
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN_PHONE_INPUT"]')
ele.send_keys('18826227807')
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN_PASSWORD_INPUT"]')
ele.send_keys('Stqer686')
# 5.5、点击“确认”按钮
# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN"]/div[1]/div/button/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()
# 6、时间轴看效果
sleep(20)
# 7、关闭页面
driver.quit()
import requests
import base64
import hashlib
# 8、图片base64码:提供给企业微信发送图片信息所需
with open("./a.png", "rb") as f:
base64_data = base64.b64encode(f.read()).decode()
# base64.b64decode(base64data)
print(base64_data)
# 9、图片的md5值
file = open("./a.png", "rb")
md = hashlib.md5()
md.update(file.read())
res1 = md.hexdigest()
print(res1)
# 10、企业微信机器人发送消息:提供给企业微信发送图片信息所需
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1bd9d632-1f3b-445d-98e8-429a1d7415ca"
headers = {"Content-Type": "text/plain"}
data = {
"msgtype": "image",
"image": {
"base64": base64_data,
"md5": res1
}
}
r = requests.post(url, headers=headers, json=data)
print(r.text)
到了这里,关于案例:巡检自动化=selenium+截图+接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!