把双手从解放出来,Python自动填表
需要做的准备
python3.6+selenium库+xlrd库+xlwt库
其中xlrd和xlwt库用于读写excel表中的数据。
还要下载一个浏览器的driver文件用于打开浏览器,注意要选择与计算机系统相符合的版本(max/windows64位/windows32位)
将下载下来的driver.exe放到浏览器根目录和python的根目录
〇、Python下载
(默认你使用Windows操作系统)点击两次鼠标
一、环境配置
python3.6+selenium库+xlrd库+xlwt库
其中xlrd和xlwt库用于读写excel表中的数据。
还要下载一个浏览器的driver文件用于打开浏览器,注意要选择与计算机系统相符合的版本(max/windows64位/windows32位)
ChromeDriver:http://npm.taobao.org/mirrors/chromedriver/
IEDriver:http://selenium-release.storage.googleapis.com/index.html
将下载下来的driver.exe放到浏览器根目录和python的根目录
二、打开网页
IE浏览器
driver=webdriver.Ie() driver.get("http://xxxx.com/")
如果网站需要登陆(需要填表的一般是公司内部网站),再写一个login函数,将driver作为参数调用
driver = login(driver)
注意一定要将driver传回,这样driver才能继续接受程序的指令
三、元素定位
webdriver的工作原理是找到网页中某一个元素,可以对其进行填入数据或点击等操作。
我主要用到的元素定位方式有
driver.find_element_by_id("someid")#通过元素的id定位
driver.find_element_by_css_selector("input[value="确定"")#查找一个input元素,它的value属性值为"确定"
driver.find_element_by_xpath("//span[contains(@style,"COLOR: red")]/span[1]")#查找一个style属性值为"COLOR:red"的span元素的第一个span子元素
四、不确定情况处理
略
五、frame处理
总结起来就是:frameset不用切,frame层层切。最好一系列填表操作完后都用 driver.switch_to.default_content() 回到原文档,这样不容易混乱
这里再补充一点frame没有id时的切入方法
frame= self.driver.find_element_by_xpath("/html/body/div[12]/iframe")#先定位frame位置,用一个变量储存这个节点
self.driver.switch_to_frame(frame)#再切入这个节点
六、excel数据读写
excel数据读写十分简单,看代码就好了:
defread(file):
data= xlrd.open_workbook(file)#打开excel文件
table = data.sheets()[0]#读取第一个sheet的数据
phones = table.col_values(0)#以列表形式存储第一列数据
peoples = table.col_values(1)#以列表形式存储第二列数据
returnphones,peoplesdefwrite(result):
file=xlwt.Workbook()#创建一个excel文件
table = file.add_sheet("sheet1")#添加一个sheet
for i in range(len(result)):#写入数据
table.write(i,0,result[i][0])
table.write(i,1,result[i][1])
table.write(i,2,result[i][2])
file.save("result.xls")