python+selenium:数据参数化(从文件读取数据)

#!/usr/bin/env python
# -*- coding=utf-8 -*-
# coding: utf-8


from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from common.read_txt import read_txt
# from common.read_csv import read_csv
from common.read_xlsx import read_xlsx


def get_ele_times(driver, times, func):
    return WebDriverWait(driver, times).until(func)


def open_browser():
    """
    打开浏览器驱动
    :return: 返回句柄
    """
    driver = webdriver.Chrome()
    return driver


def open_url(driver, url):
    """
    打开网址
    :return:
    """
    driver.get(url)
    driver.maximize_window()


def find_element(driver, kwargs):
    """
    :param driver:浏览器句柄, kwargs必须是字典
    1:login_text:登录按钮,             //*[@id="head"]/div[1]/div[3]/a[7]
    2:user_login_button:用户名登录按钮,    //*[text()='用户名登录']
    3:user_id:用户名,              //*[@name=""userName""]
    4:pwd_id:密码,                 //*[@name="password"]
    5:login_id:立即登录按钮,        //*[@id="TANGRAM__PSP_10__submit"]
    :return:login_text, user_login_button, user_id, pwd_id, login_id
    """
    get_ele_times(driver, 3, lambda d: d.find_element_by_xpath(kwargs['login_text'])).click()
    get_ele_times(driver, 5, lambda d: d.find_element_by_xpath(kwargs['user_login_button'])).click()
    user_id = driver.find_element_by_xpath(kwargs['user_id'])
    pwd_id = driver.find_element_by_xpath(kwargs['pwd_id'])
    login_id = driver.find_element_by_xpath(kwargs['login_id'])
    ele_tuple = (user_id, pwd_id, login_id)
    return ele_tuple


def send_values(ele_tuple, account_dict):
    """
    :ele_tuple: 元素对象名称组成的元组
    :account_dict : 用户要输入的值组成的字典
    :return:
    """
    list_key = ['user_name', 'pwd']
    i = 0
    for key in list_key:
        ele_tuple[i].clear()
        ele_tuple[i].send_keys(account_dict[key])
        i = i + 1
    ele_tuple[-1].click()


def login_test(ele_dict, account_dict):
    """
    :param ele_dict:页面元素xpath值组成的一个字典
    :return:
    """
    driver = open_browser()
    url = 'https://www.baidu.com/'
    open_url(driver, url)
    ele_tuple = find_element(driver, ele_dict)
    send_values(ele_tuple, account_dict)
    driver.quit()


if __name__ == '__main__':
    """
    login_text0 = '//*[@id="head"]/div[1]/div[3]/a[7]'
    user_login_button0 = '//*[@id="TANGRAM__PSP_10__footerULoginBtn"]'
    user_id0 = '//*[@name="userName"]'
    pwd_id0 = '//*[@name="password"]'
    login_id0 = '//*[@id="TANGRAM__PSP_10__submit"]'
    ele_dict0 = {'login_text': login_text0, 'user_login_button': user_login_button0,
                 'user_id': user_id0, 'pwd_id': pwd_id0, 'login_id': login_id0}
    user_name0 = 'aaa'
    pwd0 = '123'
    account_dict0 = {'user_name': user_name0, 'pwd': pwd0}

    """
    ele_dict0 = read_txt('..\\test_file\\element.txt')
    print(ele_dict0)

    xlsx_dict = read_xlsx(path='..\\test_file\\send_values.xlsx', sheet='user_pwd')
    for account in xlsx_dict:
        print(account)
        login_test(ele_dict0, account)




 

发布了52 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/yijinaqingan/article/details/103943802