1.Hybrid App自动化测试概要

什么是Hybrid App?

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

它虽然看上去是一个Native App,但只有一个UI WebView,里面访问的是一个Web App,比如街旁网最开始的应用就是包了个客户端的壳,其实里面是HTML5的网页,后来才推出真正的原生应用。再彻底一点的,如掌上百度和淘宝客户端Android版,走的也是Hybrid App的路线,不过掌上百度里面封装的不是WebView,而是自己的浏览内核,所以体验上更像客户端,更高效。

Hybrid App同时使用网页语言与程序语言开发,总体特性更接近Native App但是和Web App区别较大。只是因为同时使用了网页语言编程,所以开发成本和难度比Native App要小很多。因此说,Hybrid App兼具了Native App的所有优势,也兼具了Web App使用HTML5跨平台开发低成本的优势。

使用python驱动Appium测试Hybrid APP的流程如下图,和Native App相同的是,Hybrid APP原生的自动化框架Selendroid也是基于Java语言开发的;

2.Appium基于Selendroid的原理、元素识别工具、脚本设计原则--SLOVE原则

2.1,Appium原理

2.2,Selendroid架构

2.3,元素识别工具

Web App页面部分使用Chrome Inspector;Java实现的框架部分仍然可以使用UIAutomatorviewer来定位;

2.4,脚本设计原则

2.5,以下图为例进行后面的介绍

3.基于Appium的Hybrid App自动化环境差异

3.1,Appium的配置如图1;

为什么要添加测试app的路径呢?

因为Selendroid是需要把测试app重签名的,既然要进行重签名,那就需要有一个app包在;appium会根据这个路径来把app进行重签名

4.Hybrid App自动化脚本的实现

4.1,脚本的初始化部分

如图2,初始化部分,Hybrid App比Native App多了一个“automationName”=“Selendroid”;Native App初始化时使用的是默认的automationName,即appium,可以省略不写;

4.2,脚本的编写部分

如图3,包含了2种定位方式,一种是通过UIAutomaterviewer,一种要借助于Chrome浏览器的Inspector工具;

如图4,测试app启动后先进入一个搜索界面;

如图5,测试app顶端的搜索框和clear、search两个button都是Native框架部分,仍然可以用UIAutomaterviewer来定位;

如图6,整个搜狗搜索的主页是一个元素,名字是webkit.WebView,也就是所整个主页是一个WebView,此时就不能通过UIAutomatorviewer来定位了;

如图7、8、9,展示了通过Chrome浏览器的Inspector工具来获取元素Xpath的步骤;

如图10,可以通过返回结果的第一条作为判断脚本是否跑成功的依据;

如图11,print self.driver.contexts的输出结果是[u'NATIVE_APP',u'WEBVIEW_0'],说明当前页面既有NATIVE实现部分,也有WEBVIEW实现部分;

5.Appium其他相关API的介绍与实践

上面的脚本实现过程用到了如下的API:

 

下面通过脚本介绍find_elements_by_xpath()的用法,如图12:

如图13、14,webview页面中,推搜部分的xpath是表格形式的,可以通过“tr/td”来定位所有的推搜元素;

如图15,可以在控制台中看到输出了推搜的文案,说明脚本执行成功了。

以上,简单介绍了Android Hybrid App自动化测试,希望对看到本篇的人有所帮助。

Android Hybrid App自动化测试实战讲解(基于python)的更多相关文章

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

    1.Native App自动化测试及Appuim框架介绍 android平台提供了一个基于java语言的测试框架uiautomator,它一个测试的Java库,包含了创建UI测试的各种API和执行自动 ...

  2. Android Native App自动化测试实战讲解(下)(基于python)

    6.Appuim自动化测试框架API讲解与案例实践(三) 如图1,可以在主函数里通过TestSuite来指定执行某一个测试用例: 6.1,scroll():如图2 从图3中可以看到当前页面的所有元素r ...

  3. Android App自动化测试实战(基于Python)(三)

    1.Native App自动化测试及Appuim框架介绍 android平台提供了一个基于java语言的测试框架uiautomator,它一个测试的Java库,包含了创建UI测试的各种API和执行自动 ...

  4. [目录]hybrid app 开发实战(基于ionic,cordova,angularjs)

    序:为什么要写这个系列 第一章:hybrid app开发之技术选型 第二章:ionic,cordova,phonegap关系浅析 第三章:ionic环境搭建之windows篇 第四章:ionic环境搭 ...

  5. Selenium2自动化测试实战(基于Python语言)— 编写第一个自动化脚本

    实现效果:执行脚本后启动Firefox浏览器后进入百度主页,输入“Selenium”后,单击搜索按钮,最后关闭浏览器的过程(默认安装了Firefox浏览器),如下图所示: 脚本内容如下: # -*- ...

  6. 基于UiAutomator2+PageObject模式开展APP自动化测试实战

    前言 在上一篇<APP自动化测试框架-UiAutomator2基础>中,重点介绍了uiautomator2的项目组成.运行原理.环境搭建及元素定位等基础入门知识,本篇将介绍如何基于uiau ...

  7. Hybrid App开发实战

    Hybrid App开发实战 作者 李秉骏 发布于 九月 04, 2013 | [引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员 ...

  8. 【Hybrid App】Hybrid App开发实战

    [引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员, 技术成熟度,时间,项目需求等一堆的因素.因此,开发App的方案已经变得越来越 ...

  9. Android hybrid App项目构建和部分基本开发问题

    1.首先是选型:Cordova+Ionic Framework,调试测试环境是Ripple Emulator.开发环境其实可以随便选,我个人选择了Eclipse,当然Android SDK+ADT也是 ...

随机推荐

  1. WPF使用总结

    ListboxItemContainer样式 一般items控件的项模板 很容易 设置DataTemplate就可以了,比如listbox .但是在选中和失去焦点的时候 却是Windows自带的那种 ...

  2. 极简科普 1:什么是 VOIP

    VoIP 的全称是 Voice over Internet Protocol.简单说,就是用过 IP 网络进行即时的语音/视频通信.注意,这里只强调了在传输过程中有使用 IP 网络,并没有说只通过 I ...

  3. LOJ.6066.[2017山东一轮集训Day3]第二题(树哈希 二分)

    LOJ 被一件不愉快的小事浪费了一个小时= =. 表示自己(OI方面的)智商没救了=-= 比较显然 二分+树哈希.考虑对树的括号序列进行哈希. 那么每个点的\(k\)子树的括号序列,就是一段区间去掉距 ...

  4. Y1E001 HDI二阶板、三阶板

    简单说一下我的理解: 首先我认为几阶就是几次压合,我习惯用几次压合来形容.. 一阶板我认为就是一次压合,只能打一种机械孔,在表层把 一阶板是最普通的的多层板压合方式. 如下图所示,L2~L3为芯板CO ...

  5. 如何在浏览器中输入(myeclipse创建的项目的)地址访问JSP页面

    如何在浏览器中输入(myeclipse创建的项目的)地址访问JSP页面 可以在Tomcat项目里面查看你的JSP页面在哪里,具体的路径为: tomcat--work--localhost--项目名称, ...

  6. Docker-Compose入门

    转:https://blog.csdn.net/chinrui/article/details/79155688

  7. 4.27Linux(5)

    2019-4-27 15:39:03 学了Linux好几天,发现Linux用着还是很爽 你一定要知道你要干啥!!!! 列一下参考博客: mysql博客地址:https://www.cnblogs.co ...

  8. 关于如何在Visual Studio上仿真调试安卓的U3D应用

    正巧最近需要开发一个安卓手机上的Unity3D游戏功能,想着既然要开发么,当然需要调试.本来的话一些基础功能是不需要使用仿真模拟器,直接在U3D的开发编辑器上就能调试,不过有一些安卓上才能执行,比如 ...

  9. css实现超出两行隐藏

    overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-box-orient:vertical; -webkit-l ...

  10. C语言面试题分类->排序算法

    1.选择排序. 每次将最小的数,与剩余数做比较.找到更小的,做交换. 时间复杂度:O(n²) 空间复杂度:O(1) 优缺点:耗时但内存空间使用小. void selectSort(int *p,int ...