我们可以用 excel 来记录自动化,然后读取 excel 来执行命令,excel 可以很方便直观的管理我们录入的自动化。下面给大家演示一下 Python+selenium 自动化的实例,读取 excel 执行登陆操作。
首先如果想要操控 excel 需要两个库 xlrd 和 xlwt,一个是读,一个是写。
本章我想通过 python 读取 excel 里我设置的一些字段,来执行一个登陆操作。
def read_xl(): # 打开excel workbook = xlrd.open_workbook('login.xlsx') sheet = workbook.sheets()[0] # 代表第一个页签,excel是可以有多个页签的 nrows = sheet.nrows # 看excel一共有多少行内容 # 一行一行的读取内容,sheet.row_values(i)[0]代表该行的第一个单元格 for i in range(nrows): sw(sheet.row_values(i)[0],sheet.row_values(i)[1],sheet.row_values(i)[2],sheet.row_values(i)[3],sheet.row_values(i)[5])
下面是我设置的 excel 字段,以及每个字段的含义。
下面这是完整版,我是结合 python+selenium 来操控我的 chrome 浏览器,excel 读取的字段通过我的 sw() 方法转化为对应操作浏览器的命令来执行。
当然这里的地址是内网的,是只有我才可以用的。excel 附件里的登陆名和密码也是只有我自己才可以用的,这些需要你自己来设置。
Excel 附件:小蓝枣的资源仓库 提取码:b2av
# -*- coding: UTF-8 -*- # excel说:感觉自己被操控 # excel读写库 import xlrd import xlwt # selenium浏览器驱动 from selenium import webdriver import time # 初始化Chrome() driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(5) #单位秒 # 登陆 def login(): # 我自己可用的内网ip地址 url="http://172.20.xx.xx:8102" print("你的小可爱正在打开: "+url+" 请看好她!!!\n") driver.get(url) # excel读取 def read_xl(): # 打开excel workbook = xlrd.open_workbook('login.xlsx') sheet = workbook.sheets()[0] # 代表第一个页签,excel是可以有多个页签的 nrows = sheet.nrows # 看excel一共有多少行内容 # 一行一行的读取内容,sheet.row_values(i)[0]代表该行的第一个单元格 for i in range(nrows): sw(sheet.row_values(i)[0],sheet.row_values(i)[1],sheet.row_values(i)[2],sheet.row_values(i)[3],sheet.row_values(i)[5]) # 转化excel读取的操作 def sw(a,b,c,d,e): k=1 if a=='click': action(e) sw_click(b,c) elif a=='input': action(e) sw_input(b,c,d) elif a=='wait': action("等待") sw_wait(d) elif a=='open': action(e) sw_open(d) print('open操作无效,如有需要请找管理员对open解禁') else: k=0 time.sleep(2) if k==1: print("该命令执行结束!\n") def action(e): print("正在进行: "+e+" 请稍后...") def sw_click(b,c): if b=='id': driver.find_element_by_id(c).click() elif b=='xpath': driver.find_element_by_xpath(c).click() def sw_input(b,c,d): if b=='id': driver.find_element_by_id(c).send_keys(d) elif b=='xpath': driver.find_element_by_xpath(c).send_keys(d) def sw_wait(d): time.sleep(d/1000) def sw_open(d): time.sleep(1) login() read_xl()
读取执行内容的同时,后台会同时播报正在执行的命令。
喜欢的可以点个赞❤!