9.生成Excel测试报表(XlsxWriter生成报告)--改变颜色失败(待定)

对写报告py进行修改:

#coding:utf-8
import time
import xlsxwriter

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_init(self,sheetname,*title):#空函数-占位?------------2
        pass
    
    def log_write(self,msg):
        self.log.write(msg)
        
    def log_close(self):
        self.log.close()

class Xlloginfo(object):#------------------------------------------1
    def __init__(self,path=''):#传路径 默认当前路径
        fname = path + time.strftime('%Y-%m-%d',time.gmtime())
        self.row = 0 #第一行向后写
        self.xl = xlsxwriter.Workbook(path + fname + '.xlsx')
        #-单元格背景色变红----------------------------------------3
        self.style = self.xl.add_format({'bg_color':'red'})
        
    def xl_write(self,*args):
        col = 0
        style =''#---如发现Error--------------------------4
        if 'Error' in args:#---如发现Error---
            style = self.style#-则走这个改变调用上面函数
            
        for val in args:
            self.sheet.write_string(self.row,col,val)
            col+=1
        self.row+=1
    def log_init(self,sheetname,*title):#初始化
        self.sheet = self.xl.add_worksheet(sheetname)
        self.sheet.set_column('A:E',30)
        self.xl_write(*title)#调用上面xl_write
        
    def log_write(self,*args):
        self.xl_write(*args)#调用上面xl_write
    def log_close(self):
        self.xl.close()

if __name__=='__main__':
    '''
    log=Loginfo()
    log.log_write('test Loginfo 测试')
    log.log_close()
    '''
    xinfo=Xlloginfo()
    xinfo.Xl_init('test','uname','pwd','result','info')
    xinfo.Xl_close()

对测试脚本进行修改:

#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,XlUserinfo#---------1
from log_module import Loginfo,Xlloginfo#-------------------------2


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):
    result = False #代表检查结果错误
    time.sleep(2)
    try:
        err=d.find_element_by_css_selector(err_id)
        print("Account And Pwd Error!")
        
        e=err.text #把抓取的值赋值给变量e,以变量e的格式储存
        #str(err.text)str无法直接读取
        #msg='uname=%s pwd=%s:error:%s\n'%(arg['uname'],arg['pwd'],e)-----5
        print(str(e)) #解析e以string的方式,显示当时错误提示的文字
        log.log_write(arg['uname'],arg['pwd'],'Error',e)#-----------------6
    except:
        msg='uname=%s pwd=%s:pass\n'%(arg['uname'],arg['pwd'])
        #log.log_write(msg)
        log.log_write(arg['uname'],arg['pwd'],'Pass')#--------------------7
        print("Account And Pwd Rignt!")
        result = True 
    return result

def logout(d,ele_dict):#-新增接口-
    #d.find_element_by_class_name(ele_dict['usermenu']).click()#注销所属目录现网页已经没有了
    d.find_element_by_css_selector(ele_dict['logout']).click()#注销
    
def login_test(ele_dict,user_list):
    d=openBrower()#打开浏览器
    #log=Loginfo()
    log=Xlloginfo()#-----------------------------------------------3
    log.log_init('sheet1','uname','pwd','result','msg') #初始化---4
    openUrl(d,ele_dict['url'])#打开网址 
    
    ele_tuple=findElement(d, ele_dict)
    for arg in user_list:
        sendVals(ele_tuple,arg)
        #arg是账户和密码
        result = checkResult(d,ele_dict['errorid'],arg,log)
        if result:#如果返回True也就是登陆成功则回复现场1.注销logout2.重新登陆login
            logout(d,ele_dict)
            ele_tuple=findElement(d,ele_dict)#重新login
    log.log_close()

if __name__ == '__main__':#--------------------------------1
    
    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')旧路径从文本
    xinfo = XlUserinfo(r'C:/Users/Yang Xiu Yu/Desktop/userinfo.xlsx')
    user_list = xinfo.get_sheetinfo_by_index(0)
    login_test(ele_dict,user_list)
    

结果:


猜你喜欢

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