准备
- 注册学员的专属论坛 https://home.testing-studio.com/
- http://appium.io/docs/en/about-appium/appium-clients/
- https://w3c.github.io/webdriver/webdriver-spec.html
- https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md
- https://dvcs.w3.org/hg/webdriver/raw-file/default/webdriver-spec.html
第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⼆次封装实战
- appium源代码构建
- uiautomator2-server源代码的构建 https://github.com/appium/appium-uiautomator2-server
- 把apk的包替换appium自带的apk的包
利用装饰器改进设计
装饰器概念: 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
缺点:元素的定位符不够齐全