标签:
excel处理类和上传类都已经写好,分别保存在excelHandle.py和upload.py中,最后我们需要写一个run.py去执行上传脚本。
#!/usr/bin/python # -*- coding: utf-8 -*- import excelHandle import upload import Queue import time def run(filepath, username, password, url):
首先引入excelHandle,upload文件,time包,以及Queue包。Queue包主要用来创建一个队列。然后run方法传递4个参数,excel文件的路径,上传的用户名,密码,以及url。
首先实例化一个队列和一个excelHandle,读取excel数据,将数据放入队列中:
product_queue = Queue.Queue() #读取excel数据加入队列 excel_handle = excelHandle.excelHandle(filepath) excel_sheet = excel_handle.open_table(0) product_data = excel_handle.foreach_data() product_index = excel_handle.get_index_name() for i in range(len(product_data)): product_queue.put(product_data[i]) num = str(i) print "data" + num + "standby"
接下来实例化上传类,登录上传网站,并且进入上传页面:
uploader = upload.UpProd() uploader.login(url,username,password) #显示上传按钮 uploader.display_list()
接下来使用一个while循环,队列不为空时,将队列中一条数据从队列中拿出来进行填写,若填写成功则拿下一条,填写失败放回队列重新填写。这里利用了队列这种数据结构的先进先出的特点。然后使用create_log()方法创建日志,当队列为空结束循环,注意一下从excel拿出来的数据不一定是string类型,由于selenium的send_keys()方法不接受浮点日期等数据类型,所以还需要进行相应的转化:
uploader = upload.UpProd() uploader.login(url,username,password) #显示上传按钮 uploader.display_list() #从队列取出数据并上传 while product_queue.empty() is not True: data = product_queue.get() proname = data[product_index[0]] scprice= str(data[product_index[1]]) sc_price= str(data[product_index[2]]) pfprice= str(data[product_index[3]]) sjprice= str(data[product_index[4]]) jsprice= str(data[product_index[5]]) point= str(data[product_index[6]]) ziti= str(data[product_index[7]]) soldout= str(data[product_index[8]]) views= str(data[product_index[9]]) know= data[product_index[10]] detail= data[product_index[11]] date= data[product_index[12]] order = data[product_index[13]] shop= data[product_index[14]] imgpath= "C:\cspy\webtest\img\\" + proname +".jpg" #判断上传是否成功,若不成功,重新进入队列上传 if uploader.up_product(proname, scprice, sc_price, pfprice, sjprice, jsprice, point, ziti, soldout, views, know, detail, date, order, shop, imgpath): status = 1 print proname + "\tupload success" else: status = 0 uploader.create_log("6.16up.txt",proname,status) if status == 0: product_queue.put(data) time.sleep(5)
最后关闭浏览器:
#全部上传完成后关闭浏览器 uploader.quit_window() print "upload over"
OK,这样一个run.py就写好了,最后添加一行代码
if __name__ == ‘__main__‘: run(r"C:\cspy\webtest\data\test.xlsx","admin","password","http://www.xxx.com/admin")
在cmd中运行run.py就可以毫不费力的上传数据了!
(cspython) C:\cspy\webtest>python run.py
标签:
原文地址:http://www.cnblogs.com/goddessofpom/p/5593296.html