ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

测试用例多账户登录:

2019-12-29 10:50:44  阅读:206  来源: 互联网

标签:__ 登录 账户 get ele 测试用例 dict arg div


#导入网页模块功能:
from selenium import webdriver
import time
#导入活动模块功能:
from selenium.webdriver.common.action_chains import ActionChains
#导入等待模块功能:
from selenium.webdriver.support.ui import WebDriverWait
#导入usedata模块的get_webinfo功能和get_userinfo功能:
from usedata import get_webinfo,get_userinfo
#导入日志功能:
from log_module import Loginfo

#定义等待时间功能:
def get_ele_times(driver,times,func):
return WebDriverWait(driver,times).until(func)

#定义打开浏览器的功能并返回句柄:
def openBrower():
webdriver_handle = webdriver.Firefox()
return webdriver_handle #返回句柄

#定义加载URL功能:
def openUrl(handle,url):
handle.get(url)

#定义查找元素功能:
def findElement(d,arg):
"""
:param d: 文件句柄
:param arg: 必须是字典
:return:
"""
# text_id = "登录"
# if text_id in arg:
#生成等待时间并找到text_id是登录的:
get_ele_times(d,1,lambda d:d.find_element_by_link_text("登录")).click()
time.sleep(1)
#找到用户名登录的css路径:
d.find_element_by_css_selector("html body div#passport-login-pop.tang-pass-pop-login-merge.tang-pass-pop-login-tpl-mn."
"tang-pass-pop-login-color-blue.tang-pass-pop-login div#TANGRAM__PSP_4__foreground.tang-foreground "
"div#TANGRAM__PSP_4__body.tang-body div#TANGRAM__PSP_4__content.tang-content "
"div#passport-login-pop-dialog div.clearfix div.pass-login-pop-content "
"div.pass-login-pop-form div.tang-pass-footerBar p#TANGRAM__PSP_10__footerULoginBtn."
"tang-pass-footerBarULogin.pass-link").click()
time.sleep(1)
useEle = d.find_element_by_id(arg["userid"])
pwdEle = d.find_element_by_id(arg["pwdid"])
loginEle = d.find_element_by_id(arg["loginid"])
return useEle,pwdEle,loginEle

#定义发送接口函数:
def sendVals(eletuple,arg):
"""
:param eletuple:元组
:param arg: 字典格式:uname、pwd
:return:
"""
listkey = ["uname","pwd"]
i = 0
for key in listkey:
eletuple[i].send_keys("")
eletuple[i].clear()
time.sleep(1)
eletuple[i].send_keys(arg[key])
i += 1
time.sleep(5)
eletuple[2].click()
#定义拖动功能未实现:
# d.find_element_by_css_selector("html body div#vcode-body811.vcode-body div#mod-vcodes811.mod-vcodes div#pass-content811."
# "mod-vcode-content.clearfix div#pass-spin-control811.vcode-spin-control div#vcode-spin-button811."
# "vcode-spin-button p#vcode-spin-button-p811").move_to_element().drag_and_drop().right()

#定义检查结果功能:
def checkResult(d,err_id,arg,log):
result = False
time.sleep(2)
#设置抛出异常:
try:
err = d.find_element_by_id(err_id)
msg = "%s %s:error:%s\n"%(arg["uname"],arg["pwd"],err.text)
log.log_write(msg)
print("用户名或密码错误!")
except:
print("登录成功!")
msg = "%s %s:pass\n"%(arg["uname"],arg["pwd"])
log.log_write(msg)
result = True
return result

#定义注销接口功能:
def logout(d,ele_dict):
ele = d.find_element_by_link_text(ele_dict["usermenu"])
ActionChains(d).move_to_element(ele).perform()
time.sleep(1)
#找到退出按钮处理:
d.find_element_by_link_text(ele_dict["logout"]).click()
time.sleep(1)
#找到弹框确定处理:
d.find_element_by_css_selector(ele_dict["determine"]).click()

#定义登录测试入口功能:
def login_test(ele_dict,user_list):
d = openBrower()
#定义初始化Loginfo功能:
log = Loginfo()
openUrl(d,ele_dict["url"]) #打开URL功能传入句柄和URL
ele_tuple = findElement(d,ele_dict) #运行的结果是元组
for arg in user_list:
sendVals(ele_tuple,arg)
result = checkResult(d,ele_dict["errorid"],arg,log)
if result:
#注销:
logout(d,ele_dict)
time.sleep(1)
#重新登录:
ele_tuple = findElement(d,ele_dict)
log.log_close() #关闭日志文件

#定义主函数:
if __name__ == '__main__':
# for i in range(1):
# url = "https://www.baidu.com/"
# login_text = "登录"
# account = "15638199275"
# pwd = "12345678dd"
# ele_dict = {"url":url,"text_id": login_text, "userid": "TANGRAM__PSP_10__userName", "pwdid": "TANGRAM__PSP_10__password",
# "loginid": "TANGRAM__PSP_10__submit","uname": account, "pwd": pwd,"errorid":"用户名或密码错误!"}
ele_dict = get_webinfo(r"C:\我的代码\selenium自动化测试\百度云登录\webinfo")
user_list = get_userinfo(r"C:\我的代码\selenium自动化测试\百度云登录\userinfo")
# user_list = [{"uname":account,"pwd":pwd}]
#设置文件信息包含webinfo和usrinfo、设计接口包括get_webinfo(路径名)和get_userinfo(配置文件路径名)
#ele_dict = get_webinfo(path)、user_list = get_userinfo(path)
login_test(ele_dict,user_list)

标签:__,登录,账户,get,ele,测试用例,dict,arg,div
来源: https://www.cnblogs.com/zhang-da/p/12114376.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有