应用场景:频繁往网站、电商平台后台等填写数据。
工作场景:电商上传商品、测试人员、批量提交表单等。
涉及内容:python读写EXCEL文件、selenium基础使用、Xpath基础使用、python基础
最近刚好工作中涉及,学习使用之后记录一下。
这里只做工具相关的使用方法,分析解释,具体的代码实现托管在GitHub上,我只是现学现用,代码中必定有考虑不足的地方,如果有朋友看到欢迎指出,本人不甚感激。
本人应用场景:在网站后台中传入商品数据,一次大概提交2-300个商品的编码、价格等信息,工作简单缺烦躁,易出错,于是想用机器解决。
思路:先将数据批量导出到excel中,按需要填入顺序排列好、使用python往excel文件中读数据、selenium接管浏览器,实现自动填入。
这些文章有些部分有些繁杂我没有详细去说,这里指出来一下
python、selenium、chromedriver的安装方法
一、将数据按照一定格式填入excel中方便读写(此步不在赘述)
按照一定格式的原因是python便于读写
二、python读取excel文件
python操作excel的库有很多,我这里用的是xlrd。
网上教程很多,不再详细说明,放上官方地址,大家也可以自行查阅,很简单
我使用python将数据按照规定的格式读出,存入到python字典里。
使用selenium操作浏览器
selenium有两点
想要接管浏览器,首先要下载相应的浏览器插件。我使用的是chrome
没有找到接管当前浏览器的方法,所以使用另一种解决方案
使用无头模式把chrome打开(我的chrome存入了系统变量,如果没有存入系统变量,还需要找到chrome的地址,在cmd中打开)
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
以上代码打开浏览器后,
chrome_options = Options()#建立浏览器对象
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")#输入浏览器参数
driver = webdriver.Chrome(options=chrome_options)#使用selenium接管浏览器
#输入这三行代码
然后浏览器对象就存入了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把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表格中的内容即可。