6.Python-Selenium测试报告生成(通过接口)-淘宝视频教程笔记

测试登陆功能,如果登陆信息不正确则将返回的错误信息写进错误信息报告生成txt文本文档。

需要1.用户信息主要是密码和用户名 2.网页信息主要是网页元素 3.调用txt里登陆信息的待用接口代码 4.报告生产的接口代码 5.执行代码 

PS: 执行后会生成 6.txt文档的测试报告


3.调用txt里登陆信息的待用接口代码

#coding:utf-8
import codecs
def get_webinfo(path):
    web_info={}
    #config=open(path)
    config=codecs.open(path,'r',encoding= 'utf-8-sig')#'r'只读
    #df.to_csv(path, index=False,encoding= u'utf-8')
    #config=codecs.open(path, 'r',encoding= u'utf-8')
    for line in config:
        result=[ele.strip() for ele in line.split('=')]
        web_info.update(dict([result]))

    return web_info

def get_userinfo(path):
    user_info=[]
    #config=open(path)
    config=codecs.open(path,'r',encoding= 'utf-8-sig')#'r'只读
    for line in config:
        user_dict={}
        result=[ele.strip() for ele in line.split(' ')]
        for r in result:
            account=[ele.strip() for ele in r.split('=')]
            user_dict.update(dict([account]))
        user_info.append(user_dict)
    return user_info
            
#print (get_webinfo(r'C:/Users/Yang Xiu Yu/Desktop/webinfo.txt'))

if __name__=='__main__':
    webinfo = get_webinfo(r'C:/Users/Yang Xiu Yu/Desktop/webinfo.txt')
    for key in webinfo:
        print (key,webinfo[key])

    userinfo=get_userinfo(r'C:\Users\Yang Xiu Yu\Desktop\userinfo.txt')
    for l in userinfo:
        print(l)

4.报告生产的接口代码

#coding:utf-8
import time

class Loginfo(object):
    def __init__(self,path='',mode='w'):#‘’为默认当前路径
        fname=path+time.strftime('%Y-%m-%d',time.gmtime())#以当前时间命名
        self.log=open(path+fname+'.txt',mode)#加.txt后缀,以只写方式打开
        
    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 Loginfo 测试')
    log.log_close()

5.执行代码

#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #模拟鼠标
from selenium.webdriver.support.ui import WebDriverWait
import time
from userdata import get_webinfo,get_userinfo
from log_module import Loginfo #---------------------1


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

def openBrower():#打开浏览器
    webdriver_handle = webdriver.Firefox()
    return webdriver_handle

def openUrl(handle,url):#打开网址
    handle.get(url)
    handle.maximize_window()

def findElement(d, arg):#arg must be a dict
    if 'text_id' in arg:
        ele_login=get_ele_times(d,10,lambda d: d.find_element_by_link_text(arg['text_id']))
        ele_login.click()
    useEle=d.find_element_by_css_selector(arg['userid'])
    pwdEle=d.find_element_by_css_selector(arg['pwdid'])
    loginEle=d.find_element_by_id(arg['loginid'])
    return useEle,pwdEle,loginEle

def sendVals(eletuple,arg):
    '''
    ele tuple
    account:uname,pwd
    '''
    listkey = ['uname','pwd']
    i = 0
    for key in listkey:
        eletuple[i].send_keys('')
        eletuple[i].clear()
        eletuple[i].send_keys(arg[key])
        i+=1
        
    eletuple[2].click()

def checkResult(d,err_id,arg,log):#------------------------5
    time.sleep(2)
    try:
        err=d.find_element_by_id(err_id)#根据ID查找而不是文本字符text
        print("Account And Pwd Error!")
        
        e=err.text #把抓取的值赋值给变量e,以变量e的格式储存
        #str(err.text)str无法直接读取
        msg='%s:error:%s'%(arg,e)#-------------------------6
        print(str(e)) #解析e以string的方式,显示当时错误提示的文字
        log.log_write(msg)#--------------------------------7
    except:
        msg='%s:pass'%(arg)#-------------------------------8
        log.log_write(msg)
        print("Account And Pwd Rignt!")

def login_test(ele_dict,user_list):
    d=openBrower()#打开浏览器
    log=Loginfo() #----------------------------------------2
    openUrl(d,ele_dict['url'])#打开网址
     #5
    
    ele_tuple=findElement(d, ele_dict)
    for arg in user_list:
        sendVals(ele_tuple,arg)
        checkResult(d,ele_dict['errorid'],arg,log)#--------4 arg是账户和密码
    log.log_close()#-------------------------------------------3

if __name__ == '__main__':
    
    ele_dict= get_webinfo(r'C:/Users/Yang Xiu Yu/Desktop/webinfo.txt')
    user_list=get_userinfo(r'C:\Users\Yang Xiu Yu\Desktop\userinfo.txt')

    login_test(ele_dict,user_list)

6.txt文档的测试报告


猜你喜欢

转载自blog.csdn.net/hnanxihotmail/article/details/79870536