Selenium(十)测试用例错误处理、日志接口、多用户测试
1.一般的错误类型

2.查看错误提示,是一个div,以id为例找到该元素

3.修改测试用例


def checkResult(driver,err_id):
try:
err = driver.find_element_by_id(err_id)
print ("ACCOUNT AND PWD ERROR!")
print (err.text)
except:
print ("ACCOUNT AND PWD RIGHT!")
4.新增日志接口,保存数据


#coding:UTF-8
import time class Loginfo(object):
"""dpath = '',mode = 'w'tring for Loginfo"""
def __init__(self, path = '',mode = 'w'):
fname = path + time.strftime('%y-%m-%d',time.gmtime()) #文件名字为年月日
self.log = open(path + fname +'.txt',mode) 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() #关闭
执行上述代码,可看到同一目录下生成了一个以今天的年月日为标题的文本文件
把代码引入登录脚本中
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from login import get_webinfo
from login import get_userinfo
from log_module import Loginfo def openBrower(): #配置浏览器
webdriver_handle = webdriver.Firefox()
return webdriver_handle def openUrl(handle,url): #打开url
handle.get(url) def get_ele_times(driver,times,func):
return WebDriverWait(driver,times).until(func) #等待方法 def findElement(driver,arg):
'''
arg must be dict
1.login:登录入口
2.user_xpath:用户名
3.pwd_xpath:密码
4.login_xpath:登录按钮 return useEle,pwdEle,loginEle
'''
ele_login = get_ele_times(driver,10,lambda driver:driver.find_element_by_xpath(arg['login']))
ele_login.click()
useEle = driver.find_element_by_xpath(arg['user_xpath'])
pwdEle = driver.find_element_by_xpath(arg['pwd_xpath'])
loginEle = driver.find_element_by_xpath(arg['login_xpath'])
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(driver,err_id,arg,log):
time.sleep(2)
try:
err = driver.find_element_by_id(err_id)
print ("ACCOUNT AND PWD ERROR!")
msg = '%s %s:error:%s'%(arg['uname'],arg['pwd'],err.text) #保存用户名和密码,错误信息
log.log_write(msg)
except:
print ("ACCOUNT AND PWD RIGHT!")
msg = '%s %s:pass:'%(arg['uname'],arg['pwd']) #保存用户名和密码
log.log_write(msg) def login_test(ele_dict,user_list):
driver = openBrower()
log = Loginfo()
openUrl(driver,ele_dict['url'])
driver.maximize_window() ele_tuple = findElement(driver,ele_dict) #接收字典的值
for arg in user_list:
sendVals(ele_tuple,arg)
checkResult(driver,ele_dict['errorid'],arg,log)
log.close()
if __name__ == '__main__':
url = 'http://www.maiziedu.com/'
account = 'xxx'
pwd = 'maizi123456'
'''
ele_dict = {'url':url,'login':'/html/body/div[2]/div/div/div/div/a[2]','user_xpath':'//*[@id="id_account_l"]',\
'pwd_xpath':'//*[@id="id_password_l"]','login_xpath':'//*[@id="login_btn"]',\
'errorid':'该账号不正确'}
user_list = [{'uname':account,'pwd':pwd}]
'''
ele_dict = get_webinfo(r'C:\Users\xxx\Desktop\webinfo.txt')
user_list = get_userinfo(r'C:\Users\xxx\Desktop\userinfo.txt')
#file webinfo/userinfo ele_dict = get_webinfo(path) user_list = get_userinfo(path)
login_test(ele_dict,user_list)
5.多用户测试
先增加注销操作


def checkResult(driver,err_id,arg,log):
result = False
try:
err = driver.find_element_by_id(err_id)
print ("ACCOUNT AND PWD ERROR!")
msg = 'uname=%s pwd=%s:error:%s\n'%(arg['uname'],arg['pwd'],err.text)
log.log_write(msg)
except:
print ("ACCOUNT AND PWD RIGHT!")
msg = 'uname=%s pwd=%s:pass\n'%(arg['uname'],arg['pwd'])
log.log_write(msg)
result = True
return result
def logout(driver,ele_dict):
driver.find_element_by_class_name(ele_dict['usermenu']).click()
driver.find_element_by_link_text(ele_dict['logout']).click() def login_test(ele_dict,user_list):
driver = openBrower()
log = Loginfo()
openUrl(driver,ele_dict['url'])
driver.maximize_window()
ele_tuple = findElement(driver,ele_dict) #接收字典的值
for arg in user_list:
sendVals(ele_tuple,arg)
result = checkResult(driver,ele_dict['errorid'],arg,log)
if result:
logout(driver,ele_dict) #logout
ele_tuple = findElement(driver,ele_dict) #login
log.log_close()
如果想测试用户名或密码为空的情况,要修改userinfo(uname=1;pws=2),以‘;’为分隔
Selenium(十)测试用例错误处理、日志接口、多用户测试的更多相关文章
- 《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程)
1.简介 TestNG还为我们提供了测试的记录功能-日志.例如,在运行测试用例期间,用户希望在控制台中记录一些信息.信息可以是任何细节取决于目的.牢记我们正在使用Selenium进行测试,我们需要有助 ...
- python接口自动化(三十九)- logger 日志 - 上(超详解)
简介 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP, ...
- Java学习笔记二十八:Java中的接口
Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...
- 10 hbase源码系列(十)HLog与日志恢复
hbase源码系列(十)HLog与日志恢复 HLog概述 hbase在写入数据之前会先写入MemStore,成功了再写入HLog,当MemStore的数据丢失的时候,还可以用HLog的数据来进行恢 ...
- python+selenium十:selenium的二次封装
python+selenium十:基于原生selenium的二次封装 from selenium import webdriverfrom selenium.webdriver.support.w ...
- Spring常犯的十大错误,你踩过吗?
1.错误一:太过关注底层 我们正在解决这个常见错误,是因为 "非我所创" 综合症在软件开发领域很是常见.症状包括经常重写一些常见的代码,很多开发人员都有这种症状. 虽然理解特定库的 ...
- Selenium 4.0 Alpha更新日志
早在2018年8月,整个测试自动化社区就发生了一件重大新闻:Selenium的创始成员Simon Stewart在班加罗尔Selenium会议上正式确认了Selenium 4的发布日期和一些重要更新. ...
- Selenium WebDriver Log4j打印执行日志
在自动化测试脚本的执行过程中,使用log4j在日志文件中打印执行日志,用于监控和后续调试脚本. Log4j.xml 文件 <log4j:configuration xmlns:log4j=&qu ...
- 在C#应用中使用Common Logging日志接口
我在C#应用中一般使用log4net来记录日志,但如果项目中有个多个工程,那么没有工程都需要引用log4neg,感觉很不爽.不过今日在开spring.net的时候,看到了有个通用日志接口Common ...
随机推荐
- Mybatis表关联一对多、多对一、多对多
项目工程结构如下: 1. 搭建MyBatis框架环境 首先需要引入两个包:mybatis.jar 和 sqljdbc42.jar包 若分页需要导入两个包:pagehelper-5.1.0.jar 和 ...
- redis 实现登陆次数限制
title: redis-login-limitation 利用 redis 实现登陆次数限制, 注解 + aop, 核心代码很简单. 基本思路 比如希望达到的要求是这样: 在 1min 内登陆异常次 ...
- java输入输出 -- I/O模型简述
一.简介 本文向大家介绍五种I/O模型.分别是阻塞I/O.非阻塞I/O.I/O复用.信号驱动式I/O.异步I/O等.内容参考<UNIX网络编程>,大家想进深入学习网络编程,建议去读读这本书 ...
- 【转】SpringMVC框架实现后端向前端传数据
首先还是页面userAdd.jsp.它既是发出请求的页面,也是接收返回结果的页面: <%@ page language="java" import="java.ut ...
- 3种PHP实现数据采集的方法
https://www.php.cn/php-weizijiaocheng-387992.html
- linux下安装lnmp集成环境
linux下安装lnmp集成环境 教程地址:https://www.cnblogs.com/peteremperor/p/6750204.html 必须要用root用户,否则权限不够无法安装 安装最新 ...
- stal 安装
1.1 准备实验环境: 安装系统 1)硬件配置如下 2) 先把光标放到”install CentOS 7”,按 Tab键编辑内核参数,添加 (net.ifnames=0 biosdevname=0) ...
- vmware安装win7*64位时,安装不成功的关键点是光驱接口类型选择为IDE模式
mware 安装win7*64时,找不到光盘,后来在xin7*64的虚拟机下的编辑虚拟机设置 找到光驱,点击高级,并选择IDE即可,这样就可以进入虚拟机找到光驱和硬盘到了.进入winpe后可以看到各种 ...
- 将迁移学习用于文本分类 《 Universal Language Model Fine-tuning for Text Classification》
将迁移学习用于文本分类 < Universal Language Model Fine-tuning for Text Classification> 2018-07-27 20:07:4 ...
- Nginx 不支持WebSocket TCP
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";