python3 selenium web自动化测试之excel参数化

简单来说,就是不把测试的数据(或者说用例的参数)直接写在代码里,而是写在excel中,代码从excel表格中读取出来,做到数据分离。简单举个例子,上代码:

#coding=utf-8
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

def open_excel(file = 'login.xlsx'):
    try:
        data = xlrd.open_workbook(file)  # 打开Excel文件读取数据
        return data
    except Exception, e:
        print str(e)

# 根据索引获取Excel表格中的数据 参数:file:Excel文件路径 colnameindex:表头列名所在行的所以 ,by_index:表的索引
def excel_table_byindex(file = 'login.xlsx',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("D:\\login.xlsx", 0)
    # listdata = excel_table_byindex("login.xlsx", 0)
    if(len(listdata) <= 0):
        assert 0, u"Excel数据异常"

    for i in range(1, len(listdata)):
        driver = webdriver.Firefox()
        driver.get("http://www.baidu.com")
        assert u"百度一下,你就知道" in driver.title
        # 点击登录按钮
        driver.find_element_by_xpath(".//*[@id='u1']/a[7]").click()
        time.sleep(3)
        url = driver.current_window_handle
        driver.switch_to.window(url)
        time.sleep(3)
        driver.find_element_by_name("userName").clear()
        driver.find_element_by_name("userName").send_keys(listdata[i]['passname'])
        driver.find_element_by_name("password").clear()
        driver.find_element_by_name("password").send_keys(listdata[i]['password'])
        driver.find_element_by_name("memberPass").click()
        time.sleep(15)
        driver.find_element_by_id("TANGRAM__PSP_8__submit").click()

        # driver.find_element_by_id('passname').send_keys(listdata[i]['passname'])
        # driver.find_element_by_id('password').send_keys(listdata[i]['password'])
        # driver.find_element_by_xpath("//div[2]/div[2]/div/div[6]/input").click()
        time.sleep(5)
        try:
            elem = driver.find_element_by_id("kw")
        except NoSuchElementException:
            assert 0, u"登录失败,找不到右上角头像"
        driver.close()

if __name__ == '__main__':
    Login()

表格中的数据为:


小编不保证你拷贝下来就能跑通过,因为环境有可能不一样。所以,请看明白后举一反三。谢谢您的浏览。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都飘雪

您的1毛奖励是我创作的源源动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值