【Python+Selenium】 实现对excel文件的读写操作,轻轻松松一步到位 ...

打印 上一主题 下一主题

主题 859|帖子 859|积分 2579

前言

利用selenium在做自动化测试的时候,经常会用到数据来做批量测试,常用的方式有读取txt文件,xml文件,csv文件以及excel文
件几种。
使用 excel 来做数据管理时,需要利用 xlrd、xlwt 开源包来读写 excel。
1、安装xlrd、xlwt
  1. pip install xlrd
  2. pip install xlwt
复制代码
 
2、对excel表的数据读取操作

在C:\Users\Any\Desktop下,我们有一个名字叫test1的excel文件,里面的Sheet1数据表中有如下数据:
我们期望从上表中获取搜索词,并在百度输入框中进行关键字搜索。首先需要导入xlrd和xlwt,因为运行速度太快,为了方便看清
楚我这边在每输入一次关键词后强制sleep了两秒。
  1. from selenium
  2. python学习交流Q群:906715085###
  3. import webdriverfrom selenium.webdriver.support.
  4. wait import WebDriverWaitfrom selenium.
  5. webdriver.support import expected_conditionsfrom selenium.webdriver.common.
  6. by import Byimport timeimport xlrd,xlwtif __name__=="__main__":   
  7. driver=webdriver.Chrome()   
  8. driver.get("http://www.baidu.com")   
  9. file_test=xlrd.open_workbook(r"C:\Users\Any\Desktop\test1.xlsx")#读取test1.xlsx文件   
  10. count=len(file_test.sheets())#获取该文件中的工作簿数    print("工作簿总数为:",count)    table1=file_test.sheet_by_name("Sheet1")#根据工作簿名字获取该工作簿的数据   
  11. nrows=table1.nrows #获取工作簿行数    ncols=table1.ncols #获取工作簿列数   
  12. print("Sheet1的行数为:",nrows,"列数为:",ncols)    #从第二行开始,遍历Sheet1中的数据(第一行为表头)   
  13. for i in range(1,nrows):        
  14. rowvalues=table1.row_values(i) #按行读取数据        
  15. key=rowvalues[1] #第一列为序号,我们取第二列的搜索词        
  16. print("搜索词:",key)        
  17. driver.find_element_by_id("kw").clear()#清空搜索框中的内容        
  18. driver.find_element_by_id("kw").send_keys(key) #根据搜索词填入百度搜索框          WebDriverWait(driver,3).until(expected_conditions.visibility_of_element_located((By.ID,"su")))#显性等待        driver.find_element_by_id("su").click()#点击百度一下按钮        
  19. time.sleep(2)   
  20. driver.quit()
复制代码
 
运行之后就会看到print出来的数据如上,可以确认我们的数据是没错的。print一下也可以方便调试。从浏览器中也可以直观的感
受到整个搜索过程的。
对工作簿的读操作还有很多,如下有一下较为常用的几个。
打开文件
  1. data = xlrd.open_workbook("file_path")  #打开文件
复制代码
 
获取一个工作簿

方式也有几种,上面代码我们是通过工作簿的名字进行获取的。
  1. table=data.sheets()[0]  #通过索引顺序获取table=data.sheet_by_index(0) #通过索引顺序获取table=data.sheet_by_name(u"name") #通过名称获取
复制代码
 
获取某个工作簿的行列数
  1. table.nrows #获取行数
  2. table.nrows #获取列数
复制代码
 
获取某个工作簿的行列值(数组)
  1. table.row_values(i) #获取某行值
  2. table.col_values(i) #获取某列值
复制代码
 
获取某个单元格的值
  1. cell_A1 = table.cell(0,0).value #获取A1单元格的值
  2. cell_A1 = table.row(0)[0].value #通过行索引单元格A1的值
  3. cell_A1 = table.col(0)[0].value #通过列索引单元格A1的值
复制代码
 
3、对Excel文件的写操作
  1. import xlrd,xlwtif __name__=="__main__":   
  2. wookbook  = xlwt.Workbook() #创建工作簿   
  3. sheet1 = wookbook.add_sheet('Sheet_one',cell_overwrite_ok=True)  #创建sheet,名字为Sheet_one   
  4. headlist = ['序号','关键字','备注'] #表头数据    row = 0    col = 0    #写入表头数据    for head in headlist:        sheet1.write(row,col,head)        
  5. col=col+1    #写入4行数据    len = 5    for i in range(1,len):        
  6. sheet1.write(i,0,i)        
  7. sheet1.write(i,1,"搜索关键字{}".format(i))        
  8. sheet1.write(i,2," ")        
  9. print("写入第{}行数据".format(i))   
  10.   wookbook.save(r"C:\Users\Any\Desktop\xlwt_text.xlsx") #保存文件,命名为xlwt_text.xlsx
复制代码
 
运行之后,可以看到桌面上生成了一个xlwt_text.xlsx的文件,打开看到里面的数据,sheet名和其内容都是我们刚刚输入的数据
对于Excel的数据写入操作,有以下几个常用的几个。
  1. 创建excel文件
  2. wookbook  = xlwt.Workbook() #创建工作簿
  3. 创建Sheet
  4. sheet = wookbook.add_sheet('Sheet_name',cell_overwrite_ok=True)  #创建sheet
  5. 写入单元格数据
  6. sheet.write(row,col,data) #写入该单元格数据
  7. 保存文件
  8. wookbook.save(file_path) #保存
复制代码
 
最后

你学会了吗?这么简单别跟我说没有学会,有问题的记得点赞评论哟!!学习的事马虎不得滴,这一篇到这里就结束了,下一篇
再见…

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表