一、启动Appium服务
有两种方法启动Appium服务
1、客户端启动
启动appium-desktop,点击Start Server按钮

如下图,appium服务已启动

2、命令行启动
命令行输入appium

二、手机设置
此处为安卓手机,用adb命令检查可以识别到当前连接手机的设备号
1)设置-系统-关于手机-连续点击版本号5-7次-开发者选项;
2)开发者选项中打开不锁定屏幕;
3)开发者选项中打开USB调试;
4)选择USB配置-MIDI;

三、运行pycharm脚本

# -*- coding:utf-8 -*-
import timefrom appium import webdriverdesired_caps = {'platformName': 'Android','platformVersion': '9','deviceName': 'FJH5T18804021654','appPackage': 'com.tencent.mm','appActivity': '.ui.LauncherUI','automationName': 'Uiautomator2','unicodeKeyboard': True,'resetKeyboard': True,'noReset': True,'newCommandTimeout': 3000,'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}
}driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.implicitly_wait(1)# 微信首页搜索图标
driver.find_element_by_id("com.tencent.mm:id/f8y").click()
time.sleep(1)# 输入公众号title
driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('XXXXX的接口测试号')
time.sleep(1)# 点开公众号XXXXX的接口测试号
driver.find_element_by_id('com.tencent.mm:id/tm').click()
# driver.find_element_by_id('com.tencent.mm:id/gbv').click()
time.sleep(1)# 点击公众号菜单-健康咨询
driver.find_element_by_xpath("//android.widget.TextView[@text='健康咨询']").click()
time.sleep(1)# 点击二级菜单
# driver.find_elements_by_xpath(
#     '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ListView[0]').click()
driver.find_element_by_xpath("//android.widget.TextView[@text='三甲专家电话问诊']").click()
time.sleep(1)# 切换到webview
webview = driver.contexts  # 获取当前微信公众号页面所有的contexts
print(webview)
for context in webview:if 'WEBVIEW' in webview:driver.switch_to.context(context)break'''
从微信APP切换至公众号界面,切换后实质上就是Selenium使用操作公众号了,
切换时webview可以看做Iframe(本质就是一个Html)
'''
# 选择医生界面选择医生
driver.find_element_by_xpath('//*[@id="app"]/div[4]/div[1]').click()
# 点击预约按钮
driver.find_element_by_xpath('//*[@id="app"]/div/div[3]/button').click()
# 填写问诊信息

运行脚本过程中可以在客户端或者命令行看到运行日志。
运行中手机会提示安装Unlock、Appium Setting,手动点击安装即可

总结一下执行脚本过程中遇到的坑
第一坑:当每次运行脚本都提示安装Unlock、Appium Setting、io.appium.uiautomator2.server时,可以操作以下设置可以解决问题

操作一:电脑文件全局搜索:appium-desktop
C:\Users\002719\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-driver\lib

用编辑器打开android-helpers.js文件分别对以下地方进行修改:
1.注释掉355行 // await adb.install(unicodeIMEPath, false);
2.注释掉522行 // await helpers.pushSettingsApp(adb);
3. 注释掉526行 // await helpers.pushUnlock(adb);


操作二
C:\Users\002719\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-driver\build\lib

用编辑器打开android-helpers.js文件分别对以下地方进行修改:
1.注释掉919行,然后加一行代码

   // return _regeneratorRuntime.awrap(adb.install(_appiumAndroidIme.path, false));return context$1$0.abrupt('return', defaultIME);

2.注释掉1366行,然后加一行代码

    // return _regeneratorRuntime.awrap(helpers.pushSettingsApp(adb));return context$1$0.abrupt('return', defaultIME);

3.注掉1380行,然后加一行代码

     // return _regeneratorRuntime.awrap(helpers.pushUnlock(adb));return context$1$0.abrupt('return', defaultIME);




完成以上两个操作,修改完后保存,然后重启appium服务,重新执行脚本,就不会重复拉取安装Unlock和Appium Setting了

第二坑:切换webview时报错信息
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: chrome not reachable
(Driver info: chromedriver=2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41),platform=Windows NT 6.1.7601 SP1 x86_64)

进入微信界面时,此次亲测用appium模拟设备界面,从微信APP切换至公众号界面,切换后实质上就是Selenium使用操作公众号了,切换时webview可以看做Iframe(本质就是一个Html)
报错原因:
微信webview与appium-chromedriver版本不一致

解决方法:
1、先查看微信webview
手机微信聊天输入:debugx5.qq.com–>http://debugtbs.qq.com–>debugmm.qq.com/?forcex5=true,依次操作,信息Tab页勾选打开TBS内核Inspector调试功能,如下图

2、连接手机,在电脑chrome浏览器输入:chrome://inspect/#devices,再打开微信的公众号页面,刷新浏览器页面,就会出现webview版本号 WebView in com.tencent.mm (66.0.3359.126),如下图所示

3、查看appium-chromedriver下的chromedriver版本,此次亲测路径:
C:\Users\002719\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win

双击chromedriver.exe,会弹出doc窗口,可见显示的驱动版本与脚本报错的版本号一致为2.30.4777000,如图

明显微信webview与appium-chromedriver版本不一致

4、找到webview的chrome版本号了,接下来下载对应的chromedriver驱动包就可以了,66以上的webview对应2.38驱动
下载地址:chromedriver版本下载

5、chromedriver下载后,首先找到appium-chromedriver下的chromedriver的存放位置,替换掉就可以了。查找路径:C:\Users\002719\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win,,替换后双击检查,如下图,可见驱动版本更新了
【注意】这个路径是web的,双击chromedriver.exe可以查看到
C:\Users\002719\AppData\Roaming\npm\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win


第三坑:微信APP切换到H5页面时元素定位可以用uiautomatorviewer.bat,路径:D:\android-sdk-windows\tools\bin(定位元素的方法推荐https://www.jianshu.com/p/efe9dcf8bbaf)

解决了这些坑后,执行脚本就可以顺利切换至公众号的H5页面了

python+Appnium微信公众号测试实战(坑已填平)相关推荐

  1. python训练营微信公众号真实性_用python进行微信公众号开发(仅测试学习)

    今天看到篇教程,是用python开发微信公众号的,觉得有意思,就敲代码实现了一下,成功后更觉得好玩,故记录,方便开发深入时使用. 基础背景介绍: 首先得有个人微信号(没有自行注册),为方便测试学习: ...

  2. python下载微信公众号文章_python如何导出微信公众号文章方法详解

    1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代码导出 ...

  3. 基于Python实现微信公众号爬虫进行数据分析

    学爬虫有什么用 网络爬虫是一个非常注重实践性而且实用性很强的编程技能,它不是程序员的专属技能,任何具有一定编程基础的人都可以学习爬虫,写爬虫分析股票走势,上链家爬房源分析房价趋势,爬知乎.爬豆瓣.爬新 ...

  4. 基于python的公众号课堂教学_基于Python的微信公众号数据挖掘分析

    基于Python的微信公众号数据挖掘分析 华南农业大学电子工程学院 王 建 黄宁香 [期刊名称]电子世界 [年(卷),期]2019(000)011 [总页数]3 运用Python网络爬虫技术对某时事类 ...

  5. WxJava微信公众号开发实战

    本文从本人博客搬运,原文格式更加美观,可以移步原文阅读:WxJava微信公众号开发实战 之前我们介绍了Java如何进行微信公众号开发,阅读本文前小伙伴们可以先去了解下Java微信公众号开发 之前我们开 ...

  6. 视频教程-基于python的微信公众号开发教程-微信开发

    基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...

  7. 基于python的微信公众号开发教程_基于python的微信公众号开发教程

    应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...

  8. 微信vue路由跳转兼容_Vue微信公众号开发踩坑记录

    需求 微信授权登录(基于公众号的登录方案) 接入JS-SDK实现图片上传,分享等功能 现状及难点 采用的Vue框架,前后端分离模式(vue工程仅作为客户端),用户通过域名访问的是客户端,但是微信授权中 ...

  9. 微信公众号测试账号总结

    微信公众号测试账号总结 微信公众号 微信公众号测试账号 申请测试账号 配置微信公众号测试账号 接口配置信息 JS接口安全域名,模板消息接口 网页授权获取用户基本信息 微信公众号 微信公众号测试账号 在 ...

最新文章

  1. 物流信息管理系统MySQL设计,物流管理系统的SQL数据库设计(含代码)
  2. 80后——后海——烟袋斜街
  3. ant-design-vue 快速入手及常用标签
  4. 不高兴的津津(信息学奥赛一本通-T1111)
  5. 敏捷宣言 敏捷原则_2018年最受欢迎的敏捷文章
  6. Linux运维常见的硬件问题
  7. 视频监控物联卡有什么作用
  8. 拼多多商品采集、商品数据解析详解
  9. Quartz cron表达式(时间表达式)
  10. 小白网安学习日记(2) hacknet游戏(模拟黑客入侵的游戏)
  11. 「魔兽世界怀旧服」衣米魔兽怀旧服玩家年度实物礼品发放
  12. 本周工作心得系列(5)
  13. 伊诺伊香槟分校计算机世界排名,伊利诺伊大学香槟分校世界排名及专业排名汇总(QS世界大学排名版)...
  14. iOS 用户信息存储的工具类
  15. win7无声音显示“未插入扬声器或耳机” 怎么解决
  16. B树与B+树简明扼要的区别
  17. TypeError: Descriptors cannot not be created directly解决
  18. 视频教程-Oracle12数据库管理/DBA/数据库工程师培训-Oracle
  19. 看完这篇,请不要再说不懂MOSFET!
  20. 【人脸识别】HOG特征提取人脸识别【含Matlab源码 641期】

热门文章

  1. [转]小程序开发之组件ad(广告)(转载请删除括号里的内容)
  2. mybatisplus多源配置报错:Failed to determine a suitable driver class
  3. Ie默认HTML主页发现异常,IE浏览器总是出错 怎么解决ie问题
  4. 文件和目录的常用命令
  5. 蓝叠验证码java异常,过apk模拟器检测,关于特定模拟器检测蓝叠模拟器
  6. 在Windows下让游戏窗口全屏
  7. 文献阅读_基于多模态数据语义融合的旅游在线评论有用性识别研究
  8. nextcloud配置mysql_nextcloud的安装配置
  9. SQLServer之创建数据库架构 1
  10. c语言顺序存储学生成绩,C语言学习--实验六 顺序存储结构.doc