应用场景:频繁往网站、电商平台后台等填写数据。

工作场景:电商上传商品、测试人员、批量提交表单等。

涉及内容:python读写EXCEL文件、selenium基础使用、Xpath基础使用、python基础

最近刚好工作中涉及,学习使用之后记录一下。

这里只做工具相关的使用方法,分析解释,具体的代码实现托管在GitHub上,我只是现学现用,代码中必定有考虑不足的地方,如果有朋友看到欢迎指出,本人不甚感激。

本人应用场景:在网站后台中传入商品数据,一次大概提交2-300个商品的编码、价格等信息,工作简单缺烦躁,易出错,于是想用机器解决。

思路:先将数据批量导出到excel中,按需要填入顺序排列好、使用python往excel文件中读数据、selenium接管浏览器,实现自动填入。

这些文章有些部分有些繁杂我没有详细去说,这里指出来一下

python、selenium、chromedriver的安装方法

xlrd安装及基础使用

xpath基础

一、将数据按照一定格式填入excel中方便读写(此步不在赘述)

按照一定格式的原因是python便于读写

二、python读取excel文件

python操作excel的库有很多,我这里用的是xlrd。

网上教程很多,不再详细说明,放上官方地址,大家也可以自行查阅,很简单

我使用python将数据按照规定的格式读出,存入到python字典里。

使用selenium操作浏览器

selenium有两点

想要接管浏览器,首先要下载相应的浏览器插件。我使用的是chrome

chrome相应版本的下载地址

没有找到接管当前浏览器的方法,所以使用另一种解决方案

使用无头模式把chrome打开(我的chrome存入了系统变量,如果没有存入系统变量,还需要找到chrome的地址,在cmd中打开)



chrome.exe --remote-debugging-port=9222 --user-data-dir="C:selenumAutomationProfile"



以上代码打开浏览器后,



chrome_options



然后浏览器对象就存入了driver中,可以使用selenium进行操作了

selenium查找和更改内容的代码如下



driver.find_element_by_xpath("拷贝的xpath复制到这里").clear()#这一步是根据xpath找到元素并清空
driver.find_element_by_xpath("拷贝的xpath复制到这里").send_keys()#这一步是在元素中输入数据



找到元素之前一定要记得清空原有元素内容,保持良好的习惯,输入正确的数据

利用xpath找到元素的位置

想要在一个网页中查找、输入数据。就需要知道表单、数据在网页的哪个位置,怎么找到相应的地方。selenium提供了很多种方法定位元素,这里使用的是xpath

xpath查找方法:使用鼠标右键点击你想查找的位置,选择检查。(会用F12的忽视这条)

然后在检查器中找到相应的位置,点击copy xpath即可。我做了一张动图演示给你们,如下




python 创建一个 form表单页面 有时间插件 python网页填写表单_layui table 表单元素


总体工作流程

关键步骤说清楚了,下面就是整体的思路了。

利用python把excel数据读出以后,用selenium找到相应元素的位置,然后把对应位置中的值清空,在填入新值就可以了。

比如现在你的网页中有1000个编码需要从上到下填入,你找到xpath的规律,一般都是有相应的数字规律。类似下面这种


/html/body/div[4]/form/div/div/div/div[3]/table[2]/tbody/tr/td[2]/div/table/tbody/tr[4]/td[4]/span/
# /html/body/div[4]/form/div/div/div/div[3]/table[2]/tbody/tr/td[2]/div/table/tbody/tr[5]/td[6]/span/input
# /html/body/div[4]/form/div/div/div/div[3]/table[2]/tbody/tr/td[2]/div/table/tbody/tr[6]/td[4]/span/input
# /html/body/div[4]/form/div/div/div/div[3]/table[2]/tbody/tr/td[2]/div/table/tbody/tr[7]/td[4]/span/input
# /html/body/div[4]/form/div/div/div/div[3]/table[2]/tbody/tr/td[2]/div/table/tbody/tr[8]/td[4]/span/input
# /html/body/div[4]/form/div/div/div/div[3]/table[2]/tbody/tr/td[2]/div/table/tbody/tr[9]/td[6]/span/input


可以看到明显第6、7的数字位置存在规律变化,找到相应的变化,写入python for循环中即可。批量提交中,网页结构是不会再变化的,所以脚本写好之后,再传入数据只需要更改excel表格中的内容即可。

具体的代码我上传在我的GitHub里,你们可以参考。