3分钟快速了解—App自动化测试是怎么实现H5测试的?

news2024/11/25 22:50:12

移动端 app 自动化框架很多,但是有一些框架因为不支持混合应用测试,一直没有完全流行。比较典型的是经典的 Python 框架 uiautomator2, 这个框架简单好用,没有 appium 那样复杂的 api 调用,受到不少 python 自动化工程师的青睐。

但是不管是官方文档,还是民间教程,基本都没有涉及到用它做混合应用测试,本文提供一种非常简单的方法,只需要多加 4 行代码,就能让 uiautomator2 支持混合应用测试。

什么是混合应用

移动端应用有两种典型的开发方式,一种是原生的 native app,一种是基于网页开发技术的 web app。 原生应用的体验感更好,但是如果想同时开发安卓应用和 ios 应用,需要不同的原生开发技术。 web 应用可以非常轻松的做到安卓和 ios 的跨平台开发,它的体验感要稍微差一些,不像原生应用那么流畅。

Hybrid App(混合模式移动应用)是介于 web app和native app之间的开发方式,可以在原生界面中嵌套网页,因而可以同时具备体验感和跨平台能力。

目前主流的移动端 app 测试框架 appium 具备混合应用测试的能力,但是这个框架搭建和使用都比较麻烦,封装的方法也没有那么 pythonic,因此有很多公司不想使用,他们更加喜欢简洁优雅的 python uiautomator2 框架。 非常遗憾,这个框架目前没有支持混合应用测试。

WebView自动化测试步骤

  • 第一步,通过原生操作进入 webview 网页;
  • 第二步,使用 selenium 等网页测试工具进入网页;
  • 第三步,使用 selenium 等网页测试工具测试。

这中间的关键步骤在于如何使用 selenium, 如果直接打开一个新的 selenium 会话,那么会打开一个新的页面,和 app 中的 webview 是分开的,因此无法测到嵌套网页。 selenium 必须要和 app 建立某种关系,使他们绑定在一起,操作 selenium 时就是直接操作 app 当中的网页。
在这里插入图片描述

通过 uiautomator2 进入 webview

这里就是最基本的 uiautomator2 操作,详细操作可以查看 官方文档, 这里使用的 app 是 android bootstrap,可以直接 点击下载 。

d = u2.connect()
d.app_start('com.github.android_app_bootstrap')
d(text='Login').click()
d(text='Baidu').click()

selenium 连接 webview

APP 的第三个菜单可以直接打开 baidu 网页,从而到 webview 网页。 如果不使用 selenium 连接,直接通过 uiautomator2 定位网页中的元素,是会报错的。
在这里插入图片描述
那如何通过 selenium 连接 webview 呢?

  • 首先,通过设备 d 获取当前操作的 app, 从而得到包名
  • 然后,初始化一个 Chrome 浏览器对象
  • 需要注意的是,Chrome 对象需要添加额外的参数,指定连接的设备,webview 绑定的报名,以及配置在 app 中使用 android 浏览器。
    在这里插入图片描述
    之后的操作就和 selenium 做 web 自动化测试没有任何区别了,无非就是点击网页,做自动化操作:
driver = webdriver.Chrome('chromedriver_68.exe', options=options)
driver.implicitly_wait(8)

driver.find_element('id', 'index-kw').send_keys('你好')

WebView自动化测试在浏览器中的说明

是不是很好奇,我怎么知道要这么写代码,才能连接 webview ,达到测试效果? 其实世间没有那么多神秘的学习方法,只要你肯用心,一定是可以找到学习的路径的。 这段代码清清楚楚的写在 chrome webdriver 的官方文档中,只是,你可能打不开。 截屏看一下:

在这里插入图片描述
其他 webdriver 的配置也可以查看 MDN web docs。

展示效果:
在这里插入图片描述

写在最后

这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

都到这了记得三连支持一下吧。

-------------------------------------------------

完整版文档下载方式:

这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享。

在评论区和我互动交流或者私❤我【软件测试学习】领取即可,拿走不谢。

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

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

相关文章

C++《stack和queue的一些OJ题目》

本文主要讲解C中stack和queue的一些OJ题目 文章目录 1、[最小栈](https://leetcode.cn/problems/min-stack/)2、[栈的压入、弹出序列](https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId13&&tqId11174&rp1&ru/activity/oj&qru/ta…

路径规划算法:基于乌鸦优化的路径规划算法- 附代码

路径规划算法:基于乌鸦优化的路径规划算法- 附代码 文章目录 路径规划算法:基于乌鸦优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法乌鸦…

驱动开发:内核解析PE结构节表

在笔者上一篇文章《驱动开发:内核解析PE结构导出表》介绍了如何解析内存导出表结构,本章将继续延申实现解析PE结构的PE头,PE节表等数据,总体而言内核中解析PE结构与应用层没什么不同,在上一篇文章中LyShark封装实现了K…

ChatGPT国内免费使用方法【国内免费使用地址】

当下人工智能技术的快速发展,聊天机器人成为了越来越多人们日常生活和工作中的必备工具。如何在国内免费使用ChatGPT聊天机器人,成为了热门话题。本文将为你详细介绍ChatGPT国内免费使用方法,让你轻松拥有聊天机器人助手,提高工作…

基于Halcon卡尺测量: Metrology批量测量矩形和圆

处理图如下: 原图如下: 主要思想: 1.准备一次性将图中12个圆和2个矩形都检测出来 2.初步确定12个圆的圆心坐标和半径,初步确定两个矩形的中心坐标,角度,长短边长 3.创建计量模型 4.定义计量模型尺寸 5.增加检测矩形和圆形的信息参数 6.应用计量模型,获取结果 7.显示…

什么是 IMU?惯性测量单元工作和应用

术语IMU代表“惯性测量单元”,我们用它来描述测量工具的集合。当安装在设备中时,这些工具可以捕获有关设备移动的数据。IMU 包含加速度计、陀螺仪和磁力计等传感器。 IMU 如何工作? IMU 可以测量各种因素,包括速度、方向、加速度、…

vue 单点登录的方法

vue 单点登录的方法 当我们在使用 vue开发项目时,一般都是只有一个用户帐号,如果要实现多个帐号的单点登录,可以使用 Session和 LocalStorage这两个技术。这两个技术在实现单点登录时,都需要有一个用户名和一个密码,而…

【C++】C++ 11 智能指针

【C】C 11 智能指针 文章目录 【C】C 11 智能指针1.为什么需要智能指针2. C中智能指针和指针的区别是什么?3. C中的智能指针有哪些?分别解决的问题以及区别?(1)auto_ptr(C98的方案,C11已经弃用&…

JavaEE进阶(Mybatis)5/31

目录 1. SQL注入 2.concat()用于like模糊查询 3.resultMap 4. 5.动态SQL 6.foreach标签 1. SQL注入 $问题会导致SQL注入 因为$是直接替换的,and的优先级高于or true or false #不存在SQL注入的问题,因为他是预编译的&…

坚持的工作好习惯

工作好习惯 目录概述需求: 设计思路实现思路分析1.工作好习惯的重要性2.谈下自己的工作方法2.希望有时也从别人那里也学习一下看看 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,s…

windows xp 上 Task Scheduler服务 启动后停止,导致数据库自动备份无法编辑和使用问题解决

项目中使用了mysql数据库,大多数人都会选择Navicat来连接数据库,一般会设置计划来自动备份数据库,但我在编辑自动备份的计划时,弹出task scheduler服务无法启动,退出回到桌面,启动windows的服务&#xff0c…

牛客网C++面试宝典(一)C/C++基础之语言基础

此系列为在学习牛客网C面试宝典过程中记录的笔记,本篇记录第一章C/C基础部分的第一节:语言基础。 牛客网C面试宝典链接:https://www.nowcoder.com/issue/tutorial?tutorialId93&uuida34ed23d58b84da3a707c70371f59c21 文章目录 1.1 简述…

Docker 数据持久化方案详解

目录 一、Docker数据持久化概述 1.1联合文件系统 1.2容器的数据卷 1.2.1 什么是数据卷 1.2.2 数据卷特点 1.2.3 Docker提供三种方式将数据从宿主机挂载到容器 二、 Docker持久化方案 2.1 查看volume 基本命令使用方法 2.2 volume持久化方案 2.2.1volume简介 2.2.2.v…

【JavaSE】Java基础语法(四十一):TCP通信程序

文章目录 1. TCP发送数据2. TCP接收数据【应用】3. TCP程序练习4. TCP程序文件上传练习【应用】 1. TCP发送数据 Java中的TCP通信 Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。…

Android 易忽略小知识

1.设置hint的字体大小 在Android xml文件中并没有直接设置hint字体大小的属性。如果hint文字的大小不希望跟正常字体的大小一样,就只能通过代码的方式来进行处理。 提供两种方式: //设置"用户名"提示文字的大小 EditText etUserName (Ed…

教育硬件“老玩家”进入智能手机新赛道,小度胜算几何?

从5月8日有传言称“百度旗下小度将进军智能手机市场”,到5月17日小度官宣将推出旗下新物种产品——小度青禾学习手机,小度在短短10天时间成为市场关注的焦点。 而5月22日,其也拿出了真正的成果,这部专门为青少年打造的学习手机正…

MySQL——在Linux环境下安装(在线安装)

MySQL的安装(在线安装) mysql的安装并不是比赛的内容,所以我们用比较方便的在线安装的方法,比起安装,我们更要知道如何去使用: 首先看一下自己有没有安装MySQL的服务,或者自己的服务器上有没有…

application.yml中的配置怎么写

1.问题 application.yml中可以做很多组件的配置,比如redis,mongo, 但是这些的key是什么,value怎么写呢? 2.分析问题 为了搞清楚这个问题,我们需要先了解application.yml中的配置是怎么加载的,以MongoProperties配置加载为例, 在Spring Boot中,可以使用application.y…

【OJ比赛日历】快周末了,不来一场比赛吗? #06.03-06.09 #18场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2023-06-03(周六) #7场比赛2023-06-04…

【数据结构】---二叉树类型部分练习解析让你更深程度了解二叉树

文章目录 前言🌟一、第一种:二叉树性质类型:🌏1.1 第一题:💫1.1.1 理论:💫1.1.2 图解:💫1.1.3 解析: 🌏1.2 第二题:&#…