一.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应用自动化的更多相关文章

  1. Android Hybrid App自动化测试实战讲解(基于python)

    1.Hybrid App自动化测试概要 什么是Hybrid App? Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App ...

  2. H5混合应用之上下文切换

    一.native/web/hybrid 简介 目前主流应用程序大体分为:Native App(原生应用).Web App(网页应用).Hybrid App(混合应用),它们三者的优缺点比较如下表: 应 ...

  3. APP自动化之Hybrid自动化解决方案(七)

    基于UIAutomator+ChromeDriver模式(UIAutomator安卓原生引擎) 原理:native(原生)部分使用UIAutomator,webview部分使用ChromeDriver ...

  4. 进击的Hybrid App,量身定做缓存机制

    引用张图,简单粗俗的解释下 Native App.Web App 和 Hybrid App Navtie App: 使用平台系统提供的原生语言来编写的 App,如果Android用java,ios用o ...

  5. Appnium移动自动化框架初探

    作者:cryanimal QQ:164166060 本文简要介绍了appnium自动化框架的架构.加载流程.支持语言.相关配置,以及元素定位工具等. 官方网站: http://appium.io Ap ...

  6. 前端工作流程自动化——Grunt/Gulp 自动化

    什么是自动化 先来说说为什么要自动化.凡是要考虑到自动化时,你所做的工作必然是存在很多重复乏味的劳作,很有必要通过程序来完成这些任务.这样一来就可以解放生产力,将更多的精力和时间投入到更多有意义的事情 ...

  7. 移动端混合型App(hybrid app)自动化测试选型与实践

    背景 公司产品的业务已经发展到了移动端,开发选型已经结束,决定使用phonegap做移动端的web应用开发平台.考虑到业务的复杂与多样,移动端的测试同样需要自动化.在网上看了很多,最终锁定了3个移动端 ...

  8. 【腾讯优测干货分享】微信小程序之自动化亲密接触

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/HcPakz5CV1SHnu-U8n85pw 导语 山雨欲来风满楼,最 ...

  9. Appium移动自动化框架初探

    作者:cryanimal QQ:164166060 本文简要介绍了appnium自动化框架的架构.加载流程.支持语言.相关配置,以及元素定位工具等. 官方网站: http://appium.io Ap ...

  10. app自动化问题点整理

    1.配置SDK环境发现adb无法生效: 解决方案: 这个问题一般就是你的环境变量没有配置好,很多同学比较容易出现的点就是win10系统的环境变量配置: 一定要注意打开path添加:%ANDROID_H ...

随机推荐

  1. CDN在互联网直播中的运用与性能优化

    本文分享自天翼云开发者社区<CDN在互联网直播中的运用与性能优化>,作者:不知不觉 随着互联网技术的不断发展,互联网直播已成为人们获取信息.娱乐.学习等多种需求的重要途径之一.然而,在直播 ...

  2. flutter-真机调试ios Traceback (most recent call last)

    1 Traceback (most recent call last): 2 File "/tmp/C5FDB25B-C7F4-462E-8AC9-7FF9D1A50F21/fruitstr ...

  3. 深入浅出理解Continuous Queries和Cypher Query Language

    1. 什么是Continuous Queries? 连续查询是 Drasi 最重要的组件.它们是您告诉 Drasi 要在源系统中检测哪些更改以及检测到更改时要分发的数据的机制.源为订阅的 Contin ...

  4. [THUWC2017] 在美妙的数学王国中畅游 题解(内附求导小技巧)

    事实证明物竞笔记是个好东西,可惜没带,不然还能谎称自己会一点求导和微积分. 顺便在这里把比较经典的一些关于求导的东西记录一下: 常用函数求导: \(C'=0,(x^n)'=nx^{n-1},(\log ...

  5. JS实现隐藏手机号码中间4位数

    代码COPY 3. 使用正则 function geTel(tel){ var reg = /^(\d{3})\d{4}(\d{4})$/; return tel.replace(reg, " ...

  6. 用 Emacs 写代码有哪些值得推荐的插件

    以下是一些用于 Emacs 写代码的值得推荐的插件: Ido-mode:交互式操作模式,它用列出当前目录所有文件的列表来取代常规的打开文件提示符,能让操作更可视化,快速遍历文件. Smex:可替代普通 ...

  7. Docker 容器的数据卷 以及 数据卷容器

    Docker 容器删除后,在容器中产生的数据还在吗? 答案是 不在 Docker 容器和外部机器可以直接交换文件吗? 在没有数据卷的情况下,答案是 不可以 如下图:外部机器:Windows系统(自己的 ...

  8. Spark core 总结

    Spark RDD五大特性 1.RDD由一组partition组成 2.每一个分区由一个task来处理 3.RDD之间有一些列依赖关系 4.分区类算子必须作用在kv格式得RDD上 5.spark为ta ...

  9. Windows 提权-MSSQL

    本文通过 Google 翻译 MSSQL – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充. 导航 0 前言 ...

  10. 多版本Java 配置记录

    来自 https://blog.csdn.net/zdl177/article/details/105246997 起因是为了启动MC 目录结构 Java总目录下放置多个jdk目录(jdk16.0.2 ...