Appium如何简化混合App的测试和自动化

news2024/9/20 16:56:11

背景:Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。

什么是混合型应用(Hybrid App)

我们可以理解为,在本地应用之上渲染网络组件,混合型应用本质上是被包裹在本地容器中的网络应用。这个容器允许应用程序访问设备的本地功能,如相机、GPS和联系人,并为用户提供类似本地的体验。混合应用程序还可以通过插件或模块访问设备的特定功能。

混合应用的优势

混合应用可以提供比原生或网络应用更多的优势,让我们详细讨论一下这些优势:

1.跨平台兼容性:混合应用程序的最大优势之一是它们可以在多个平台上运行,这意味着开发人员可以建立一个应用程序并将其部署在多个设备上。

2.成本效益高:混合应用程序比本地应用程序更具成本效益,因为它们花费更少的开发时间和精力。这是因为它们使用一个共同的代码库,可以在多个平台上共享。

3.更快的开发:混合应用程序可以比原生应用程序开发得更快,因为它们使用许多开发人员熟悉的网络技术。这可以帮助企业更快地将他们的应用程序推向市场。

4.访问设备功能:混合应用程序可以使用插件访问设备功能,如相机、GPS和加速器。这意味着开发人员可以建立具有高级功能的应用程序,而不必使用本地代码。

5.易于维护:混合型应用程序比本地应用程序更容易维护,因为它们使用一个共同的代码库,可以同时在多个平台上更新。从长远来看,这可以为企业节省时间和金钱。

使用混合应用程序的局限性

它们的性能可能不如本地应用程序,而且可能无法使用底层操作系统的所有特性和能力。

1.性能:混合应用程序可能有性能问题,特别是与本地应用程序相比。这是因为它们依赖于网络技术,而网络技术有时会比原生代码更慢,效率更低。

2.用户体验:混合应用程序可能无法提供与原生应用程序相同水平的用户体验。这是因为它们可能无法访问某些设备功能或提供与原生应用程序相同的性能和响应性。

3.兼容性:混合型应用程序可能无法在所有设备和平台上一致运行,这是因为它们需要在多个平台上进行测试,这可能很费时间和成本。

4.安全性:混合应用程序可能容易受到安全威胁,如数据泄露、黑客攻击和恶意软件攻击。这是因为它们依赖于网络技术,而网络技术可能存在安全漏洞。

5.维护:混合应用程序可能比本地应用程序需要更多的维护。这是因为它们可能需要经常更新,以跟上设备操作系统和新网络技术的变化。

因此,在考虑任何方法之前,我们也应该考虑这些问题。

如何实现混合型应用程序的自动化?

在混合应用程序中,有多个上下文:一个代表应用程序的本地部分,一个或多个代表存在的每个网络视图的上下文(大多数情况下只有一个)。通过Appium客户端,可以获得一个可用上下文的列表,或者可以使用Context API告诉Appium切换到一个给定的上下文:

 
  1. driver.getContextHandles();

  2. driver.context("NATIVE_APP");

在上面的例子中,我们已经切换到了Native视图。但是如果想切换到web视图,首先需要知道web视图上下文的名称。在那里使用这个getContextHandles()方法来找出指代web视图上下文的正确字符串。我们可以通过很多方法来实现这一点。我建议使用下面的方法来完成这个任务:

 
  1. private String getWebContextNames(AppiumDriver driver) {

  2. ArrayList<String> contexts = newArrayList(driver.getContextHandles());

  3. for (String context : contexts) {

  4. if (!context.equals("NATIVE_APP")) {

  5. return context;

  6. }

  7. }

  8. returnnull;

  9. }

另外,我们也可以使用下面的代码来切换到网页视图。​​​​​​​

 
  1. //Retrieve all available context names into Set

  2. Set<String> contextNames = driver.getContextHandles();

  3. for (String contextName : contextNames) {

  4. //This will print out all the available contexts

  5. System.out.println(contextName); }

  6. // This will set context to WEBVIEW. most of the times webview would be at number 1

  7. driver.context(contextNames.toArray()[1]);

  8. //you can perform web testing actions hereafter

  9. String myText = driver.findElement(By.cssSelector(".submit_button")).click();

让我们来理解上面的代码和它的含义。

这意味着,从现在开始,我们从Appium客户端发送的任何命令都将参考网页视图中的网页,而不是本地应用程序。在这一点上,你可以执行所有的操作,并可以使用所有可以用于网页的命令,如getTitle()等,这在本地应用程序中是不可能的,就像我们在自动化任何桌面浏览器一样。

当然,在执行完网页操作后,需要回到本地语境,再次对应到本地元素。为此,我们可以简单地运行下面的命令,使用Native应用程序的上下文名称。

driver.context("NATIVE_APP");

上面的代码是完全跨平台的,你可以在IOS和Android版本的应用程序上使用这个代码。

注意:Chromedriver的每个版本都有其支持的Chrome浏览器的最低版本,这意味着如果你得到的Appium版本捆绑了Chromedriver的X版本,而你设备上的Chrome版本比X版本的最低Chrome版本要老,webviews将无法自动运行,因为Chrome浏览器版本不再与Chromedriver版本兼容。如果你遇到这个问题,你会看到以下错误信息。

在处理该命令时发生了一个未知的服务器端错误。原始错误:未知错误:Chrome版本必须>=55.0.2883.0

从Appium 1.15.0开始,有可能从谷歌官方存储中自动下载必要的chromedriver到chromedriverExecutableDir。该脚本将自动搜索支持给定浏览器/网页视图的最新chromedriver版本,下载并添加到chromedriverChromeMappingFile映射中。你需要做的就是在启用chromedriver_autodownload功能的情况下使用以下命令执行服务器。

appium --allow-insecure chromedriver_autodownload

另外,你也可以参考官方文件来解决这个问题,Appium ChromeDriver设置文件

现在唯一剩下的是,为Android和IOS设置浏览器驱动程序,让我们来看看如何做到这一点。

在IOS系统中设置浏览器驱动程序​​​​​​​

 
  1. DesiredCapabilitiescapabilities=newDesiredCapabilities();

  2. capabilities.setCapability("platformName", "IOS");

  3. capabilities.setCapability("platformVersion", "12.0");

  4. capabilities.setCapability("deviceName", "iPhone 12");

  5. capabilities.setCapability("app",IOS);

  6. IOSDriverdriver=newIOSDriver<>(newURL("http://127.0.0.1::4723"), capabilities);

  7. 在Android中设置浏览器驱动程序

  8. DesiredCapabilitiescapabilities=newDesiredCapabilities();

  9. capabilities.setCapability("platformName", "Android"); capabilities.setCapability("deviceName", "Android Emulator");

  10. capabilities.setCapability("automationName", "UiAutomator2");

  11. capabilities.setCapability("app", ANDROID);

  12. AndroidDriverdriver=newAndroidDriver(newURL(""http://127.0.0.1::4723"), capabilities);

  13. }

结语

总之,使用Appium实现混合应用的自动化是提高跨平台移动应用质量的有效途径。Appium为开发者提供了一个灵活和用户友好的平台,使他们能够用各种编程语言编写代码,并与应用程序的UI元素进行互动,从而实现混合应用程序的自动化测试。此外,Appium支持在真实设备和仿真器上进行测试。凭借其自动化重复性任务的能力和强大的测试功能,Appium是希望构建和测试高质量混合移动应用程序的开发者和企业的一个基础工具。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2135703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iPhone 16预售已开,沙漠金色最抢手,喜提新机后别忘了这件事!

9月13日20点&#xff0c;iPhone 16系列正式开启官方预购。今年全新的iphone16不仅新增相机按钮和AI功能&#xff0c;还增加了沙漠金配色。“加量不加价”的iPhone 16系列开售依旧火爆&#xff0c;iPhone 16系列开售1分钟内&#xff0c;苹果官方网站一度被消费者买到崩&#xff…

EasyExcel 快速入门

目录 一、 EasyExcel简介 官网链接&#xff1a; 代码链接&#xff1a; 二、 EasyExcel快速上手 引入依赖&#xff1a; 设置Excel相关注解 编写对应的监听类&#xff1a; 简单写入数据&#xff1a; 简单读取数据&#xff1a; 不需要使用监听器&#xff1a; 需要使…

U盘一打开就让格式化怎么办?教你快速解决方法

在日常生活和工作中&#xff0c;U盘已成为我们存储和传输数据的重要工具。然而&#xff0c;有时我们会遇到一个令人头疼的问题&#xff1a;当插入U盘后&#xff0c;电脑提示需要格式化才能使用。这时&#xff0c;我们该如何应对呢?本文将为大家详细介绍U盘提示格式化的原因及解…

野生动物检测系统源码分享

野生动物检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

时序必读论文06|PITS : 基于非依赖策略学习时序patch特征表示

论文标题&#xff1a;LEARNING TO EMBED TIME SERIES PATCHES INDEPENDENTLY 下载地址&#xff1a;https://arxiv.org/pdf/2312.16427v1.pdf 开源代码&#xff1a;https://github.com/seunghan96/pits 前言 之前的文章我们读了Patch TST&#xff0c;建议大家阅读原论文&…

数据结构修炼——顺序表和链表的OJ题练习

目录 一、顺序表相关OJ题1 移除元素题目解析 2 合并两个有序数组题目解析 二、链表相关OJ题1 移除链表元素题目解析 2 反转链表题目解析 3 链表的中间结点题目解析 4 合并两个有序链表题目解析 5 链表的回文结构题目解析 6 相交链表题目解析 7 环形链表的判断题目解析 8 环形链…

共享单车轨迹数据分析:以厦门市共享单车数据为例(四)

副标题&#xff1a;共享单车与地铁接驳距离探究——以厦门市为例 关于轨道交通站点接驳范围的研究早已屡见不鲜&#xff0c;通常认为以站点为圆心、800米作为地铁站直接的服务范围是合理的。近年来&#xff0c;随着轨道、公交和慢行交通三网融合概念的提出&#xff0c;慢行交通…

9.第二阶段x86游戏实战2-初识易语言

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

喜报 | 大势智慧荣获国家级专精特新重点“小巨人”企业荣誉称号

近日&#xff0c;湖北省经济和信息化厅发布了《关于2024年拟支持专精特新重点“小巨人”企业名单的公示》。武汉大势智慧科技有限公司&#xff08;后简称“大势智慧”&#xff09;凭借在实景三维AI领域的卓越技术表现和创新能力&#xff0c;成功上榜并通过公示期&#xff0c;荣…

预算不多怎么选一款开放式耳机?四款亲测好用的蓝牙耳机推荐

挑选开放式耳机可以从以下几个方面入手&#xff1a; 关注佩戴舒适度&#xff1a; 外观设计&#xff1a;开放式耳机有耳挂式、夹耳式等多种设计。耳挂式耳机通常佩戴较为稳固&#xff0c;适合运动时使用&#xff1b;夹耳式耳机相对轻便&#xff0c;但可能需要一定时间适应其佩…

多核DSP(6000系列)设计与调试技巧培训

​课程介绍&#xff1a; 为帮助从事DSP开发工程师尽快将DSP技术转化为产品&#xff0c;在较短时间内掌握DSP设计技术和问题的解决方法&#xff0c;缩短产品开发周期、增强产品竞争力、节省研发经费。我们特组织了工程实践和教学经验丰富的专家连续举办了多期DSP C6000的培训&a…

六氟化硫密度微水在线监测配套5孔M12格兰头航空插头插座

我们将为大家介绍如何使用六氟化硫密度微水在线监测配套5孔M12格兰头连接器。在本教程中&#xff0c;我们将向您展示简单易懂的步骤&#xff0c;让您轻松掌握。 所需材料&#xff1a; 1. 六氟化硫密度微水在线监测器 2. 5孔M12格兰头连接器 3. 电源线 4. 符合要求的电缆 5…

批量视频压缩需要怎么压缩?2024帮助你快速进行视频压缩的软件

批量视频压缩需要怎么压缩&#xff1f;2024帮助你快速进行视频压缩的软件 批量视频压缩是处理大量视频文件时常见的需求&#xff0c;特别是当你需要减小视频大小以便存储或上传时。以下是5款帮助你快速进行视频压缩的软件&#xff0c;它们操作简单&#xff0c;功能强大&#x…

三、k8s中的控制器的使用

一 什么是控制器 官方文档&#xff1a; 工作负载管理 | Kubernetes 控制器也是管理pod的一种手段 自主式pod&#xff1a;pod退出或意外关闭后不会被重新创建 控制器管理的 Pod&#xff1a;在控制器的生命周期里&#xff0c;始终要维持 Pod 的副本数目 Pod控制器是管理pod…

Java高级Day41-反射入门

115.反射 反射机制 1.根据配置文件re.properties指定信息&#xff0c;创建Cat对象并调用hi方法 SuppressWarnings({"all"}) public class ReflectionQuestion {public static void main(String[] args) throws IOException {//根据配置文件 re.properties 指定信息…

最新热点!结合创新!小样本学习+CLIP:超好上手的思路,爽发顶会顶刊

今天给大家推荐一个很好上手的创新思路&#xff1a;小样本学习CLIP。 这个思路的优势在于&#xff1a;通过利用CLIP模型强大的跨模态表征能力&#xff0c;再结合小样本学习技术&#xff0c;我们就可以在仅提供少量标注样本的情况下&#xff0c;快速适应新的任务&#xff0c;在…

elementui组件el-upload实现批量文件上传

el-upload组件上传文件时&#xff0c;每传一个文件会调一次接口&#xff0c;所以当上传多个文件的时候&#xff0c;有 n 个文件就要调 n 次接口。 刚好之前工作中遇到使用el-upload组件批量上传文件的需求&#xff0c;来看看怎么实现。 思路&#xff1a; 1.取消组件的自动上…

【C++】vector常见用法

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;C从小白到高手 &#x1f339;往期回顾&#x1f339;&#xff1a;[C]string类 &#x1f516; 流水不争&#xff0c;争的是滔滔不息。 文章目录 一、vector的介绍vector…

KubeCon China 回顾|快手的 100% 资源利用率提升:从裸机迁移大规模 Redis 到 Kubernetes

大家下午好&#xff0c;我是来自 ApeCloud 的吴学强&#xff0c;非常高兴能够在 KubeCon 做分享。今天的分享由我和来自快手的刘裕惺同学共同完成&#xff0c;我们分享的主题是将大规模的 Redis 实例从裸机迁移到 Kubernetes 上来提高资源的利用率。 我们今天的议题包括几个方…

价值流与核心理论框架对比解析:企业业务架构优化的全景指南

企业架构优化中的理论框架选择 随着数字化转型和全球竞争的加剧&#xff0c;企业管理者越来越意识到优化业务流程以提升竞争力的重要性。然而&#xff0c;在众多优化方法中&#xff0c;企业如何选择最适合自己的理论框架成为一大挑战。由The Open Group发布的《价值流指南》系…