先说一下背景和要实现的功能,前段时间给媳妇做一个工具,需要将excel内的内容分别对应填充到网页内的表单文本框和下拉框中,借此正好整理一下自己的制作步骤,当作笔记,大佬就不要做评价了,只为新入门的同僚做个参考。
1、安装phython开发工具,我用的是pycham社区版
2、下载chromedriver.exe工具,本次自动化操作以chrome浏览器为例。另外需要注意的的是浏览器版本一定要注意,下载好插件以后,将文件拷贝到main.py同目录下,这是我的目录结构,仅供参考。
3、开始开发
刚开始接触phython什么也不太懂,对什么import什么的都不明白,完全的小白,于是网站上搜索了一些例子,但是发现运行不了,下面的的import的一直有个红线,于是搜索发现需要安装插件。
selenium 是对应网页内的控件做选择的,具体的什么名字忘了
openpyxl 是操作Excel表格用的插件
import time
from selenium import webdriver
from openpyxl import load_workbook
操作步骤是:
搜索 selenium 和 openpylx 安装以后就没有报错了。于是进行下一步,以下是代码:
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
time.sleep(3)
运行成功,自动启动网页并打开了百度的页面。
下一步就是要分析要进行的自动化内容。我这里是根据Excel的内容,分别对应填充到网页的表单内。
首先是读取表格的内容,代码如下:
# 工作簿名称
wb = load_workbook("excel的路径")
ws = wb.active
list_orders = []
list_row = []
for row in ws.rows:
for col in row:
list_row.append(col.value)
list_orders.append(list_row)
mrn = ws.max_row
mcn = ws.max_column
while i < mrn:
if ws.cell(row=i, column=14).value == noworder:
odn = ws['T'+i].value
zno = ws['AG'+i].value
phone = ws['AV'+i].value
print("取到了")
break
else:
print("下一行")
i = i + 1
将excel的内容放到一个数组供后面使用。
接下来就是将数组内的信息对应到网页表单的字段内。这里就比较繁琐,需要分析html的每个控件根据不同的定位方式找到控件并赋值,每个插件的定位略有不通,可能是谷歌版本不一样,写法略有区别,我的代码是这样的
根据input的name值给文本赋值
driver.find_element('name', 'username').send_keys("admin")
根据class选择多选框
driver.find_elements("class name", "el-checkbox")[1].click()
根据placeholder定位文本框
driver.find_element('css selector', "[placeholder='纬度']").send_keys("36.122312")
每个插件略有不同,以上仅供参考。按照不同的方式定位并赋值以后,然后再定位到button,调用click方法,操作完成。