前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python与R语言用XGBOOST、NLTK、LASSO、决策树、聚类分析电商平台评论信息数据集
在当今数字化浪潮席卷的时代,电商市场的蓬勃发展犹如一部波澜壮阔的史诗,蕴藏着无尽的商业价值与潜力。电商平台积累的海量数据,宛如一座等待挖掘的宝藏,其中蕴含着消费者行为、市场趋势等宝贵信息。如何运用先进的数据分析技术从这些数据中提取有价值的见解,成为电商从业者和数据科学家们共同关注的焦点(点击文末“阅读原文”获取完整代码、数据、文档)。
拓端
2025/04/13
490
Python与R语言用XGBOOST、NLTK、LASSO、决策树、聚类分析电商平台评论信息数据集
K-Means聚类算法、PCA:数据挖掘中的利器
在数据挖掘和机器学习的广阔领域中,K-Means聚类算法、人工智能(AI)以及主成分分析(PCA)是三个极为重要且相互关联的概念。它们各自在数据处理、模式识别和特征提取等方面发挥着不可替代的作用。本文将深入探讨K-Means聚类算法、AI与PCA的基本原理、应用场景以及它们之间的相互作用。
七条猫
2025/04/07
1160
MATLAB用改进K-Means(K-均值)聚类算法数据挖掘高校学生的期末考试成绩|附代码数据
最近我们被客户要求撰写关于K-Means(K-均值)聚类算法的研究报告,包括一些图形和统计输出。
拓端
2023/05/31
3230
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化|附代码数据
互联网时代,大量的新闻信息、网络交互、舆情信息以文本形式存储在数据库中,如何利用数据分析和文本挖掘的算法,将海量文本的价值挖掘出来,成为我们团队近期的一个研究方向,本案例就是我们的一个尝试。
拓端
2023/08/17
2430
【数据挖掘】数据挖掘总结 ( K-Means 聚类算法 | 二维数据的 K-Means 聚类 ) ★
个聚类分组选择初始的中心点 , 这些中心点称为 Means ; 可以依据经验 , 也可以随意选择 ;
韩曙亮
2023/03/28
9280
用R进行网站评论文本挖掘聚类
对于非结构化的网站中文评论信息,r的中文词频包可能是用来挖掘其潜在信息的好工具,要分析文本内容,最常见的分析方法是提取文本中的词语,并统计频率。频率能反映词语在文本中的重要性,一般越重要的词语,在文本
机器学习AI算法工程
2018/03/14
1.4K0
用R进行网站评论文本挖掘聚类
MADlib——基于SQL的数据挖掘解决方案(26)——聚类之k-means方法
聚类算法大都是几种最基本的方法,如k-means、层次聚类、SOM等,以及它们的许多改进变种。MADlib提供了一种k-means算法的实现。本篇主要介绍MADlib的k-means算法相关函数和应用案例。
用户1148526
2019/05/25
8420
R语言对耐克NIKEID新浪微博数据K均值(K-MEANS)聚类文本挖掘和词云可视化
2009年8月,新浪微博(micro-blog)开始服务,随后各家微博服务在国内得到广泛传播和应用"。微博具有文本信息短(140字包括标点符号)、词量少、裂变式传播、传播速度快、用词不规范等特征,使原文本可视化研究技术框架中的聚类或分类方法提取热点话题变得困难。
拓端
2022/12/27
4360
R语言APRIORI关联规则、K-MEANS均值聚类分析中药专利复方治疗用药规律网络可视化|附代码数据
最近我们被客户要求撰写关于中药专利复方治疗用药规律的研究报告,包括一些图形和统计输出。
拓端
2023/01/06
8260
R语言K-Means(K均值聚类)和层次聚类算法对微博用户特征数据研究
本文就将采用K-means算法和层次聚类对基于用户特征的微博数据帮助客户进行聚类分析。首先对聚类分析作系统介绍。其次对聚类算法进行文献回顾,对其概况、基本思想、算法进行详细介绍,再是通过一个仿真实验具体来强化了解聚类算法,本文的数据是由所设计地软件在微博平台上获取的数据,最后得到相关结论和启示。
拓端
2023/06/25
2700
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化
互联网时代,大量的新闻信息、网络交互、舆情信息以文本形式存储在数据库中,如何利用数据分析和文本挖掘的算法,将海量文本的价值挖掘出来,成为我们团队近期的一个研究方向,本案例就是我们的一个尝试。
拓端
2023/05/06
1930
【大数据分析与挖掘技术】Mahout聚类算法
中国有句古语叫“物以类聚,人以群分”,也就是说,人们倾向于与志趣相投的人生活在一起。在实际生活中,人类的很多行为模式都是将相似的物品联系在一起,如味觉,当人尝到蜂蜜和白糖时,会不自觉将其归为一类;但尝到蜂蜜和辣椒时,则会将其归为不同的类。在不断品尝食物的过程中,人们会根据食物的味道将它们分为酸甜苦辣等等不同的味道;更复杂的,根据食材、烹饪方式、调味料等数据,将菜肴分为不同菜系等。实际上,这就是一个聚类过程,本章将介绍聚类的基本概念,以及在Mahout中如何使用聚类算法对数据进行分析。
Francek Chen
2025/01/22
960
【大数据分析与挖掘技术】Mahout聚类算法
数据挖掘案例:基于 ReliefF和K-means算法的应用
.NET数据挖掘与机器学习 原文:http://www.cnblogs.com/asxinyu/archive/2013/08/29/3289682.html 数据挖掘方法的提出,让人们有能力最终认识数据的真正价值,即蕴藏在数据中的信息和知识。数据挖掘 (DataMiriing),指的是从大型数据库或数据仓库中提取人们感兴趣的知识,这些知识是隐含的、事先未知的潜在有用信息,数据挖掘是目前国际上,数据库和信息决策领域的最前沿研究方向之一。因此分享一下很久以前做的一个小研究成果。也算是一个简单的数据挖掘处理的例
机器学习AI算法工程
2018/03/13
8830
数据挖掘案例:基于 ReliefF和K-means算法的应用
用R语言进行网站评论文本挖掘聚类|附代码数据
对于非结构化的网站中文评论信息,r的中文词频包可能是用来挖掘其潜在信息的好工具,要分析文本内容,最常见的分析方法是提取文本中的词语,并统计频率。频率能反映词语在文本中的重要性,一般越重要的词语,在文本中出现的次数就会越多。词语提取后,还可以做成词云,让词语的频率属性可视化,更加直观清晰。
拓端
2023/09/01
3220
R语言用关联规则和聚类模型挖掘处方数据探索药物配伍中的规律|附代码数据
方剂药效与剂量的关系中药不传之秘在于剂量中药配伍规律。拓端数据使用数据挖掘技术对海量的在线医院药物复方历史数据进行智能分析,并从中找出药物配伍的规律
拓端
2023/01/04
9610
MATLAB用改进K-Means(K-均值)聚类算法数据挖掘高校学生的期末考试成绩|附代码数据
最近我们被客户要求撰写关于K-Means(K-均值)聚类算法的研究报告,包括一些图形和统计输出。
拓端
2023/08/03
2190
[Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。
Eastmount
2022/03/30
2.3K0
[Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解
非层次聚类:k-means
往期文章层次聚类与聚类树、比较聚类与聚类簇划分介绍了层次聚类的使用,今天为大家介绍非层次聚类的使用。非层次聚类(non- hierarchical clustering)是对一组对象进行简单分组的方法,其分类依据是尽量使得组内对象之间比组间对象之间的相似度更高,在分析之前需要预设小组的数目。非层次聚类需要首先有个预设的结构,比如假设有k个类群,那么将所有对象任意分为k组,然后在这个基础上不断进行替换迭代,来达到最优化的分组结果。
SYSU星空
2022/05/05
7380
非层次聚类:k-means
一文读懂K均值(K-Means)聚类算法
大数据文摘授权转载自数据派THU作者:王佳鑫 审校:陈之炎 概述 众所周知,机器学习算法可分为监督学习(Supervised learning)和无监督学习(Unsupervised learning)。 监督学习常用于分类和预测。是让计算机去学习已经创建好的分类模型,使分类(预测)结果更好的接近所给目标值,从而对未来数据进行更好的分类和预测。因此,数据集中的所有变量被分为特征和目标,对应模型的输入和输出;数据集被分为训练集和测试集,分别用于训练模型和模型测试与评估。常见的监督学习算法有Regression
大数据文摘
2023/04/10
1.4K0
一文读懂K均值(K-Means)聚类算法
MATLAB数据挖掘用改进的K-Means(K-均值)聚类算法分析高校学生的期末考试成绩数据
本文首先阐明了聚类算法的基本概念,介绍了几种比较典型的聚类算法,然后重点阐述了K-均值算法的基本思想,对K-均值算法的优缺点做了分析,回顾了对K-均值改进方法的文献,最后在Matlab中应用了改进的K-均值算法对数据进行了分析。
拓端
2022/12/13
7910
推荐阅读
Python与R语言用XGBOOST、NLTK、LASSO、决策树、聚类分析电商平台评论信息数据集
490
K-Means聚类算法、PCA:数据挖掘中的利器
1160
MATLAB用改进K-Means(K-均值)聚类算法数据挖掘高校学生的期末考试成绩|附代码数据
3230
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化|附代码数据
2430
【数据挖掘】数据挖掘总结 ( K-Means 聚类算法 | 二维数据的 K-Means 聚类 ) ★
9280
用R进行网站评论文本挖掘聚类
1.4K0
MADlib——基于SQL的数据挖掘解决方案(26)——聚类之k-means方法
8420
R语言对耐克NIKEID新浪微博数据K均值(K-MEANS)聚类文本挖掘和词云可视化
4360
R语言APRIORI关联规则、K-MEANS均值聚类分析中药专利复方治疗用药规律网络可视化|附代码数据
8260
R语言K-Means(K均值聚类)和层次聚类算法对微博用户特征数据研究
2700
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化
1930
【大数据分析与挖掘技术】Mahout聚类算法
960
数据挖掘案例:基于 ReliefF和K-means算法的应用
8830
用R语言进行网站评论文本挖掘聚类|附代码数据
3220
R语言用关联规则和聚类模型挖掘处方数据探索药物配伍中的规律|附代码数据
9610
MATLAB用改进K-Means(K-均值)聚类算法数据挖掘高校学生的期末考试成绩|附代码数据
2190
[Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解
2.3K0
非层次聚类:k-means
7380
一文读懂K均值(K-Means)聚类算法
1.4K0
MATLAB数据挖掘用改进的K-Means(K-均值)聚类算法分析高校学生的期末考试成绩数据
7910
相关推荐
Python与R语言用XGBOOST、NLTK、LASSO、决策树、聚类分析电商平台评论信息数据集
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验