1. 程式人生 > >python之excel引數化

python之excel引數化

轉載至https://blog.csdn.net/yzl11/article/details/52832941

實現程式碼:

  1.   # encoding: utf-8
  2.   '''
  3.   Created on 2016年5月4日
  4.    
  5.   @author: Dongming
  6.   '''
  7.    
  8.   from selenium import webdriver
  9.   from selenium.common.exceptions import NoSuchElementException
  10.   from selenium.webdriver.common.keys import Keys
  11.   from selenium.webdriver.support.ui import WebDriverWait
  12.   import time
  13.    
  14.   browser = webdriver.Firefox()
  15.   browser.get( "http://www.effevo.com")
  16.   assert "effevo" in browser.title
  17.    
  18.   #點選登入按鈕
  19.   browser.find_element_by_xpath( ".//*[@id='home']/div/div[2]/header/nav/div[3]/ul/li[2]/a").click()
  20.   time.sleep( 1)
  21.    
  22.   browser.find_element_by_id( 'passname').send_keys('[email protected]')
  23.   browser.find_element_by_id( 'password').send_keys('test1234')
  24.   browser.find_element_by_xpath( ".//*[@id='content']/div/div[6]/input").click()
  25.    
  26.   time.sleep( 2)
  27.   try:
  28.   elem = browser.find_element_by_xpath( ".//*[@id='ee-header']/div/div/div/ul[2]/li/a/img")
  29.   except NoSuchElementException:
  30.   #if elem == None:
  31.   assert 0 , u"登入失敗,找不到右上角頭像"
  32.   browser.close()

 

 

 

 

製作Excel檔案:

下一步,我們要對以上輸入的使用者名稱和密碼進行引數化,使得這些資料讀取自Excel檔案。我們將Excel檔案命名為data.xlsx,其中有兩列資料,第一列為username,第二列為password。 
Excel截圖

安裝xlrd第三方庫

Python讀取Excel檔案需要使用第三方的庫檔案xlrd,我們到python官網下載http://pypi.python.org/pypi/xlrd模組安裝。

1.下載xlrd-0.9.4.tar.gz 
2.解壓該檔案。由於該檔案是用tar命令壓縮的,所以建議windows使用者用7zip解壓,解壓後內容如下: 
7zip截圖 
3.命令列執行Setup.py檔案:setup.py install 
安裝xlrd 
4.提示安裝完畢後,我們就可以在python指令碼中import xlrd了。

xlrd讀取Excel檔案:

xlrd庫檔案操作Excel的幾個重要函式是

  1.   data = xlrd.open_workbook( 'excelFile.xls') #開啟Excel檔案讀取資料
  2.   table = data.sheets()[ 0] #通過索引順序獲取獲取一個工作表
  3.   table.row_values(i) # 獲取整行的值(陣列)
  4.   nrows = table.nrows #獲取行數

 

 

為了方便使用,我們把以上用到的函式封裝為excel_table_byindex()函式。 
實現程式碼:

  1.   import xlrd
  2.    
  3.   def open_excel(file= 'file.xls'):
  4.   try:
  5.   data = xlrd.open_workbook(file)
  6.   return data
  7.   except Exception,e:
  8.   print str(e)
  9.   #根據索引獲取Excel表格中的資料 引數:file:Excel檔案路徑 colnameindex:表頭列名所在行的所以 ,by_index:表的索引
  10.   def excel_table_byindex(file= 'file.xls',colnameindex=0,by_index=0):
  11.   data = open_excel(file)
  12.   table = data.sheets()[by_index]
  13.   nrows = table.nrows #行數
  14.   colnames = table.row_values(colnameindex) #某一行資料
  15.   list =[]
  16.   for rownum in range(1,nrows):
  17.   row = table.row_values(rownum)
  18.   if row:
  19.   app = {}
  20.   for i in range(len(colnames)):
  21.   app[colnames[i]] = row[i]
  22.   list.append(app)
  23.   return list

 

 

Excel資料引數化:

  1.   # encoding: utf-8
  2.    
  3.   '''
  4.   Created on 2016年5月4日
  5.    
  6.   @author: Dongming
  7.   '''
  8.    
  9.   from selenium import webdriver
  10.   from selenium.common.exceptions import NoSuchElementException
  11.   from selenium.webdriver.common.keys import Keys
  12.   from selenium.webdriver.support.ui import WebDriverWait
  13.   import time
  14.   import xlrd
  15.    
  16.   #import xdrlib ,sys
  17.   def open_excel(file= 'file.xls'):
  18.   try:
  19.   data = xlrd.open_workbook(file)
  20.   return data
  21.   except Exception,e:
  22.   print str(e)
  23.   #根據索引獲取Excel表格中的資料 引數:file:Excel檔案路徑 colnameindex:表頭列名所在行的所以 ,by_index:表的索引
  24.   def excel_table_byindex(file= 'file.xls',colnameindex=0,by_index=0):
  25.   data = open_excel(file)
  26.   table = data.sheets()[by_index]
  27.   nrows = table.nrows #行數
  28.   colnames = table.row_values(colnameindex) #某一行資料
  29.   list =[]
  30.   for rownum in range(1,nrows):
  31.   row = table.row_values(rownum)
  32.   if row:
  33.   app = {}
  34.   for i in range(len(colnames)):
  35.   app[colnames[i]] = row[i]
  36.   list.append(app)
  37.   return list
  38.    
  39.   def Login():
  40.    
  41.   listdata = excel_table_byindex( "E:\\data.xlsx" , 0)
  42.    
  43.   if (len(listdata) <= 0 ):
  44.   assert 0 , u"Excel資料異常"
  45.    
  46.   for i in range(0 , len(listdata) ):
  47.   browser = webdriver.Firefox()
  48.   browser.get( "http://www.effevo.com")
  49.   assert "effevo" in browser.title
  50.    
  51.   #點選登入按鈕
  52.   browser.find_element_by_xpath( ".//*[@id='home']/div/div[2]/header/nav/div[3]/ul/li[2]/a").click()
  53.   time.sleep( 1)
  54.    
  55.   browser.find_element_by_id( 'passname').send_keys(listdata[i]['username'])
  56.   browser.find_element_by_id( 'password').send_keys(listdata[i]['password'])
  57.   browser.find_element_by_xpath( ".//*[@id='content']/div/div[6]/input").click()
  58.    
  59.   time.sleep( 2)
  60.   try:
  61.   elem = browser.find_element_by_xpath( ".//*[@id='ee-header']/div/div/div/ul[2]/li/a/img")
  62.   except NoSuchElementException:
  63.   assert 0 , u"登入失敗,找不到右上角頭像"
  64.   browser.close()
  65.   if __name__ == '__main__':
  66.   Login()

 

原文地址:http://blog.csdn.net/deadwalk/article/details/51332148