selenium+python 之断言,截图,日志,数据分离源码案例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium+python 之断言,截图,日志,数据分离源码案例相关的知识,希望对你有一定的参考价值。
前言:学习使我快乐
一、断言
标题断言
# 方法一
try:
assert u"百度一下" in driver.title
print (‘Assertion test pass.‘)
except Exception as e:
print (‘Assertion test fail.‘, format(e))
# 方法二
if u"百度一下,你就知道" == driver.title :
print (‘Assertion test pass.‘)
else:
print (‘Assertion test fail.‘)
print driver.title
元素文字进行断言
def is_login_fail(self):
""""账户|密码错误获取alert框值"""
try:
al= self.driver.switch_to.alert
time.sleep(1)
print al.text
return True
except:
return False
try:
text =welcome_page.show_username() 这块是调用了自己封装的一个方法
print text
return True
except:
return False
断言控件是否被选中
try:
driver.find_element_by_xpath("//*[@id=‘news‘]").is_selected()
print (‘Test Pass.‘)
except Exception as e:
print (‘Test fail‘,format(e))
二、截图
get_screenshot_as_file()
driver.get_screenshot_as_file("图片路径")
封装再调用
def take_screenshot(self):
"""
截图并保存在根目录下的Screenshots文件夹下
:param none:
"""
file_path = os.path.dirname(os.getcwd()) + ‘/Screenshots/‘
rq = time.strftime(‘%Y%m%d%H%M%S‘, time.localtime(time.time()))
screen_name = file_path + rq + ‘.png‘
try:
self.driver.get_screenshot_as_file(screen_name)
mylog.info("开始截图并保存")
except Exception as e:
mylog.error("出现异常", format(e))
三、日志
# _*_ coding: utf-8 _*_
import logging
import os.path
import time
class Logger(object):
def __init__(self, logger):
"""
指定保存日志的文件路径,日志级别,以及调用文件
将日志存入到指定的文件中
:param logger:
"""
# 创建一个logger
self.logger = logging.getLogger(logger)
self.logger.setLevel(logging.DEBUG)
# 创建一个handler,用于写入日志文件
rq = time.strftime(‘%Y%m%d%H%M‘, time.localtime(time.time()))
log_path = os.path.dirname(os.getcwd()) + ‘/Logs/‘
log_name = log_path + rq + ‘.log‘
fh = logging.FileHandler(log_name)
fh.setLevel(logging.INFO)
# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# 定义handler的输出格式
formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
self.logger.addHandler(fh)
self.logger.addHandler(ch)
def getlog(self):
return self.logger
四、数据驱动
#循环读取txt文件中的数据,可以作为用户名,密码等使用
from selenium import webdriver
#创建两个数组
user=[]
pwd=[]
f=open(r‘C:\bbs\data\user_info.txt‘,‘r‘,encoding=‘utf-8‘)
#for 循环
for i in range(3):
#单行读取txt中的数据
text=f.readline()
#分隔数据,
t1=text.split(‘,‘)[1]
t2=text.split(‘,‘)[0]
#将需要的数据都加到数组里
user.append(t1)
pwd.append(t2)
#参数化的时候想用哪个就用哪个
print(user[1],pwd[1])
import xlrd
def open_excel(file= ‘file.xls‘):
try:
data = xlrd.open_workbook(file)
return data
except Exception,e:
print str(e)
#根据索引获取Excel表格中的数据 参数:file:Excel文件路径 colnameindex:表头列名所在行的所以 ,by_index:表的索引
def excel_table_byindex(file= ‘file.xls‘,colnameindex=0,by_index=0):
data = open_excel(file)
table = data.sheets()[by_index]
nrows = table.nrows #行数
colnames = table.row_values(colnameindex) #某一行数据
list =[]
for rownum in range(1,nrows):
row = table.row_values(rownum)
if row:
app = {}
for i in range(len(colnames)):
app[colnames[i]] = row[i]
list.append(app)
return list
# coding:utf-8
import xml.dom.minidom
from config import globalparam
xml_path=globalparam.xml_path
def getXmlData(value):
dom = xml.dom.minidom.parse(xml_path)
db = dom.documentElement
name = db.getElementsByTagName(value)
nameValue = name[0]
return nameValue.firstChild.data
def getXmlUser(parent, child):
dom = xml.dom.minidom.parse(xml_path)
db = dom.documentElement
itemlist = db.getElementsByTagName(parent)
item = itemlist[0]
return item.getAttribute(child)
if __name__==‘__main__‘:
print getXmlData(‘test‘)
print getXmlUser(‘failLogin1‘,‘expected‘)
以上是关于selenium+python 之断言,截图,日志,数据分离源码案例的主要内容,如果未能解决你的问题,请参考以下文章
Selenium2+python自动化60-异常后截图(screenshot)
Selenium2+python自动化60-异常后截图(screenshot)转载
Selenium2+python自动化60-异常后截图(screenshot)转载
Selenium2+python自动化56-unittest之断言(assert)