Python+Selenium用例模块数据化之4:多账号登录并验证+增加测试报告接口

日志接口:log_module.py

import time
import os

class Loginfo(object):
    def __init__(self, mode='w'): #打开文件
        path = os.path.dirname(os.path.abspath('.')) + '/mokuaihua/logs/'  # 日志存储路径
        filename = time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime())+'.txt'
        self.log = open(path+filename,mode,encoding='utf-8')

    def log_write(self,msg):
        self.log.write(msg)

    def log_close(self):
        self.log.close()

if __name__ == '__main__':
    log = Loginfo()
    log.log_write('test 测试')
    log.log_close()

用例增加验证信息:

from selenium import webdriver
import time
from selenium.webdriver.support.ui import WebDriverWait
#从文件中导入数据
from userdata import get_webinfo,get_userinfo
from log_module import Loginfo

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

def openBrower():
    driver = webdriver.Chrome()
    return driver

def openUrl(driver,url):
    driver.get(url)
    driver.maximize_window()

def findElement(driver,arg):#参数是字点
    # driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[3]/div/div').click()  #关闭弹窗
    waituntil_load(driver, 15, lambda driver: driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[3]/div/div')).click()

    if 'text_id' in arg.keys():
        element_login = waituntil_load(driver,15,lambda driver:driver.find_element_by_link_text(arg['text_id']))
        element_login.click()

    time.sleep(3)
    userEle = driver.find_element_by_id(arg['userid'])
    pwdEle = driver.find_element_by_id(arg['pwdid'])
    loginEle = driver.find_element_by_id(arg['loginid'])
    return userEle,pwdEle,loginEle

def sendValues(eletuple,arg):#arg为登录数据,格式为字典
    listkey = ['account','pwd']
    i = 0
    for key in listkey:
        eletuple[i].clear()
        eletuple[i].send_keys(arg[key])
        i += 1
    eletuple[-1].click()

def checkResult(driver,i,arg,log):
    try:
        err = driver.find_element_by_id('login-form-tips')
        print('第%d个账号登录失败,账号信息是:%s, 提示信息为:%s'%(i+1,arg,err.text))

        msg = '第%d个账号, %s:%s, error:%s'%(i+1,arg['account'],arg['pwd'],err.text)
        log.log_write(msg+'\n')
        result = False
    except:
        print('第%d个账号登陆成功,账号信息是:%s'%(i+1,arg))

        msg = '第%d个账号, %s:%s, pass' % (i+1, arg['account'],arg['pwd'])
        log.log_write(msg+'\n')
        result = True
    return result

def login_test(ele_dict,user_list):
    driver = openBrower()

    #初始化日志文件
    log = Loginfo()

    openUrl(driver,ele_dict['url'])

    ele_tuple = findElement(driver,ele_dict)

    for i in range(len(user_list)):
        sendValues(ele_tuple,user_list[i])
        time.sleep(3)
        result = checkResult(driver,i,user_list[i],log)
        if result == True:
            driver.find_element_by_link_text('退出').click()#点击退出按钮
            ele_tuple = findElement(driver, ele_dict)#重新找到相应元素,点击登录
        time.sleep(3)

    log.log_close()
if __name__ == '__main__':
    '''
    ele_dict = {'url': 'http://www.maiziedu.com/',
                'text_id': '登录',
                'userid': 'id_account_l',
                'pwdid': 'id_password_l',
                'loginid': 'login_btn',
                #'account' : '18665933615',
                #'pwd' : 'abc123456',
                #'errorinfo' : '账号或者密码错误,请重新输入'
                }
    user_list = [{'account' : '18665933615','pwd' : 'abc123456'},
                 {'account': '123', 'pwd': 'abc123456'},
                 {'account' : '[email protected]','pwd' : 'z5'}]'''

    ele_dict = get_webinfo()
    #print(ele_dict)
    user_list = get_userinfo()
    #print(user_list)
    login_test(ele_dict,user_list)
pycharm输出为:第1个账号登录失败,账号信息是:{'account': '18665933615', 'pwd': 'abc123456'}, 提示信息为:账号或者密码错误,请重新输入
第2个账号登录失败,账号信息是:{'account': '123', 'pwd': 'abc123456'}, 提示信息为:该账号格式不正确
第3个账号登陆成功,账号信息是:{'account': '[email protected]', 'pwd': 'z15'}
第4个账号登录失败,账号信息是:{'account': '[email protected]', 'pwd': '123456'}, 提示信息为:账号或者密码错误,请重新输入
第5个账号登录失败,账号信息是:{'account': '', 'pwd': 'abc123456'}, 提示信息为:账号不能为空

第6个账号登录失败,账号信息是:{'account': '18665933615', 'pwd': ''}, 提示信息为:密码不能为空


日志文件输出为:

第1个账号, 18665933615:abc123456, error:账号或者密码错误,请重新输入
第2个账号, 123:abc123456, error:该账号格式不正确
第3个账号, [email protected]:z5, pass
第4个账号, [email protected]:123456, error:账号或者密码错误,请重新输入
第5个账号, :abc123456, error:账号不能为空
第6个账号, 18665933615:, error:密码不能为空

猜你喜欢

转载自blog.csdn.net/zupzng/article/details/80630735
今日推荐