Python+Selenium做自动化测试_python自动化测试目录

Windows10 +Python3.6+selenium3.13+Pycharm

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

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

脚本设计模式

代码实现
项目目录结构

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

 
  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


![img](https://img-blog.csdnimg.cn/img_convert/d01c8ff68a546f9681cafcb819b95da3.png)
![img](https://img-blog.csdnimg.cn/img_convert/4113696436520d1517fef9356440a116.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

g-P8xLXcbH-1719234406045)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值