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),以‘;’为分隔

最新文章

  1. HDU5942 : Just a Math Problem
  2. 自定义 JSON 对象
  3. Unity3d知识体系思维导图
  4. 【Java每日一题】20161101
  5. Effective Objective-C 2.0 — 第13条:用“方法调配 技术” 调试 “黑盒方法”
  6. numpy——linspace创建等差数列
  7. HDOJ-三部曲一(搜索、数学)-1005-Dungeon Master
  8. ural 1126 Magnetic Storms
  9. python with用法
  10. vue学习第一篇 hello world
  11. ubuntu上Android开发环境及依赖项
  12. KVM -> 虚拟机管理&console登录_02
  13. MX4_ADB
  14. android之发送Get或Post请求至服务器接口
  15. 邮件相关协议及JavaMail 包简介
  16. 2018-2019-1 1723《程序设计与数据结构》第5&6&7周作业 总结
  17. Android下点亮LED
  18. Codeforces Round #541 (Div. 2)D(并查集(dsu),拓扑排序)
  19. AD15添加导入组件
  20. oracle exp CONSISTENT

热门文章

  1. 学习笔记:oracle学习一:oracle11g体系结构之物理存储结构
  2. [官网]PG12发布了
  3. Hadoop配置环境变量Program~2的用法
  4. Linux(CentOS 7)下安装postgres
  5. linux下jar命令(运行jar包)
  6. Eclipse一些技巧
  7. 使用Duilib开发Windows软件(3)——控件的样式
  8. nodejs 入门学习
  9. c++-01--迭代器
  10. 关于微信小程序获取多个formId的实现方法