python+selenium自动化测试实战项目(文档)

您所在的位置:网站首页 pom模式selenium项目实战 python+selenium自动化测试实战项目(文档)

python+selenium自动化测试实战项目(文档)

2024-07-15 04:15| 来源: 网络整理| 查看: 265

说明:本项目采用流程控制思想,未引用unittest&pytest等单元测试框架

一、项目介绍 目的

测试某官方网站登录功能模块可以正常使用

用例

1.输入格式正确的用户名和正确的密码,验证是否登录成功; 2.输入格式正确的用户名和不正确的密码,验证是否登录失败,并且提示信息正确; 3.输入格式正确的用户名和任意密码,验证是否登录失败,并且提示信息正确; 4.用户名和密码两者都为空,验证是否登录失败,并且提示信息正确; 5.用户名和密码两者之一为空,验证是否登录失败,并且提示信息正确;

环境

Windows10 +Python3.6+selenium3.13+Pycharm

环境我想大多数人都会搭建,有事没事找百度,一搜一箩筐,哈哈!我自己刚学的时候也是各种问题各种百度,好在都解决了,感谢有度娘这么强大的存在!这里就不写环境怎么搭建了,直接进入主题

同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

字节大佬教你逼自己如何在15天内掌握自动化测试(接口自动化/APP自动化/Web自动化/性能测试),内含项目实战

二、脚本设计 目的

我们的测试脚本需要达到:脚本可移植,脚本模块化,测试数据分离,输出测试报告 等目的

脚本设计模式    代码实现

项目目录结构

 注:下面的文件存放在同一个目录下

1 #! user/bin/python   2 '''   3 代码说明:麦子学院登录模块自动化测试用例脚本   4 编写日期:   5 设置者:linux超   6 '''   7    8 import time   9 from selenium import webdriver  10 from webinfo import webinfo  11 from userinfo import userinfo  12 from log_fiile import login_log  13 from pathlib import Path  14   15 def open_web():  16     driver = webdriver.Firefox()  17     driver.maximize_window()  18     return driver  19   20 def load_url(driver,ele_dict):  21     driver.get(ele_dict['Turl'])  22     time.sleep(5)  23   24 def find_element(driver,ele_dict):  25     # find element  26     driver.find_element_by_class_name(ele_dict['image_id']).click()  27     if 'text_id' in ele_dict:  28         driver.find_element_by_link_text('登录').click()  29   30     user_id = driver.find_element_by_id(ele_dict['userid'])  31     pwd_id = driver.find_element_by_id(ele_dict['pwdid'])  32     login_id = driver.find_element_by_id(ele_dict['loginid'])  33     return user_id,pwd_id,login_id  34   35 def send_val(ele_tuple,arg):  36     # input userinfo  37     listkey = ['uname','pwd']  38     i = 0  39     for key in listkey:  40         ele_tuple[i].send_keys('')  41         ele_tuple[i].clear()  42         ele_tuple[i].send_keys(arg[key])  43         i+=1  44     ele_tuple[2].click()  45 def check_login(driver,ele_dict,log,userlist):  46     result = False  47     time.sleep(3)  48     try:  49         err = driver.find_element_by_id(ele_dict['error'])  50         driver.save_screenshot(err.text+'.png')  51         log.log_write('账号:%s 密码:%s 提示信息:%s:failed\n' %(userlist['uname'],userlist['pwd'],err.text))  52         print('username or password error')  53     except:  54         print('login success!')  55         log.log_write('账号:%s 密码:%s :passed\n'%(userlist['uname'],userlist['pwd']))  56         #login_out(driver,ele_dict)  57         return True  58     return result  59 def login_out(driver,ele_dict):  60     driver.find_element_by_class_name(ele_dict['logout']).click()  61 '''  62 def screen_shot(err):  63     i = 0  64     save_path = r'D:\pythondcode\capture'  65     capturename = '\\'+str(i)+'.png'  66     wholepath = save_path+capturename  67     if Path(save_path).is_dir():  68         pass  69     else:  70         Path(save_path).mkdir()  71     while Path(save_path).exists():  72         i+=1  73         capturename = '\\'+str(i)+'.png'  74         wholepath = save_path + capturename  75     err.screenshot(wholepath)  76 '''  77 def login_test():  78     log = login_log()  79     #ele_dict = {'url': 'http://www.maiziedu.com/', 'text_id': '登录', 'user_id': 'id_account_l', 'pwd_id': 'id_password_l'  80         #, 'login_id': 'login_btn','image_id':'close-windows-btn7','error_id':'login-form-tips'}  81     ele_dict = webinfo(r'D:\pythoncode\webinfo.txt')  82     #user_list=[{'uname':account,'pwd':pwd}]  83     user_list = userinfo(r'D:\pythoncode\userinfo.txt')  84     driver = open_web()  85     # load url  86     load_url(driver,ele_dict)  87     #find element  88     ele_tuple = find_element(driver,ele_dict)  89     # send values  90     ftitle = time.strftime('%Y-%m-%d', time.gmtime())  91     log.log_write('\t\t\t%s登录系统测试报告\n' % (ftitle))  92     for userlist in user_list:  93         send_val(ele_tuple,userlist)  94         # check login success or failed  95         result = check_login(driver,ele_dict,log,userlist)  96         if result:  97             login_out(driver,ele_dict)  98             time.sleep(3)  99             ele_tuple = find_element(driver,ele_dict) 100     time.sleep(3) 101     log.log_close() 102     driver.quit() 103  104 if __name__ == '__main__': 105     login_test()  1 #! user/bin/python  2 '''  3 代码说明:从文本文档中读取用户信息  4 编写日期:  5 设置者:linux超  6 '''  7   8 import codecs  9  10 def userinfo(path): 11     file = codecs.open(path,'r','utf-8') 12     user_list = [] 13     for line in file: 14         user_dict = {} 15         result = [ele.strip() for ele in line.split(';')] 16         for sult in result: 17             re_sult = [ele.strip() for ele in sult.split('=')] 18             user_dict.update(dict([re_sult])) 19         user_list.append(user_dict) 20     return user_list 21  22 if __name__ == '__main__': 23     user_list = userinfo(r'D:\pythoncode\userinfo.txt') 24     print(user_list)  1 #! user/bin/python  2 '''  3 代码说明:从文本文档中读取web元素  4 编写日期:  5 设置者:linux超  6 '''  7   8 import codecs  9  10 def webinfo(path): 11     file = codecs.open(path,'r','gbk') 12     ele_dict = {} 13     for line in file: 14         result = [ele.strip() for ele in line.split('=')] 15         ele_dict.update(dict([result])) 16     return ele_dict 17  18 if __name__ == '__main__': 19     ele_dict = webinfo(r'D:\pythoncode\webinfo.txt') 20     for key in ele_dict: 21         print(key,ele_dict[key]) 1 #! user/bin/python  2 '''  3 代码说明:测试输出报告  4 编写日期:  5 设置者:linux超  6 '''  7   8 import time  9  10 class login_log(object): 11     def __init__(self,path='',mode='w'): 12         filename = path + time.strftime('%Y-%m-%d',time.gmtime()) 13         self.log = open(path+filename+'.txt',mode) 14     def log_write(self,msg): 15         self.log.write(msg) 16     def log_close(self): 17         self.log.close() 18 if __name__ == '__main__': 19     log=login_log() 20     ftitle = time.strftime('%Y-%m-%d',time.gmtime()) 21     log.log_write('xiaochao11520') 22     log.log_close() 1 [email protected];pwd=xiaochao11520 2 uname=273839363;pwd=xiaochao11520 3 uname= ;pwd=xiaochao11520 4 [email protected];pwd= 5 uname=2738;pwd=xiaochao 1 Turl=http://www.maiziedu.com/ 2 text_id=登录 3 userid=id_account_l 4 pwdid=id_password_l 5 loginid=login_btn 6 error=login-form-tips 7 logout=sign_out 8 image_id=close-windows-btn7

实在是不擅长写文章,写完感觉内容好少,其实这么一个小模块涉及到的知识还是挺多的,但是不知道该如何下手整理,想看的就对付看下把,实在抱歉!

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

☑ 240集-零基础到精通全套视频课程 ☑ [课件+源码]-完整配套的教程 ☑ 18套-测试实战项目源码 ☑ 37套-测试工具软件包 ☑ 268道-真实面试题 ☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3