python之excel引數化
阿新 • • 發佈:2018-12-07
轉載至https://blog.csdn.net/yzl11/article/details/52832941
實現程式碼:
- # encoding: utf-8
- '''
- Created on 2016年5月4日
-
@author: Dongming
- '''
- from selenium import webdriver
- from selenium.common.exceptions import NoSuchElementException
-
from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support.ui import WebDriverWait
- import time
- browser = webdriver.Firefox()
-
browser.get(
"http://www.effevo.com")
- assert "effevo" in browser.title
- #點選登入按鈕
- browser.find_element_by_xpath( ".//*[@id='home']/div/div[2]/header/nav/div[3]/ul/li[2]/a").click()
- time.sleep( 1)
- browser.find_element_by_id( 'passname').send_keys('[email protected]')
- browser.find_element_by_id( 'password').send_keys('test1234')
- browser.find_element_by_xpath( ".//*[@id='content']/div/div[6]/input").click()
- time.sleep( 2)
- try:
- elem = browser.find_element_by_xpath( ".//*[@id='ee-header']/div/div/div/ul[2]/li/a/img")
- except NoSuchElementException:
- #if elem == None:
- assert 0 , u"登入失敗,找不到右上角頭像"
- browser.close()
製作Excel檔案:
下一步,我們要對以上輸入的使用者名稱和密碼進行引數化,使得這些資料讀取自Excel檔案。我們將Excel檔案命名為data.xlsx,其中有兩列資料,第一列為username,第二列為password。
安裝xlrd第三方庫
Python讀取Excel檔案需要使用第三方的庫檔案xlrd,我們到python官網下載http://pypi.python.org/pypi/xlrd模組安裝。
1.下載xlrd-0.9.4.tar.gz
2.解壓該檔案。由於該檔案是用tar命令壓縮的,所以建議windows使用者用7zip解壓,解壓後內容如下:
3.命令列執行Setup.py檔案:setup.py install
4.提示安裝完畢後,我們就可以在python指令碼中import xlrd了。
xlrd讀取Excel檔案:
xlrd庫檔案操作Excel的幾個重要函式是
- data = xlrd.open_workbook( 'excelFile.xls') #開啟Excel檔案讀取資料
- table = data.sheets()[ 0] #通過索引順序獲取獲取一個工作表
- table.row_values(i) # 獲取整行的值(陣列)
- nrows = table.nrows #獲取行數
為了方便使用,我們把以上用到的函式封裝為excel_table_byindex()函式。
實現程式碼:
- import xlrd
- def open_excel(file= 'file.xls'):
- try:
- data = xlrd.open_workbook(file)
- return data
- except Exception,e:
- print str(e)
- #根據索引獲取Excel表格中的資料 引數:file:Excel檔案路徑 colnameindex:表頭列名所在行的所以 ,by_index:表的索引
- def excel_table_byindex(file= 'file.xls',colnameindex=0,by_index=0):
- data = open_excel(file)
- table = data.sheets()[by_index]
- nrows = table.nrows #行數
- colnames = table.row_values(colnameindex) #某一行資料
- list =[]
- for rownum in range(1,nrows):
- row = table.row_values(rownum)
- if row:
- app = {}
- for i in range(len(colnames)):
- app[colnames[i]] = row[i]
- list.append(app)
- return list
Excel資料引數化:
- # encoding: utf-8
- '''
- Created on 2016年5月4日
- @author: Dongming
- '''
- from selenium import webdriver
- from selenium.common.exceptions import NoSuchElementException
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support.ui import WebDriverWait
- import time
- import xlrd
- #import xdrlib ,sys
- def open_excel(file= 'file.xls'):
- try:
- data = xlrd.open_workbook(file)
- return data
- except Exception,e:
- print str(e)
- #根據索引獲取Excel表格中的資料 引數:file:Excel檔案路徑 colnameindex:表頭列名所在行的所以 ,by_index:表的索引
- def excel_table_byindex(file= 'file.xls',colnameindex=0,by_index=0):
- data = open_excel(file)
- table = data.sheets()[by_index]
- nrows = table.nrows #行數
- colnames = table.row_values(colnameindex) #某一行資料
- list =[]
- for rownum in range(1,nrows):
- row = table.row_values(rownum)
- if row:
- app = {}
- for i in range(len(colnames)):
- app[colnames[i]] = row[i]
- list.append(app)
- return list
- def Login():
- listdata = excel_table_byindex( "E:\\data.xlsx" , 0)
- if (len(listdata) <= 0 ):
- assert 0 , u"Excel資料異常"
- for i in range(0 , len(listdata) ):
- browser = webdriver.Firefox()
- browser.get( "http://www.effevo.com")
- assert "effevo" in browser.title
- #點選登入按鈕
- browser.find_element_by_xpath( ".//*[@id='home']/div/div[2]/header/nav/div[3]/ul/li[2]/a").click()
- time.sleep( 1)
- browser.find_element_by_id( 'passname').send_keys(listdata[i]['username'])
- browser.find_element_by_id( 'password').send_keys(listdata[i]['password'])
- browser.find_element_by_xpath( ".//*[@id='content']/div/div[6]/input").click()
- time.sleep( 2)
- try:
- elem = browser.find_element_by_xpath( ".//*[@id='ee-header']/div/div/div/ul[2]/li/a/img")
- except NoSuchElementException:
- assert 0 , u"登入失敗,找不到右上角頭像"
- browser.close()
- if __name__ == '__main__':
- Login()