APP自动化之Hybrid自动化解决方案(七)
基于UIAutomator+ChromeDriver模式(UIAutomator安卓原生引擎)
原理:native(原生)部分使用UIAutomator,webview部分使用ChromeDriver,两者结合混搭,从而实现Hybrid自动化
一、第一种方案(针对可以修改源代码基础上操作)
1.准备android 4.4+ 版本以上的手机/模拟器(我安装的是:nox_setup_v6.3.0.5_full.exe)
2.让开发在app源代码中将webview调试模式打开
webview.setWebContensDebuggingEnabled(true)
3.安装UC开发者工具(定位web页面元素信息工具)
自行百度下载https://plus.ucweb.com/download/#DevTool 安装:
安装成功后启动:
打开页面如下:

4.模拟器或者真机连接后,打开app内嵌的webview页面或者打开百度网页版如下:


注意:1.APP必须打开webview调试模式 2.模拟器/真机必须打开开发者选项中的USB调试模式(使用adb devices检测到已连接设备)
二、 第二种方案(针对线上app无源码修改权限并且root权限手机操作)
如果是第三方线上app,一般WebView debug开关都是关闭的,这就需要借助第三方的工具,才能将debug开关打开
解决方案:使用第三方的工具Xposed+WebViewDebugHook
Xposed是一个框架,能够集成很多功能模块,这些模块能够在不修改APK的情况下,修改APP的运行方式,这里我们需要WebViewDebugHook模块来开启APP的WebView debug模式
注意:使用这种方式的前提是手机必须root权限,如今的android系统获取root权限越来越难,如7.0 8.0等等,使用这种方法也会失效!
1.因为需要root手机权限,本次使用模拟器来模拟实现,模拟器自带root权限


2.安装xposed_3.15.apk

打开:

稍等2分钟:


安装更新完成后提示要求超级权限点击允许,然后提示重启后生效

重启模拟器打开xposed可以看到框架已经激活

3.安装WebViewDebugHook.apk


点击进来,勾选


重启模拟器
4.打开58同城,本地服务验证
(1)使用uiautomatorviewer.bat查看页面,发现页面是WebView类型,无法定位webview中的元素

(2)此时打开UC开发者工具(前提开启USB调试,adb devices检测到设备)

此时就可以定位WebView页面元素了

三、第三种方案:(针对线上app无源码修改权限并且没有root权限手机操作,此次使用真机来测试)
1.安装VitualXposed+WebviewDebugHook
下载地址参考:https://github.com/android-hacker/VirtualXposed/releases
//检测设备已连接
C:\Users\Administrator\Desktop>adb devices
List of devices attached
* daemon not running; starting now at tcp:5037
* daemon started successfully
W4FTOBY4NNAQU8 unauthorized
//将安装包推送到手机内存sdcard目录
C:\Users\Administrator\Desktop>adb push D:\appium\apk\VirtualXposed_AOSP_0.17.3.apk /sdcard/
D:\appium\apk\VirtualXposed_AOSP_0.17.3.apk: 1 file pushed. 4.0 MB/s (8020099 bytes in 1.919s) C:\Users\Administrator\Desktop>adb push D:\appium\apk\WebViewDebugHook.apk /sdcard/
D:\appium\apk\WebViewDebugHook.apk: 1 file pushed. 0.5 MB/s (16330 bytes in 0.031s)
》首先安装:VirtualXposed_AOSP_0.17.3.apk

打开默认安装xposed






打开xposed查看当前模块



2.假设此时需要对58同城app进行元素定位及自动化脚本编写,此时我们需要将58同城安装到虚拟环境VirtualXposed中去,同上步骤操作!
打开VirtualXposed >> 点击屏幕 >> 添加应用 >>如果本机已安装选择克隆方式,如果未安装选择内存中的apk安装 >> 依然选择VIRTUALXPOSED安装 >>安装成功

3.开始定位元素

此时使用uiautomatorviewer.bat定位native元素,无法定位webview元素

这时候我们使用UC开发者工具定位WebView元素:


4.未完待续
APP自动化之Hybrid自动化解决方案(七)的更多相关文章
- 【Hybrid App】关于Hybrid App技术解决方案的选择
[引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员,技术成熟度,时间,项目需求等一堆的因素.因此,开发App的方案已经变得越来越多 ...
- 招聘移动APP、接口、自动化、性能和安全方面的兼职测试讲师
只要您在移动APP.接口.自动化.性能和安全方面有丰富的测试经验,我们都欢迎您能加入我们,成为我们的兼职测试讲师,我们可以提供给您一份优厚的薪资,同时能在行业发展.企业培训.授课经验.出版专业著作等方 ...
- 基于Jmeter跟Jenkins的自动化性能测试的一站式解决方案(转)
www.MyException.Cn 网友分享于:2015-08-26 浏览:0次 基于Jmeter和Jenkins的自动化性能测试的一站式解决方案 作者: Yu, Qingguo Shen, ...
- Delphi APP 開發入門(七)通知與雲端推播
Delphi APP 開發入門(七)通知與雲端推播 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀次數: ...
- 接口自动化与UI自动化两者的可行性
1.首先接口测试是跳过前端界面对服务端的测试,UI测试是对前端界面的测试,从分层测试的角度考虑,两者不应该是可以互相取代的关系. 2.从公司开展自动化的的角度考虑,可以重点关注这个项目开展接口自动 ...
- 手机APP无法抓包HTTPS解决方案
问题表现:某个APP的HTTPS流量抓取不到,Fiddler报错,但可以正常抓取其它的HTTPS流量 可能原因: 1.Flutter应用,解决方案:https://www.cnblogs.com/lu ...
- 前端工作流程自动化——Grunt/Gulp 自动化
什么是自动化 先来说说为什么要自动化.凡是要考虑到自动化时,你所做的工作必然是存在很多重复乏味的劳作,很有必要通过程序来完成这些任务.这样一来就可以解放生产力,将更多的精力和时间投入到更多有意义的事情 ...
- web端自动化——Selenium3+python自动化(3.7版本)-火狐62版本环境搭建
前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...
- web端自动化——Selenium3+python自动化(3.7版本)-chrome67环境搭建
前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...
随机推荐
- 浏览器+css基础+选择器+权重+匹配规则
浏览器的组成: shell+内核 shell:用户能看得到的界面就叫shell 内核:渲染rendering引擎和js引擎 现在主流拥有自己开发内核的浏览器:opera现在属于360和昆仑万维 CSS ...
- postgresql批量插入copy_from()的使用
在批量插入postgresql时想使用同Mysql的语法时发现并不能使用: cursor.executemany("INSERT INTO persons VALUES (%d, %s, % ...
- 「含源码」关于NXP IMX8 Mini的图形开发指南(GPU)案例分享!
前言 Graphical Demo框架提供了对平台相关依赖的抽象.Graphical应用的通用封装,如模型加载.纹理加载.着色器编译等,以及其它一些通用的应用逻辑处理的封装,使得使用框架的开发人员(以 ...
- P6775-[NOI2020]制作菜品【贪心,dp】
正题 题目链接:https://www.luogu.com.cn/problem/P6775 题目大意 \(n\)种原材料,第\(i\)个有\(d_i\)个,\(m\)道菜品都需要\(k\)个原料而且 ...
- AT2164-[AGC006C]Rabbit Exercise【差分,倍增,数学期望】
正题 题目链接:https://www.luogu.com.cn/problem/AT2164 题目大意 \(n\)只兔子编号为\(1\sim n\),第\(i\)只在坐标轴\(x_i\)处.然后\( ...
- @Valid注解的一点理解
@Valid注解存在于spring-boot-starter-web包下,只要项目中存在该依赖就无需自行导入,也就是说该注解适用于springboot项目此注解用于表单验证,简化了判断代码用法:格式如 ...
- 重新整理 .net core 周边阅读篇————AspNetCoreRateLimit 之规则[二]
前言 本文和上文息息相关. https://www.cnblogs.com/aoximin/p/15315102.html 是紧接着上文invoke来书写的,那么现在来逐行分析invoke到底干了啥. ...
- 1. SSTI(模板注入)漏洞(入门篇)
好久没更新博客了,现在主要在作源码审计相关工作,在工作中也遇到了各种语言导致的一些SSTI,今天就来大概说一下SSTI模板注入这个老生常谈的漏洞 前言 模板引擎 模板引擎(这里特指用于Web开发的模板 ...
- Linux Manual
man 命令用来访问存储在Linux系统上的手册页面.在想要查找的工具的名称前面输入man命 令,就可以找到那个工具相应的手册条目. 手册页不是唯一的参考资料.还有另一种叫作 info 页面的信息.可 ...
- 这部分布式事务开山之作,凭啥第一天预售就拿下当当新书榜No.1?
大家好,我是冰河~~ 今天,咱们就暂时不聊[精通高并发系列]了,今天插播一下分布式事务,为啥?因为冰河联合猫大人共同创作的分布式事务领域的开山之作--<深入理解分布式事务:原理与实战>一书 ...