使用Appium进行微信公众号自动化测试
- 查看Android的webview视图版本:手机链接电脑后在电脑Chrome打开页面
chrome://inspect/#devices查看Android的Chrome内核版本
- 下载与该版本相对应的
ChromeDriver.exe替换掉Appium目录下的ChromeDriver.exe,路径:C:\Users\miduo\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\请根据个人安装情况找到文件并替换。 - 代码调整:
实例化Remote时需要添加一个配置:'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}
desired_caps = {
'platformName': 'Android',
'fastReset': 'false',
'deviceName': "391dda45",
'appPackage': 'com.tencent.mm',
'appActivity': '.ui.LauncherUI',
'fullReset': 'false',
'unicodeKeyboard': 'True',
'resetKeyboard': 'True',
"noReset": True,
"fullReset": False,
"fastReset": False,
'chromeOptions': {
'androidProcess': 'com.tencent.mm:tools'
} # 这句很重要 'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
…… # 进入微信公众号页面的操作
# 点击链接进入微信公众号之后,需要切换上下文(webview),如果不能理解,则可以把他看成Iframe
print(driver.contexts) #打印查看当前页面有多少webview
driver.switch_to.context("WEBVIEW_com.tencent.mm:tools") # 切换
# 如果切换后存在多个handle,则需要判断当前handle对不对,不对的话需要切换到正确的句柄
while True:
if PageElement("a", "tag").entity(a.driver, True):
break
else:
a.driver.switch_to.window(a.driver.window_handles[-1])
print(driver.page_source) #打印html页面源代码
# 切换后实质上就是Selenium使用操作公众号了(本质就是一个Html),
# 当然如果需要跳回到App中操作,则driver.switch_to.context("NATIVE")切换会默认的视图进行操作。
- 微信公众号元素定位,因为使用
uiautomatorviewer.bat工具无法定位到微信公众号的页面元素,要进行微信公众号的元素定位,有几种方案:
- 手机链接电脑后在电脑Chrome打开页面
chrome://inspect/#devices并选择公众号的webview点击下方inspect链接,但第一次使用会链接到谷歌,所以需要翻墙才能正常使用 - 找开发拿页面源文件进行定位。
- 如果开发无法提供源文件,则使用
driver.page_source将源代码在本地生成html文件本地打开。
作者:bilibala_
链接:https://www.jianshu.com/p/04116183a76c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
使用Appium进行微信公众号自动化测试的更多相关文章
- appium+java(四)微信公众号自动化测试实践
前言 随着手机阅读的普遍应用,微信公众号阅读,更为普遍,微信和qq一样,都是基于腾讯自研X5内核,不是google原生webview(其实就是进行了二次定制).实质上也是混合应用的一种,现在很多app ...
- 基于APPIUM测试微信公众号的UI自动化测试框架(结合Allure2测试报告框架)
框架初衷 前两周组内的小伙伴跟我说她现在测试的微信公众号项目(保险)每次上新产品时测试起来很费时,存在大量的重复操作(点点点),手工测试每个产品可能需要半天到一天的时间,复杂的产品需要两天. 由于保险 ...
- appium操作微信公众号H5 web页面
安卓微信公众号的H5页面是webview,一般操作需要切换context. 在执行如下步骤,就能直接像识别native样识别webview 1.代码追加: ChromeOptions options ...
- Appium 解决微信公众号、小程序切换 webview 后无法定位元素的问题
如何切换webview进入小程序请参考https://testerhome.com/topics/12003 脚本思路:进入webview后会存在多个handle同Web页签一样,获取所有的handl ...
- 使用Appium 测试微信小程序和微信公众号方法
由于腾讯系QQ.微信等都是基于腾讯自研X5内核,不是google原生webview,需要打开TBS内核Inspector调试功能才能用Chrome浏览器查看页面元素,并实现Appium自动化测试微信小 ...
- py+appium微信公众号自动化(已搞定多个坑)
最近需要做微信公众号的自动化测试,遇到了不少坑. 微信公众号自动化与app自动化还是有区别的,因为多了不少坑.打开微信x5内核调试的就不说了,百度有. 1.首先,微信公众号有webview,uiaut ...
- appium+python自动化-微信公众号webview操作
前言 上一篇已经解决切换到微信公众号的webview上了,但是定位webview上元素的时候一直提示找不到,打印page_source也找不到页面上的元素,这个问题困扰了一整天,还好最后找到了原因, ...
- 微信公众号开发之VS远程调试
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...
- 快递Api接口 & 微信公众号开发流程
之前的文章,已经分析过快递Api接口可能被使用的需求及场景:今天呢,简单给大家介绍一下微信公众号中怎么来使用快递Api接口,来完成我们的需求和业务场景. 开发语言:Nodejs,其中用到了Neo4j图 ...
随机推荐
- react组件通信方式汇总
父组件更新组件状态,通过props传递给子组件,子组件得到后进行更新.Timer 是倒计时子组件,集成在了OrderPay父组件里,父组件向子组件传订单数据参数order对象.如下代码: <Ti ...
- python 各层级目录下的import方法
---恢复内容开始--- 以前经常使用python2.现在很多东西都切换到了python3,发现很多东西还是存在一些差异化的.跨目录import是常用的一种方法,并且有不同的表现形式,新手很容易搞混. ...
- 图解Java常用数据结构
最近在整理数据结构方面的知识, 系统化看了下 Java 中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于 jdk8, 可能会有些特性与 jdk7 之前不相同, 例如 LinkedList ...
- 划词标注1——使用svg绘制换行文本并自动识别库中字典数据
业务需求 给出一段文本,自动识别出文本中包含的关键字信息,关键字是库里已知的数据,根据类型的不同显示出不同的颜色 业务分析 1)采用css:文本识别出来后,根据识别出的文本更改对应文本的dom,通过更 ...
- selenium元素定位方法之轴定位
一.轴运算名称 ancestor:祖先结点(包括父结点) parent:父结点 preceding:当前元素节点标签之前的所有结点(html页面先后顺序) preceding-sibling:当前元素 ...
- MyEclipse构建maven项目报错
直接上图: 这里有三种方案: 1.检查jdk版本:最好换成1.8版本 项目右键-->build path-->configure build Path; 1.2 点击 libraries ...
- MySQL 中的外键
表和表之间可存在引用关系,这在抽象数据到表时,是很常见的.这种联系是通过在表中创建外键(foreign key)来实现的. 比如一个订单,可能关联用户表和产品表,以此来记录谁买了什么产品. 约定两个概 ...
- MVC过滤器:自定义授权过滤器
一.授权过滤器 授权过滤器用于实现IAuthorizationFilter接口和做出关于是否执行操作方法(如执行身份验证或验证请求的属性)的安全策略.AuthorizeAttribute类继承了IAu ...
- MVC过滤器:自定义异常过滤器使用案例
在上一篇文章中讲解了自定义异常过滤器,这篇文章会结合工作中的真实案例讲解一下如何使用自定义异常过滤器. 一.需求 本案例要实现的功能需求:在发生异常时记录日志,日志内容包括发生异常的Controlle ...
- 关于.Net Core 部署在Linux下连接SqlServer数据库超时解决办法
.Net Core 在 Linux 下连接 SqlServer 需要 SqlServer2008 SP3或以上版本,或SqlServer2012,或SqlServer2014. 如果SqlServer ...
