因工作要求需对公司web网站进行自动化UI测试,苦寻多日终获得一个不错的Python+selenium基础测试框架,框架经过调试完美运行,特此记录并分享踩坑过程,愿能帮助更多想站在巨人的肩膀上工作的小将。
获取框架:https://github.com/yingoja/DemoUI
该框架技术:python3 + selenium3 + PO + yaml + ddt + unittest
框架工作流程图:
框架优点:
1.采用Page Object模式将页面定位和业务操作分开,分离测试对象和测试脚本,一个测试功能需创建一个对象类,用例灵活维护;
2.采用yaml管理web页面控件元素数据和测试用例数据,当元素ID等发生变化时,不需要去修改测试代码,只需修改对应的yaml文件即可;
框架目录结构介绍:
这里重点讲需要我们改动的部分目录,项目下载后别急着启动,该框架引用了分布式想要完美启动要先搭建selenium-Grid服务
看不懂我写的可以参考这个博客:
1. 进入项目drive目录拷贝selenium-server-standalone-2.53.0.jar至电脑任意盘根目录(这里我放在了电脑E盘)
2. 同样在drive目录拷贝chromedriver.exe至电脑E盘node文件夹(需要新建node文件夹)
3.在该目录创建hub.bat(服务中心),node.bat(节点机)
hub.bat文件内容如下:
Java -jar selenium-server-standalone-2.53.0.jar -role hub -port 4444
双击启动hub.bat文件获取ip
node.bat文件内容如下:
java -jar selenium-server-standalone-2.53.0.jar -role node -hub "http://192.168.8.108:4444/grid/register/" -Dwebdriver.ie.driver="E:\node\IEDriverServer.exe" -Dwebdriver.chrome.driver="E:\node\chromedriver.exe" -browser "browserName=internet explorer,maxInstances=5,version=8,platform=WINDOWS" -browser "browserName=chrome,maxInstances=20,version=76,platform=WINDOWS"
注意:
第一行的java -jar selenium-server-standalone-2.53.0.jar -role node -hub "http://192.168.8.108:4444/grid/register/"需要根据hub.bat文件获取的IP进行修改
第二行的Dwebdriver.ie.driver="E:\node\IEDriverServer.exe"需要根据自己实际的存放路径进行修改
双击启动node.bat文件
hub.bat和node.bat文件要一直保持启动状态,关闭后web自动化测试项目无法运行,显示驱动异常
紧接着将项目public-driver第14行host值修改为192.168.8.108:4444
接下来项目可以正常运行,但是框架自动打开的web网站网页的元素进行了改动,我们需要重新将testyaml项目下的login.yaml进行修改
testinfo:
- id: test_login001
title: 登录测试
info: 打开抽屉首页
testcase:
- element_info: login_btn
find_type: ID
operate_type: click
info: 打开登录对话框
- element_info: phone
find_type: NAME
operate_type: send_keys
info: 输入手机号
- element_info: password
find_type: NAME
operate_type: send_keys
info: 输入密码
# - element_info: //input[@class='keeplogin']
# find_type: XPATH
# operate_type: click
# info: 单击取消自动登录单选框
- element_info: //button[text()='登录']
find_type: XPATH
operate_type: click
info: 单击登录按钮
- element_info: //div[1]/div/header/div/span
find_type: XPATH
operate_type: perform
info: 鼠标悬停账户菜单
- element_info: //div[1]/div/header/div/span/span/a[6]
find_type: XPATH
operate_type: click
info: 选择退出
check:
- element_info: //div[4]/div/div[4]/div[3]/div[1]
find_type: XPATH
info: 检查输入手机号或密码,登录异常提示div
- element_info: //div[1]/div/header/div/span/span/a[1]
find_type: XPATH
info: 登录成功
- element_info: //*[@id="login_btn"]
find_type: XPATH
info: 检查退出登录是否成功
这是我修改好的可复制粘贴,具体怎么修改的,说来话长,大家可以再评论区下方留言将会得到解答。
testdata目录下的login_data也要进行修改
-
id: test_login001.1
detail : 手机号和密码为空登录
screenshot : phone_pawd_empty
data:
phone: ""
password: ""
check :
- 手机号不能为空
-
id: test_login001.2
detail : 手机号为空登录
screenshot : phone_empty
data :
phone: ""
password : aa
check :
- 手机号不能为空
-
id: test_login001.3
detail : 密码为空登录
screenshot : pawd_empty
data :
phone : 13511112222
password: ""
check :
- 密码不能为空
-
id: test_login001.4
detail : 非法手机号登录
screenshot : phone_error
data :
phone : abc
password: aa
check :
- 手机号不能为空
-
id: test_login001.5
detail : 手机号或密码不匹配
screenshot : pawd_error
data :
phone : 13511112222
password: aa
check :
- 密码6~16位数字、大小写字母或常用符号
-
id: test_login001.6
detail : 手机号和密码正确
screenshot : phone_pawd_success
data :
phone : '这里改成正确的手机号码(可以自己去注册一个)'
password: '正确的密码'
check :
- (这里要填写你登录成功后的昵称)
这是我修改好的可复制粘贴,具体怎么修改的,说来话长,大家可以再评论区下方留言将会得到解答