selenium實現excel文件數據的讀、寫
在進行軟件測試或設計自動化測試框架時,一個不可避免的過程就是: 參數 化,在利用 python 進行自動化測試開發時,通常會使用 excel 來做數據管 理,利用 xlrd、xlwt 開源包來讀寫 excel。
一、環境安裝
1.安裝xlrd
pip install xlrd
2.安裝xlwt
pip install xlwt
二、讀取excel文件數據示例
讓我們先看一個簡單的 excel 讀寫示例,從表 1 中讀取數據:
#-*- coding:utf-8 -*-
import xlrd
import xlwt
if __name__=="__main__":
#excel文件全路徑
excelpath = r‘F:\pycharm-workspace\selenium\test.xlsx‘
#用於讀取excel文件
tableopen = xlrd.open_workbook(excelpath)
#獲取excel工作簿數
count = len(tableopen.sheets())
print u"工作簿數為%s"%count
#獲取表數據的行、列數
table = tableopen.sheet_by_name(‘Sheet1‘)
h = table.nrows
l = table.ncols
print u"表數據的行數為%s,列數為%s"%(h,l)
# 循環讀取數據
for i in range(0,h):
rowValues = table.row_values(i) #按行讀取數據
# 輸出讀取的數據
for data in rowValues:
print data,‘ ‘,
print ‘‘
- 執行結果:\
三、寫入excel文件數據示例
註意這裏的 excel 文件的後綴是 xls 如果是 xlsx 打開是會提示無效
# 註意這裏的 excel 文件的後綴是 xls 如果是 xlsx 打開是會提示無效
excelpath = r‘F:\pycharm-workspace\selenium\test2.xls‘
wtbook = xlwt.Workbook()
#新增一個sheet工作表
sheet = wtbook.add_sheet(‘Sheet1‘,cell_overwrite_ok=True)
#寫入數據頭
headlist = [u‘學號‘,u‘姓名‘,u‘班級‘]
row = 0
col = 0
#循環寫
for head in headlist:
sheet.write(row,col,head)
col = col+1
for i in xrange(1,5):#行數限制,我這裏寫入4行數據
for j in xrange(1,3):#列數限制,因為我的headlist有三個數據,所以這裏肯定是3列
#寫入4行0~99的隨機數
data = random.randint(0,99)
sheet.write(i,0,i)
sheet.write(i,j, data)
print u"寫第[%d]行數據"%(i)
#保存
wtbook.save(excelpath)
- 執行結果:
open()用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # encoding:utf-8
try
:
# 寫模式打開文件,若不存在該文件,則創建
out
=
open
(
"data.out"
,
"w"
)
# 默認為讀模式,等價於out = open("data.out", "r")
# out = open("data.out")
# 追加+寫模式
# out = open("data.out", "a+")
# 標準輸出(通常是屏幕),使用file參數將數據寫入到指定的文件
print
(
"blues stun easily"
,
file
=
out)
# 出現異常的類型很多,我們需要了解具體的異常信息,可以使用as err,將異常打印出來
except
IOError as err:
# 將err對象轉換成字符串類型
print
(
"file error:"
+
str
(err))
# 無論try中的語句執行是否出問題,都會執行finally中的代碼
finally
:
# 如果某些異常情況導致文件不存在,則會引發異常,所以想判斷文件是否存在,存在則關閉文件
if
‘data‘
in
locals
():
# 記得一定要關閉
out.close()
關於Selenium 如何讀取Txt、Excel、Csv..等文件以及如何獲得我們想要的格式數據
一 、讀取TXT文檔
Txt算是比較簡單的文檔了,不多說直接上代碼:
1.單獨的關鍵字,直接讀取
?1 2 3 4 5 6 |
#coding utf-8
file_info = open ( ‘Testing.txt‘ , ‘r‘ )
values = file_info.readlines()
file_info. close ()
for item in values :
print item
|
結果:
2.兩列關鍵字,以‘,’逗號分隔
代碼部分:
?1 2 3 4 5 6 7 |
file_info = open ( ‘Testing.txt‘ , ‘r‘ )
values = file_info.readlines()
file_info. close ()
for item in values :
data1 = item.split( ‘,‘ )[0]#第一列
data2 = item.split( ‘,‘ )[1]#第二列
print data1, data2
|
結果如下:
Txt格式的是比較簡單的,但是如果有多組數據呢?用spilt拆分就沒那麽方便了,因為以split方法一次只能將字符串拆分為兩段,那麽針對多組數據就要用到csv和excel啦。
二、讀取csv文檔
註意csv文檔的建立最好是在excel中另存為——>選擇csv格式,而不是直接改後綴。
讀取csv文檔我們需要引入csv庫,即import csv
先看一下我們需要讀取的文檔:
OK,接下來我們要訪問這些數據:
?1 2 3 4 5 6 |
import csv #訪問csv文件需要csv庫的支持(本身自帶),直接導入即可
my_file = ‘Testing.csv‘ #文件名
values = csv.reader( open (my_file, ‘rb‘ ))
for item in values :
print item #整行讀
print item[0], item[1], item[2] #一個數據一個數據的讀
|
使用item[Index]可以訪問具體的那個數據,結果如下:
看起來不錯,很能滿足我們的需求,可以方便的讀取多行多列數據,而且針對單個的數據訪問也十分方便。但是,But…有些人可能試過,csv是不支持中文的,自己寫進中文進去打開就有可能是一堆編碼,那麽Excel就登場了~
三、讀取Excel文件
筆者個人覺得Excel是比較完美的,改進了CSV不支持中文的情況,好的,看一下我們的例子:
在Selenium使用Excel讀取數據的話我們是需要下載Excel庫文件的,即xlrd文件,下載鏈接:https://pypi.python.org/pypi/xlrd
下載完成解壓,在當前目錄cmd,輸入python setup.py install即可安裝成功,也可以直接cmd,輸入pip命令:pip install xlrd
安裝完成後,直接導入xlrd即可使用相關操作Excel的方法:
?1 2 3 4 5 6 7 8 9 |
import xlrd
my_file = xlrd.open_workbook( ‘Testing.xls‘ )#得到文件
table = my_file.sheets()[0]#得到sheet頁
nrows = table .nrows #總行數
ncols = table .ncols #總列數
i = 0
while i < nrows:
print table .row_values(i)[0], table .row_values(i)[1]
i = i+1
|
結果:
OK,Excel能夠解決中文的問題,但是此處需要註意,不能直接讀取整行的數據,只能將數據分開一個一個的讀取,例如以上代碼換成下面這樣:
?1 2 3 |
while i < nrows:
print table .row_values(i) #讀取整行
i = i+1
|
結果就會出現編碼問題:
可能大家還註意到了,這裏第二列的數字1990,在Selenium就變成了浮點型數字1999.0,之前看過一個解決辦法是在Excel文檔中,選中單元格,右鍵單元格格式——>文本.但是筆者發現這樣並不能解決問題,至於數字目前筆者的解決辦法是代碼判斷,如果是純數字就轉化為int型。
?1 2 3 4 5 6 7 |
while i < nrows:
cell = table .row_values(i)[1] #得到數字列數據
ctype = table .cell(i, 1).ctype #得到數字列數據的格式
if ctype == 2 and cell % 1 == 0: #判斷是否是純數字
cell = int (cell) #是純數字就轉化位 int 類型
print table .row_values(i)[0], cell
i = i+1
|
接下來我們再看結果:
OK,這下圓滿啦。
*註意:
1.csv或者excel格式的文件在最初設置數據的時候都要右鍵——>單元格格式——>文本
2.excel文件的格式必須是後綴名為*.xls
3.excel文檔的ctype 分為5種,對應分別是:
empty: 0
string: 1
number:2
date: 3
boolean :4
error:5
selenium實現excel文件數據的讀、寫