前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Appium—Native+H5混合APP的自动化

Appium—Native+H5混合APP的自动化

作者头像
用户5521279
发布于 2020-02-14 06:22:27
发布于 2020-02-14 06:22:27
1.5K00
代码可运行
举报
文章被收录于专栏:搜狗测试搜狗测试
运行总次数:0
代码可运行

前言

小编所在项目的客户端是比较奇怪的一个APP,大部分页面AndroidiOS的客户端只提供了webview的功能,都是由H5处理业务逻辑和用户交互。H5承担了和服务端、和客户端的交互。

虽然在开发实现上很方便,前端开发,三端上线。但是,如果要我们测试要做基于Appium做自动化来说这就不是一件好事儿了,因为Native的客户端可以借助ADB命令和封装的Appium实现大多数点击、跳转、拍照、控制键盘、截图、输入等等操作。一旦切换到H5页面,难题就来了:

1、H5和native Android的切换?

2、H5的元素如何定位?

3、H5中怎么做点击、跳转、控制键盘、输入等?

Native Android和H5(Android Webview)的切换

遇到的第一个问题就是,如何从Native Android启动后,去点击/操作H5页面的元素。 搜索了很多之后,有用的资料不多,很多文章写的很复杂,总结一下关键点只有两个。

第一、加载chrome驱动

在github上找到手机native app中的webview版本,并下载对应的驱动。

出现了一个新的问题: 怎么找到手机上native app中的webview版本,这里用到的是Chrome的插件ADB plugin(安装方法可用搜索引擎查看)。

安装完成后在chrome的插件栏就有了Android小机器人的图表,点击小机器人选择’View Inspection Targets’即可打开插件。

PC端连接手机设备后,在页面中可以看到设备信息 。

此时还没有我们希望看到的webview的相关信息,这时候需要在手机上操作,打开“Native Android + H5”的APP,然后就可以在Chrome 插件这个页面上看到需要的信息了,这里需要记下来两个东西:

其一是chrome的版本,用来去github上找到对应的chrome“驱动”。其二是webview名,这个用来后续用Appium的switch_to切换Android Context。

第二、切换到webview context

这里主要需要理解一个Android Context的概念,详细可以看参考资料。 代码里面重要的有两句,下面以Python为例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 指定chrome驱动的位置
 desired_caps['chromedriverExecutable'] = 'C:\\Program Files (x86)\\Appium\\resources\\app\\node_modules\\appium-chromedriver\\chromedriver.exe'
 # 需要访问H5元素、内容或者操作H5页面时切换到Webview Context
 driver.switch_to.context('WEBVIEW_com.sogo.borrowing')
 # 最后一定要切换回native
 driver.switch_to.context('NATIVE_APP')

H5的元素如何定位?

Android Native的APP元素定位很简单,可以用android id,可以用text,可以用坐标等等。当然这些方法也各有优劣。一般可能大多数人都是使用android id定位,android id可以根据UiautomaotorViewer等工具获取到,但是H5又不一样了,为什么呢。稍微了解Android的同学都知道,页面元素是xml中定义的,android id就是在这里面的@+id/的一些内容,但是前端页面是不会有xml的更不会有指定的@+id/信息,所以传统的Android方法在H5页面中做自动化不适用。

这里主要尝试了两个方法,两个方法都能成功,同学们可以看情况选择,个人觉得还是find_element_by_id(python)/findElement(By.id(‘xxxxx’)) (java)更好一些,能够精准定位吧。

第一、css选择器

find_element_by_css_selector

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.find_element_by_css_selector('a.btn.btn-bg2')

css选择器就是简介,直接用chrome等进行元素定位(可以用ADB Plugin中的inspect,点击进去就跟chrome的开发者模式一样,用小箭头定位到空间就能找到前端源码)就能拿到前端页面源码中html标签和css的选择器,需要注意的就是书写方式。如果一个a标签,class是“x1 y1”,需要写成“a.x1.y1”前面是需要带上标签名的,然后选择器名中的空格要用点代替。

第二、Appium万能id

find_element_by_id

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.find_element_by_id('diaphone')

id的话就是用chrome进行元素定位,找到前端源码中对应控件的id指定就好了。 PS. 以上操作定位都需要基于switch_to到webview后

H5中怎么做点击、跳转、控制键盘、输入等

这里用控制键盘&输入举个例子。一开始使用了css选择器,在输入和键盘定位。 这里也介绍两个方法吧,一个是用Appium封装的press_keycode:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 点击删除键,keycode 4 代表KEYCODE_BACK
driver.press_keycode(4)

keycode有一定的局限性,主要是不能输入中文,且需要找到对应的key映射,不方便。 另一个是定位到input直接用sendkeys去输入,比如上文的id是diaphone的控件就是一个input控件,这时候就可以直接如下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
inputbox = driver.find_element_by_id('diaphone')
inputbox.send_keys('13000000000')

这就是遇到的Appium做Native Android + H5 混合 APP遇到的问题和解决方案。

以上~

参考资料

1、appium+python自动化57-chromedriver与chrome版本: https://www.cnblogs.com/yoyoketang/p/9156319.html

2、Appium切换webview并识别H5: https://www.jianshu.com/p/a4724482fc8f

3、Appium自动化测试 - 使用Chrome调试模式获取App混合应用的H5界面的元素定位: https://www.jianshu.com/p/1e1fefa9b17b

4、Appium Android 元素定位方法 原生+H5: https://blog.csdn.net/qq_36467991/article/details/81779551

5、Appium 按键表: https://blog.csdn.net/weixin_40180628/article/details/79169846

6、Appium 常用操作总结: https://www.jianshu.com/p/bf8c2d71c623

7、Context都没弄明白,还怎么做Android开发?: https://www.jianshu.com/p/bf8c2d71c623

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Appium+python自动化13-native和webview切换
前言 现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了。 (手机上要先装个百度阅读APP,本篇以百度阅读APP为案例讲解) 一、识别webview 1.用定位工具查看页面,发现页面上有些区域无法定位到,如下图左边红色区域,只能定位到这个大框框,红色框里面的元素是无法识别的。 2.这时候可以查看元素属性,如右图它的class属性,上面写着WebView,那毫无疑问这种页面就是webview
上海-悠悠
2018/04/08
2K0
Appium+python自动化13-native和webview切换
自动化-Appium-​第一个Demo-混合(Python版)
App是移动混合应用程序,即在移动应用程序中嵌入了Webview,通过Webview访问网页。
wangmcn
2022/07/25
2.7K0
自动化-Appium-​第一个Demo-混合(Python版)
聊聊 Python 做微信小程序自动化,那些踩过的坑?
之前写过 微信小程序的几种方式,对于有源码的小程序推荐使用微信开放的 SDK 来做自动化,否则只能使用原生或 WebView 的方式。
AirPython
2020/05/18
2.5K0
自动化-Appium-微信小程序(Python版)
微信小程序其实也是正常的webview,但需要在微信里打开X5调试页面进行设置,脚本添加androidProcess参数才可以执行自动化测试。
wangmcn
2022/07/25
5.6K0
自动化-Appium-微信小程序(Python版)
Android H5元素定位
在混合开发的App中,经常会有内嵌的H5页面。那么这些H5页面元素该如何进行定位操作呢?
清风穆云
2021/08/09
3.4K1
appium+python自动化41-微信公众号
本篇介绍如何在微信公众号上自动化测试,以操作我的个人公众号:yoyoketang为例,没关注的,先微信关注了,再跟着操作
上海-悠悠
2018/07/25
2.7K0
appium+python自动化41-微信公众号
Appium自动化(15) - 针对 webview 进行自动化测试
https://www.cnblogs.com/poloyy/category/1693896.html
小菠萝测试笔记
2020/06/09
3.3K0
Appium自动化(15) - 针对 webview 进行自动化测试
Appium自动化(四)常用的API接口
Appium系列分享 Appium自动化(一)常用的API接口 Appium自动化(二)常用的API接口 Appium自动化(三)常用的API接口 ---- 61.元素是否可操作性 driver.find_element_by_accessibility_id('leizishuoceshi').is_enabled() 62.元素是否可见 driver.find_element_by_accessibility_id('leizishuoce
雷子
2021/03/15
2850
Appium+python自动化(十一)- 元素定位秘籍助你打通任督二脉 - 下卷(超详解)
  宏哥看你骨骼惊奇,印堂发亮,必是练武之奇才! 按照上一篇的节目预告,这一篇还是继续由宏哥给小伙伴们分享元素定位,是不是按照上一篇的秘籍修炼,是不是感觉到头顶盖好像被掀开,内气从头上冒出去,顿时觉得整个身体都融化了,而且身轻如燕啊!而且控制不住手,想要动手操作一番呢?那还在等什么呢,和宏哥一起练起来吧!!!
北京-宏哥
2019/07/08
2.5K0
微信小程序自动化测试最佳实践(附 Python 源码)
随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序、微信公众号等。小程序项目页面越来越多,业务逻辑也越来越复杂,全手工测试已无法满足快速增长的业务需求。
霍格沃兹测试开发
2020/08/18
1.3K0
微信小程序自动化测试最佳实践(附 Python 源码)
自动化-Appium-​第一个Demo-Web(Python版)
本章Web所指的是移动端(模拟器/真机)里的浏览器(如:Chrome、Safari)。
wangmcn
2022/07/25
2.5K0
自动化-Appium-​第一个Demo-Web(Python版)
Android APP混合应用自动化-Appium
在做Android应用自动化时,当出现内嵌webview页面,driver无法获取到元素信息,导致无法进行下一步,通过切换窗口的方式来进行
沈宥
2022/06/21
6101
Android APP混合应用自动化-Appium
干货|app自动化测试之Andriod WebView如何测试
哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢~(^▽^)PS:有问题可以联系我们哦~v ceshiren001
霍格沃兹测试开发Muller老师
2022/05/29
9390
appium+python自动化56-微信小程序自动化
最近微信的小程序越来越多了,随之带来的问题是:小程序如何做自动化测试? 本篇以摩拜小程序为例,介绍如何定位小程序里面的元素
上海-悠悠
2018/07/25
1.7K0
appium+python自动化56-微信小程序自动化
自动化-Appium-常用API(Python版)
driver.remove_app('com.example.android.apis')
wangmcn
2022/07/25
1.5K0
Appium自动化测试框架探索与实践
在目前效率为王的互联网时代,移动应用自动化测试逐渐替代原始的手工功能测试,越来越成为测试界的时尚宠儿,小编在这里也为大家介绍下现有的客户端自动化测试框架:Appium、Airtest,并简单比较下两者的区别,同时重点介绍Appium自动化测试框架,大家跟随小编的脚步一起来探索客户端自动化测试框架吧~
用户5521279
2020/08/21
3.1K0
Appium自动化测试框架探索与实践
自动化-Appium-微信公众号(Python版)
微信公众号其实也是正常的webview,但需要在微信里打开X5调试页面进行设置,脚本添加androidProcess参数才可以执行自动化测试。
wangmcn
2022/07/25
2.8K0
自动化-Appium-微信公众号(Python版)
Appium环境部署及自动化实现
一、Appium介绍 appium主要是一个移动 App (手机应用)自动化工具框架。 特点: 1.开源 2.跨平台 3.多语言 二、Appium工作原理 三、环境部署 1.安装jdk 安装配置环境变量 2.安装appium-python-client类库 pip install appium-python-client 3.安装Appium Server 安装地址: https://github.com/appium/appium-desktop/releases/tag/v1.2
懿曲折扇情
2022/08/24
6830
Appium环境部署及自动化实现
自动化测试微信小程序
Mac 环境下搭建 appium 1 安装homebrew 首先命令行检查是否安装:
赵云龙龙
2019/09/25
2.8K0
自动化测试微信小程序
腾讯TMQ在线沙龙|老司机教你玩转Appium自动化测试
Appium自动化测试 活动时间:2016年10月13日 QQ群视频交流 活动介绍:TMQ在线沙龙第十期分享 本次分享的主题是老司机教你玩转Appium自动化测试。 共有128位测试小伙伴报名参加活动,在线观看视频人数65人~想知道活动分享了啥吗?往下看吧! 活动嘉宾 嘉宾简介 钟书成,腾讯高级测试工程师,毕业于中国科学院。加入腾讯前曾在微软等多家外企项目中担任测试开发工作,于2012年加入腾讯腾讯地图项目,主要致力于自动化测试的研究与实施,在Android自动化测试方面有丰富的经验。在腾讯地图项目
腾讯移动品质中心TMQ
2018/02/06
1.4K0
腾讯TMQ在线沙龙|老司机教你玩转Appium自动化测试
相关推荐
Appium+python自动化13-native和webview切换
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验