首页 > 代码库 > selenium+python 之断言,截图,日志,数据分离源码案例

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 = http://www.mamicode.com/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 = http://www.mamicode.com/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 = http://www.mamicode.com/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 之断言,截图,日志,数据分离源码案例