python

您所在的位置:网站首页 自动化巡检记录表 python

python

2024-07-10 18:26| 来源: 网络整理| 查看: 265

文章目录 巡检自动化一、应用自动化网页应用方面网页自动化准备打开网页截图接口推送图片文本 启动脚本遇到问题网页操作账号密码 二、整体代码巡检维格表

巡检自动化 一、应用自动化 网页应用方面

分为三步:第一步实现网页自动化打开,登录到需巡检的界面,第二步通过截图,保存巡检时状态图,第三步通过接口推送至手机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')

最后,点击确认 在这里插入图片描述

# 5.5、点击 # 定位目标 ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN"]/div[1]/div/button/span') # 实例化 鼠标对象 action = ActionChains(driver) # 鼠标单击 action.click(ele) # 鼠标执行操作!!!不执行没效果 action.perform()

但是,最后维格表有防范机制,点击确认后,还是不算登录成功,哭哭

二、整体代码 巡检 # 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)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3