1.下载appium自动化安装环境:

appium客户端
python语言支持
android studio(包含android sdk和adb)
java开发环境

2.微信x5内核调试(网上有详细配置)

打开微信,在聊天中输入debugx5.qq.com,点击进入x5调试页面,
点击信息,打开‘是否打开TBS内核Inspector调试功能’即可

3.id变化

微信中控件有的是持续变化的,在不同的手机上id可能不相同,
所以最好不使用id的形式抓去控件。(app原生界面可以采用android
studio自带的UiAutomator查看)

4.切换webview和native界面

微信中你要随时切换webview的context,在webview界面进行操作,需要切换到
微信‘WEBVIEW_com.tencent.mm:tools’,使用完成后,在切换回‘NATIVE_APP’,还要在程序中加入下列代码

desired_caps['chromeOptions'] = {'androidProcess': 'com.tencent.mm:tools'}  # 驱动H5自动化关键之一

5.获取webview控件

在微信中通常会切换到其webview界面,开启第二步后,可以通过
chrome://inspect/#devices获取webview的控件。

6.在切换context过程中会牵扯到appium中chromedriver,这是appium中最麻烦的地方,

经常会在这里出错。
(1)切换进微信webview页面,操作完成后,进入第二个webview页面,但是不能操作第二个页面,
这是因为第一个chromedriver没有正常关闭,有两种该进方法:

1.在appium安装目录中搜索android.hybrid.js,打开后修改其代码为这样

 
1.png

该段代码的作用原本是如果存在旧的chromedriver就会使用旧的,不会新建一个chromedriver。
修改后,代码就变成每次都会重新生成一个新的chromedriver进程。
2.在上述1步骤操作完成后,还是不成功,需要在切换到weview界面操作完成返回native界面时,手动杀掉chromedriver进程

os.system('taskkill /im chromedriver.exe')

7.android 高版本appiu支持

高版本自动化需要appium 1.6.3及以上版本的支持,appium高版本并不是那么好下载,在网上试了很多种那个方法都不行,最后这种成功了,分享下我的经验:

npm config set registry http://registry.npm.taobao.org
npm install -g appium

下载完成后需要修改程序:

desired_caps['platformVersion'] = '7.0'
# desired_caps['automationName'] = 'UIAutomator2' 网上说需要切换,但是我下载的是1.7.2版本,使用了反而用不了了。

运行后出现\appium\node_modules\appium-uiautomator2-driver 的文件夹uiautomator2下面没有 2个必要的安卓apk文件:
在appium的安装目录下去安装这两个东西,命令如下:

npm install appium-uiautomator2-driver

运行成功,需要注意的是5037端口不能被占用。

8.appium运行超时时间设置

appium的运行超时时间是60s,60s无命令进入就会关闭程序,如果需要的等待时间超过60s,就要对appium进行设置,代码如下:

 #设置超时时间
desired_caps['newCommandTimeout'] = '61'

.有些app进行自动化的时候无法获取webview的控件元素,使用chrome://inspect/#devices命令读取不到其webview界面,打印contexts也只有一个NATIVE_APP,解决方法如下:
下载TBS studio,运行程序,手机切换到要读取的app界面,点击调试,启动tbs调试,就完成了

9.获取手机输入法

adb shell ime list -s

9.webview问题求助

在抓取webview的过程中,跳转到一些webview深层次界面后,chrome显示的界面是黑色,没有控件显示,只显示框的大小,这个问题无法解决,求助

作者:纳兰寒明
链接:https://www.jianshu.com/p/95bf34d9c9b4
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最新文章

  1. Linux CentOS 配置JDK环境
  2. Bootstrap 3 Datepicker 使用过程
  3. TableView分割线从顶端开始
  4. Expected one result (or null) to be returned by selectOne(), but found 2
  5. tableView滚到最后一行
  6. Socket通信(转)
  7. JAVA中各种去除空格
  8. IIS部署新网站
  9. 前端笔记之Vue(一)初识SPA和Vue&webpack配置和vue安装&指令
  10. JqGrid分页按钮图标不显示的bug
  11. 个人技术博客——linux服务器配置以及flask框架
  12. 建立一个基本的UI
  13. 编辑文章 - 博客频道 - CSDN.NET
  14. 20165230 《Java程序设计》实验二(Java面向对象程序设计)实验报告
  15. WCF WS-Security and WSE Nonce Authentication【转】
  16. 【monkeyrunner】monkeyrunner脚本录制和回放
  17. js中function的与众不同
  18. HDU 5690——All X——————【快速幂 | 循环节】
  19. ObjectMapper的使用
  20. Python学习(二)——深度学习入门介绍

热门文章

  1. css 知识点,你有可能不知道欧!
  2. 201871010123-吴丽丽《面向对象程序设计(Java)》第一周学习总结
  3. deepin系统右键刷新-解决增删改文件没有变化
  4. 201871010113-刘兴瑞《面向对象程序设计(java)》第十三周学习总结
  5. Scrum会议(第十一周)
  6. golang数据结构之冒泡排序
  7. IT兄弟连 HTML5教程 HTML5和JavaScript的关系
  8. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战
  9. MySQL数据库的事务及存储引擎
  10. css精灵图&字体图标