测开第 11 期_Appium 进阶_20200308

准备

第11期——Appium错误排查与⽇志分析

第11期——Appium原理与JsonWP协议分析



session() {
    curl http://127.0.0.1:4723/wd/hub/session -H "Content-Type: application/json;charset=UTF-8" -d '
{"capabilities":{"firstMatch":[{"platformName":"android","appium:deviceName":"hogwarts","appium:appPackage":"com.xueqiu.android","appium:appActivity":".view.WelcomeActivityAlias","appium:noReset":true,"appium:chromedriverExecutable":"/Users/seveniruby/projects/chromedriver/all/chromedriver_2.20"}]},"desiredCapabilities":{"platformName":"android","deviceName":"hogwarts","appPackage":"com.xueqiu.android","appActivity":".view.WelcomeActivityAlias","noReset":true,"chromedriverExecutable":"/Users/seveniruby/projects/chromedriver/all/chromedriver_2.20"}}'
    session_id=$(curl http://127.0.0.1:4723/wd/hub/sessions | sed -E 's#.*{"id":"([^,]*)".*#\\1#')
}

find() {
    element_id=$(curl -X POST \\
    http://127.0.0.1:4723/wd/hub/session/$session_id/elements \\
    --data-binary '{"using":"xpath","value":"//*[contains(@text, \\"行情\\")]"}' \\
    -H "Content-Type: application/json;charset=UTF-8" | jq -r '.value[].ELEMENT')
}

click() {
    curl -X POST http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/click
}

attribute() {
    curl http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/attribute/text
}

第11期——appium源代码分析

git clone https://github.com/appium/appium.git
cd appium
cnpm install
npm run build
node .

192:appium seveniruby$ build/lib/main.js
[Appium] [霍格沃兹测试学院] Welcome to Appium v1.17.0-rc.1 (REV 36811861ad0065ec3feb81322757bf7b98ab22b3)
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

第11期——appium⼆次封装实战

利用装饰器改进设计

装饰器概念: Primer on Python Decorators – Real Python

第11期——微信⼩程序测试

  • 微信开发的一个比较挫的框架 小程序自动化 | 微信开放文档
    缺点
  • nodejs开发的
  • 没有遵从webdriver协议
  • 大量的waitFor,不支持隐式等待,显式等待
  • 需要小程序源代码

小程序demo项目:https://github.com/wechat-miniprogram/miniprogram-demo

改进意见

  • 做成一个appium的扩展,支持多语言
  • 数据驱动

第二种是采用webview测试方法: 2019年被微信封禁。你可以使用微信的老版本。6.x之前的版本是可以完成自动化测试的。

  • 找微信的老版本
  • 使用root强行开启webview调试 + appium capability

缺点:需要root或者受限于特定设备

第三种方案

  • native定位结合PO的方式,这样维护成本会小一点
  • 启动微信(要有测试账号,聊天记录可能会被清空)
  • 滑动进入 或者 把小程序发到文件传输助手的聊天里,普通的点击就可以
  • 使用intent进入 intentAction相关的capability

缺点:元素的定位符不够齐全