hybrid应用自动化
一.hybrid介绍
hybrid是一种混合app,将h5页面嵌入native原生页面。
基于uiautomator+chromedriver。native部分走uiautomator,web部分走chrome,两者结合混搭,从而实现hybrid自动化
二.配置步骤
1.在app源码中打开webview调试模式(如果没有打开,uc开发者工具无法识别到app的web页面)
webview.setWebContentsDebuggingEnabled(true); //需要开发帮忙打开
2.手机连接电脑
(1)用usb线将手机连接电脑
(2)开发者模式
在手机设置-关于手机-版本号,点击5下后手机处于开发者模式(部分手机需要输入手机密码才能打开开发者选项

(3)进入开发者选项后打开usb调试-确定

(4)选择usb配置

(5)电脑dos命令行输入adbdevices检测设备是否连接成功

注意:不同的手机型号开发人员选项所在的位置可能会有所不同
3.native部分
通过appium来进行定位:用appium定位元素
(1)主机IP为127.0.0.1,再启动服务器

(2)点击启动检查器会话
(3)所需功能配置:
package和Activity获取:aapt dump badging D:\rubish\apk\bilibili.apk



(4)点击开启会话
在手机安装app,并且app打开的情况下,点击开启会话,开始抓取app页面元素
4.web/h5部分
(1)uc开发者工具
安装uc开发者工具,
手机打开开发者模式连接电脑,
打开要测试的hybrid app,进入h5页面,
打开安装好的开发者工具,如图:


(2)chrome驱动
下载对应版本的chrome驱动:https://npm.taobao.org/mirrors/chromedriver
对应版本:根据uc开发者工具的展示的手机webview版本,找到和手机webview最近的chromedriver版本下载
替换appium自带的chromedriver.exe
chromedriver.exe地址:\resources\app\node_modules\appium\node_modules\appium_chromedriver\chromedriver\win
三.脚本编写步骤
1.自动化前置代码
//打开app,和appium中设置的所需功能配置一样
DesiredCapabilities desiredCapabilities=new DesiredCapabilities();
desiredCapabilities.setCapability("platformName", "Android");
desiredCapabilities.setCapability("platfomVersion", "10");
desiredCapabilities.setCapability("deviceName", "HUAWEI P40");
desiredCapabilities.setCapability("appPackage", "com.lemon.lemonban");
desiredCapabilities.setCapability("appActivity", "com.lemon.lemonban.activity.WelcomeActivity");
desiredCapabilities.setCapability("ensureWebviewsHavePages", true);
desiredCapabilities.setCapability("noReset", true); //不清除数据
URL remoteurl=new URL("http://localhost:4723/wd/hub"); //appium的服务地址:来自appium的检查器
driver=new AndroidDriver(remoteurl,desiredCapabilities);
2.先点击进入webview视图,但是并未切换到contexts;
driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().text(\"柠檬社区\")")).click();
3.再获取到所有的contexts
System.out.println(driver.getContextHandles());
4.切换到webview试图
driver.context("webview视图");
5.元素定位和执行操作
driver.findElement(By.xpath("//a[@class=\"index-bottom__item\"][3]")).click();
6.切换回native视图
driver.context("native视图");
hybrid应用自动化的更多相关文章
- Android Hybrid App自动化测试实战讲解(基于python)
1.Hybrid App自动化测试概要 什么是Hybrid App? Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App ...
- H5混合应用之上下文切换
一.native/web/hybrid 简介 目前主流应用程序大体分为:Native App(原生应用).Web App(网页应用).Hybrid App(混合应用),它们三者的优缺点比较如下表: 应 ...
- APP自动化之Hybrid自动化解决方案(七)
基于UIAutomator+ChromeDriver模式(UIAutomator安卓原生引擎) 原理:native(原生)部分使用UIAutomator,webview部分使用ChromeDriver ...
- 进击的Hybrid App,量身定做缓存机制
引用张图,简单粗俗的解释下 Native App.Web App 和 Hybrid App Navtie App: 使用平台系统提供的原生语言来编写的 App,如果Android用java,ios用o ...
- Appnium移动自动化框架初探
作者:cryanimal QQ:164166060 本文简要介绍了appnium自动化框架的架构.加载流程.支持语言.相关配置,以及元素定位工具等. 官方网站: http://appium.io Ap ...
- 前端工作流程自动化——Grunt/Gulp 自动化
什么是自动化 先来说说为什么要自动化.凡是要考虑到自动化时,你所做的工作必然是存在很多重复乏味的劳作,很有必要通过程序来完成这些任务.这样一来就可以解放生产力,将更多的精力和时间投入到更多有意义的事情 ...
- 移动端混合型App(hybrid app)自动化测试选型与实践
背景 公司产品的业务已经发展到了移动端,开发选型已经结束,决定使用phonegap做移动端的web应用开发平台.考虑到业务的复杂与多样,移动端的测试同样需要自动化.在网上看了很多,最终锁定了3个移动端 ...
- 【腾讯优测干货分享】微信小程序之自动化亲密接触
本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/HcPakz5CV1SHnu-U8n85pw 导语 山雨欲来风满楼,最 ...
- Appium移动自动化框架初探
作者:cryanimal QQ:164166060 本文简要介绍了appnium自动化框架的架构.加载流程.支持语言.相关配置,以及元素定位工具等. 官方网站: http://appium.io Ap ...
- app自动化问题点整理
1.配置SDK环境发现adb无法生效: 解决方案: 这个问题一般就是你的环境变量没有配置好,很多同学比较容易出现的点就是win10系统的环境变量配置: 一定要注意打开path添加:%ANDROID_H ...
随机推荐
- vscode python remote debug极速入门
本文适用范围 主要适用于debug python 程序,尤其是深度学习刚入门需要使用remote 连接到linux进行程序运行,想调试一下的同学. 当然非深度学习也可以参考食用本文哈哈哈. 极速入门版 ...
- RocketMQ原理—3.源码设计简单分析下
大纲 1.Producer作为生产者是如何创建出来的 2.Producer启动时是如何准备好相关资源的 3.Producer是如何从拉取Topic元数据的 4.Producer是如何选择Message ...
- auto-wing将AI应用于自动化项目
GitHub: https://github.com/SeldomQA/auto-wing 背景:我们之前介绍过 midsence.js AI自动化测试辅助工具,midsence.js的思路我个人是比 ...
- telegraf、influxdb和grafana
1 telegrafTelegraf 是一个开源的服务器代理,用于收集.处理和发送数据.它是 InfluxData 公司推出的 TICK 堆栈(Telegraf.InfluxDB.Chronograf ...
- Luogu P7735 NOI2021 轻重边 题解 [ 紫 ] [ 树链剖分 ] [ 线段树 ]
轻重边:小清新树剖题. 思路 我们可以给每一个赋重边的操作看做给这些点盖上一个时间戳,那么显然一条边是重边,当且仅当这条边两端的点的时间戳相等.因为一个点如果被后面的时间戳覆盖之后他相邻的边都会被波及 ...
- 用python做时间序列预测二:时间序列的一般数据格式和可视化
本文将介绍如何通过python来读取.展现时间序列数据. 读取 时间序列数据一般用cvs等电子表格的形式存储,这里以cvs为例: from dateutil.parser import parse f ...
- 从SQL Server迁移到Mysql Mysql导入SQL Server的数据库
mysql怎么导入 SQl Server的数据库, SQL Server导出的SQL文件Mysql无法识别 需要用到的软件 Navicat mysql workbanch SQL Server man ...
- QT5笔记: 15. 其他显示组件的常用功能
其他显示组件的常用功能 代码 #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget ...
- cgroup与systemd: 通过src rpm获取systemd源代码,添加日志并使用rpmbuild重新打包
问题起源 服务跑在富容器中.容器使用init进程作为一号进程,然后用systemd管理所有service. 在做一次升级时,nginx启动脚本有更新,原来是root拉起,现在进行了去root改造,使用 ...
- Linux服务器快速卸载安装node环境(简单上手)
这篇文章主要介绍了Linux服务器快速卸载安装node环境(简单上手) 1.先卸载npm sudo npm uninstall npm -g 2.卸载node yum remove nodejs np ...