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


    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

    日志内容先后为:

    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等

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

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

     

  • 相关阅读:
    windows2019下安装mysql 8.0.29及解决服务无法启动
    如何一键重装Win7系统 Win7系统重装的方法教程
    416. 分割等和子集【01背包、动态规划dp】
    企业级自定义表单引擎解决方案(十一)--表单规则引擎1
    linux-Too many open files排查及修复
    linux 磁盘命令之du和df命令
    C++ Qt开发:使用关联容器类
    Unity之Android项目的打包
    apollo源码解读:/cyber/scheduler 模块
    资源 地理 历史
  • 原文地址:https://blog.csdn.net/hlsxjh/article/details/134509113