当前位置: 首页 > news >正文

自动化测试测试框架封装改造

PO模式自动化测试用例

PO设计模式是自动化测试中最佳的设计模式,主要体现在对界面交互细节的封装,在实际测试中只关注业务流程就可以了。

相较于传统的设计,在新增测试用例后PO模式有如下优点:

1、易读性强

2、可扩展性好

3、可复用性强

4、可维护性好

封装的代码示例,来吧,展示:https://github.com/hanshoukai/appium_automation

测试框架封装改造

一、appium源码

appium server包括如下:

•Node.js 系列包

•adb shell

•ChromeDriver

二、Appium Android 自动化流程:

打印appium日志:appium -g <log file path>

日志内容先后为:

1、shell 命令

2、WebDriver 请求

3、ChromeDriver 日志

三、调试分析方法

Appium Log清晰记录了所有的请求和结果以及底层的一些错误堆栈

分析界面数据:

1、使用 getPageSource 获取界面的完整 DOM 结构

2、利用 XPath 获取所有匹配的元素

脚本外调试:

1、借助于 curl 命令从脚本外探测界面数据

2、用浏览器实时查看UI布局

查看所有的sessions

查看其中一个session的界面元素

 

四、Appium 原理与 JSONWP 协议分析

WebDriver 协议与手工模拟

WebDriver 协议基础知识:https://w3c.github.io/webdriver

session_id 获取:
session_id=`curl http://127.0.0.1:4723/wd/hub/sessions | awk -F\" '{print $8}' `

element id 获取:
curl -X POST http://127.0.0.1:4723/wd/hub/session/$session_id/elements --data-binary '{"using":"xpath","value":"//*[@class=\"android.widget.Toast\"]"}' -H "Content-Type: application/json;charset=UTF-8"
element_id = 301c744b-57a0-4a9e-b8c1-5460d62be5fd(这一串为上curl命令打印出来的element的id)

元素属性获取:
curl http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/attribute/text

元素动作:
curl -X POST http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/click

底层引擎如下:

•Uiautomator 安卓设备(https://github.com/appium/appium-uiautomator2-driver 及 https://github.com/appium/appium-uiautomator2-server)

•WDA 苹果设备(https://github.com/appium/WebDriverAgent)

•selenium 浏览器

appium client:Python、Java等

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

http://www.lryc.cn/news/237175.html

相关文章:

  • C#可空类型
  • R语言:利用biomod2进行生态位建模
  • 如何学习算法
  • MFC/QT 一些快要遗忘的细节:
  • 常见的面试算法题:阶乘、回文、斐波那契数列
  • 微服务 Spring Cloud 7,Nacos配置中心的Pull原理,附源码
  • c#Nettonsoft.net库常用的方法json序列化反序列化
  • 力扣刷题-二叉树-二叉树的高度与深度
  • Vue3新增加的css语法糖
  • Windows安装Vmware 虚拟机
  • uniapp地图手动控制地图scale
  • Kotlin学习之函数
  • 若依启动步骤
  • qt-C++笔记之两个窗口ui的交互
  • Redis-核心数据结构
  • 设计模式—结构型模式之外观模式(门面模式)
  • CentOS Stream 9-使用 systemd 管理自己程序时自定义日志路径
  • 动态页面调研及设计方案
  • 鸿蒙4.0开发笔记之DevEco Studio之配置代码片段快速生成(三)
  • HarmonyOS真机调试报错:INSTALL_PARSE_FAILED_USESDK_ERROR处理
  • webSocket基于面向对象二次封装
  • 【Web】PHP反序列化的一些trick
  • 【测试功能篇 01】Jmeter 压测接口最大并发量、吞吐量、TPS
  • 代码随想录算法训练营第四十九天| 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV
  • 11.20 知识总结(choices参数、MVC和MTV的模式、Django与Ajax技术)
  • 深度学习二维码识别 计算机竞赛
  • C#关于TimeSpan结构的使用和获取两个时间差
  • Git分支管理
  • 《视觉SLAM十四讲》-- 建图
  • 智能配电箱柜管理系统