通过Pyhton制作RPA小工具,提升工作效率
由于负责多套系统运维工作,需要每天关注系统跑批情况,仅能通过系统前端结果判断,通过python制作RPA小工具。
正常操作:
1. 打开浏览器
2. 浏览器最大化(方便查看)
3. 打开url连接,输入用户名、密码进行操作
4. 打开新标签页,输入url地址、用户名、密码,操作。
这种重复性的工作,完全可以通过程序自动完成,在执行程序的过程中,可以去泡枸杞茶。
新手学习建议按顺序看,有一定基础可以直接翻到最后,看源码。
1.浏览器驱动下载驱动
用python启动浏览器,需要浏览器驱动,以下是chrome浏览器驱动下载地址,务必根据操作系统类型版本下载对应的驱动
浏览器驱动下载地址
http://npm.taobao.org/mirrors/chromedriver/
假如正常程序突然不可用,可检查是否浏览器自动更新,如是,请更新驱动。
2.通过pycharm安装所需的包
本程序中需要安装如下包,无关日期操作的可以省去datetime,openpyxl
from selenium import webdriver
import time
import datetime
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import openpyxl
import os
3.驱动位置初始化
用selenium调用会在后台启动chromedriver.exe进程,日积月累会影响机器速度,可在每次启动前关闭多余进程(根据实际需要选择)
def __init__(self):
# 关闭多余进程
# try:
# os.system("taskkill /f /im chromedriver.exe /t")
# except:
# pass
#chrome浏览器驱动
self.driver_path = r'./file/chromedriver.exe'
不懂相对位置的新手,可以将文件和.py放在同一个文件夹
修改最后一行代码为:
self.driver_path = r'./chromedriver.exe'
4.启动浏览器、最大化、打开第1个url地址
使用浏览器驱动打开的浏览器并最大化,方便查看,另外有些网页前端代码会根据浏览器大小调整,因此直接最大化、打开第1个地址
def open_chrome(self): #启动chrome浏览器
self.driver = webdriver.Chrome(executable_path= self.driver_path)
def chrome_max(self):#浏览器全屏最大化
self.driver.maximize_window()
def open_url(self,url): #打开url地址
self.driver.get(url)
5.输入用户名密码
需要在输入框输入文本信息,首先要找到对应的输入框,然后输入文本信息,这里我用到的有两种,以下以微博为例:
5.1 在chrome浏览器中打开weibo.com
5.2 浏览器最大化
5.3 找所需元素
a.按下键盘F12,先单击图片所示的想鼠标一样的图标,
b.再单击你要选择的界面元素(用户名输入框),
c.下面显示的是页面源码,被选中的代码背景色会加深
d.代码中的id=“loginname” 中的name 为我们所需的id
e.右键页面代码选择copy -> copy Xpath 为下面所需的path
也可以选copy -> copy full Xpath ,其中通过xpath可以对任何输入框输入信息
def insert_by_id(self,id,*text): # 输入框输入信息
WebDriverWait(self.driver, 15).until(EC.presence_of_element_located((By.ID, id)))
msg = self.driver.find_element_by_id(id)
msg.clear()
msg.send_keys(text)
def insert_by_path(self,path,*text): #输入框输入信息
WebDriverWait(self.driver, 15).until(EC.presence_of_element_located((By.XPATH, path)))
msg = self.driver.find_element_by_xpath(path)
msg.clear(