业界动态
你一定想不到,实现一个Python+Selenium的自动化测试框架就这么简单(2)手机号定位「你一定想不到,实现一个Python+Selenium的自动化测试框架就这么简单(2)」
2025-01-29 16:55
  1. 使用Page Object模式将页面定位和业务操作分开,分离测试对象(元素对象)和测试脚本(用例脚本,一个页面建一个对象类,提高用例的可维护性
  2. 使用yaml管理页面控件元素数据和测试用例数据。例如元素ID等发生变化时,不需要去修改测试代码,只需要在对应的页面元素yaml文件中修改即可
  3. 分模块管理,互不影响,随时组装,即拿即用。

测试框架分层设计

img

把常见的操作和查找封装成基础类,不管是什么产品,可直接拿来复用

  • 业务层主要是封装对象页面类,一个页面建一个类,业务层页面继承基础层
  • 用例层针对产品页面功能进行构造模拟执行测试
  • 框架层提供基础组件,支撑整个流程执行及功能扩展,给用例层提供各页面的元素数据、用例测试数据,测试报告输出等

测试框架目录结构

img

如下思维导图目录结构介绍

img

编写用例方法

如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以关注我们爱码小士,公众号内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

testinfo:

  • id: test_login001
    title: 登录测试
    info: 打开抽屉首页
    testcase:
  • element_info: login-link-a
    find_type: ID
    operate_type: click
    info: 打开登录对话框
  • element_info: mobile
    find_type: ID
    operate_type: send_keys
    info: 输入手机号
  • element_info: mbpwd
    find_type: ID
    operate_type: send_keys
    info: 输入密码
  • element_info: //input[@class=‘keeplogin’]
    find_type: XPATH
    operate_type: click
    info: 单击取消自动登录单选框
  • element_info: //span[text()=‘登录’]
    find_type: XPATH
    operate_type: click
    info: 单击登录按钮
  • element_info: userProNick
    find_type: ID
    operate_type: perform
    info: 鼠标悬停账户菜单
  • element_info: //a[@class=‘logout’]
    find_type: XPATH
    operate_type: click
    info: 选择退出
    check:
  • element_info: //div[@class=‘box-mobilelogin’]
    /div[1]/span
    find_type: XPATH
    info: 检查输入手机号或密码,登录异常提示
  • element_info: userProNick
    find_type: ID
    info: 成功登录
  • element_info: reg-link-a
    find_type: ID
    info: 检查退出登录是否成功
    login.yaml

例如,我们要新增登录功能测试用例

首先,只需在testyaml目录下新增一个页面对象yaml文件,参考login.yaml格式编写即可。这些文件是提供给封装页面对象类调用并执行定位识别操作。

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 :

  • 账号密码错误

id: test_login001.6
detail : 手机号和密码正确
screenshot : phone_pawd_success
data:
phone : 13865439800
password: ********
check :

  • yingoja
    login_data.yaml

login_data.yaml

其次,在testdata目录下新增一个login_data.yaml文件提供给登录接口传参的测试数据,编写格式参考login_data.yaml文件。

#!/usr/bin/env python

author = ‘YinJia’
import os,sys
sys.path.append(os.path.dirname(os.path.dirname
(os.path.dirname(file))))
from config import setting
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains
import ActionChains
from selenium.webdriver.common.by import By
from public.page_obj.base import Page
from time import sleep
from public.models.GetYaml import getyaml
testData = getyaml(setting.TEST_Element_YAML

  • ‘/’ + ‘login.yaml’)
    class login(Page):
    “”"
    用户登录页面
    “”"
    url = ‘/’
    dig_login_button_loc = (By.ID, testData.
    get_elementinfo(0)) def dig_login(self):
    “”"
    首页登录
    :return:
    “”"
    self.find_element(*self.dig_login_button_loc)
    .click() sleep(1)

login_phone_loc = (By.ID,testData.
get_elementinfo(1)) # 密码输入框
login_password_loc = (By.ID,testData.
get_elementinfo(2)) # 取消自动登录
keeplogin_button_loc = (By.XPATH,testData.
get_elementinfo(3)) # 单击登录
login_user_loc = (By.XPATH,testData.
get_elementinfo(4)) # 退出登录
login_exit_loc = (By.ID, testData.
get_elementinfo(5)) # 选择退出
login_exit_button_loc = (By.XPATH,testData.
get_elementinfo(6))def login_phone(self,phone):
“”"
登录手机号
:param username:
:return:
“”"
self.find_element(*self.login_phone_loc).
send_keys(phone)def login_password(self,password):
“”"
登录密码
:param password:
:return:
“”"
self.find_element(*self.login_password_loc).
send_keys(password) def keeplogin(self):
“”"
取消单选自动登录
:return:
“”"
self.find_element(*self.keeplogin_button_loc).
click()def login_button(self):
“”"
登录按钮
:return:
“”"
self.find_element(*self.login_user_loc).click()
def login_exit(self):
“”"
退出系统
:return:
“”"
above = self.find_element(*self.login_exit_loc)
ActionChains(self.driver).move_to_element(above).
perform() sleep(2)
self.find_element(*self.login_exit_button_loc)
.click()def user_login(self,phone,password):
“”"
登录入口
:param username: 用户名
:param password: 密码
:return:
“”"
self.open()
self.dig_login()
self.login_phone(phone)
self.login_password(password)
sleep(1)
self.keeplogin()
sleep(1)
self.login_button()
sleep(1)
phone_pawd_error_hint_loc = (By.XPATH,testData.
get_CheckElementinfo(0))

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试
img

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

!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试
[外链图片转存中…(img-GWhwoqda-1712743346377)]

    以上就是本篇文章【你一定想不到,实现一个Python+Selenium的自动化测试框架就这么简单(2)手机号定位「你一定想不到,实现一个Python+Selenium的自动化测试框架就这么简单(2)」】的全部内容了,欢迎阅览 ! 文章地址:http://fabua.ksxb.net/news/8099.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 海之东岸资讯移动站 http://fabua.ksxb.net/mobile/ , 查看更多   
最新文章
小心!你的手机出现这种现象,可能是"爆炸"的前兆手机充电爆炸「小心!你的手机出现这种现象,可能是"爆炸"的前兆」
如今手机占据了我们生活中大部分时间不管是在吃饭,上厕所甚至是睡觉前都喜欢刷手机可是手机工作从早到晚一刻也不闲着一旦出了意
第一部Android手机 全球第一部安卓手机android手机「第一部Android手机 全球第一部安卓手机」
2007年1月,乔布斯发布了第一代iPhone,从此人类开始进入移动互联网时代。所谓时势造英雄,新的时代会造就新的行业霸主。在移动
旧时代的怪异智能旗舰——西门子SX1手机西门子手机「旧时代的怪异智能旗舰——西门子SX1手机」
五一假期已经开始,所以今天我们废话不多说,直接就来看下一台发布于2004年的Symbian Series 60平台的机器——西门子SX1大家第一
岭秀城社区开展“新时代家庭家教家风”理论宣讲活动
  为积极培育和践行社会主义核心价值观,引导居民树立正确的家庭观念,近日,经开区沈家屯镇岭秀城社区新时代文明实践站特邀请
十大最佳手机游戏盘点2023 好玩的热门人气手游top10好玩的手机游戏「十大最佳手机游戏盘点2023 好玩的热门人气手游top10」
如今游戏种类数量千千万,很多小伙伴好奇今年有哪些比较优秀的游戏,小编给大家带来了十大最佳手机游戏盘点。这些游戏都是比较下
微软WP生存困境:手机厂商公开放弃 品牌或将消失微软手机「微软WP生存困境:手机厂商公开放弃 品牌或将消失」
WP与安卓、iOS市场份额的差距在进一步拉大微软倾力打造的移动设备操作系统Windows Phone(以下简称为WP)正陷入尴尬境地,尤其是
中纪委如何刀刃向内“清理门户”?党员干部防围猎从清理手机通讯录开始如何清理手机「中纪委如何刀刃向内“清理门户”?党员干部防围猎从清理手机通讯录开始」
日前,经中共中央批准,中共中央纪委对第十八届中央候补委员,中央纪委驻财政部纪检组原组长、财政部原党组成员莫建成严重违纪问
腾讯手机管家和360手机卫士哪个好?360手机管家「腾讯手机管家和360手机卫士哪个好?」
曾经的腾讯手机管家还不错的,而现在的腾讯手机管家个人并不怎么喜欢,虽然号称免费手机安全软件,但是清理垃圾和杀毒,启动软件都全
金立手机从辉煌一步步走向衰败,它经历了一个什么样的过程?金立手机「金立手机从辉煌一步步走向衰败,它经历了一个什么样的过程?」
金立手机从辉煌一步步走向衰败,它经历了一个什么样的过程?记得一开始知道金立手机这个名字的时候,是在电视广告看到的,由刘德