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:密碼不能爲空
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章