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

猜你喜欢

转载自www.cnblogs.com/yanfensun/p/10085009.html