12.1 什么是混合App

12.1.1 混合app定义

  什么是混合app,其实这个不言而喻,我们的app正常来说应该都是native的,但是实际工作中却不是,反正种种原因我们的app会有native的而且中间还会有H5页面,这其实就是我们常说的混合,当然还有一种就是纯H5的,但是这里我们不做过多的讲解。

12.2 混合app实战思路

12.2.1 代码实战

  在前面的的章节内嵌h5页面定位我们就已经讲过这个问题,其实本讲的内容大家可以仔细把定位的内嵌h5定位问题再回顾一遍那么你就能够理解这里面的东西,这里会有一个问题是,在我们的app自动化中和web自动化中会有一些区别,这里一些api的用法上需要注意一下。下面我们还是来看一个流程,看下面两张图片:

第一张图片是我们app的原生页面:

第二张图片是我们的webview的界面:

我们在前面的章节讲过如果我们需要从第一个页面切换到第二个页面的时候我们需要进行“context”的切换,只有当我们切换了之后才能够进行进一步对该页面进行操作,看下面代码:

def view(self):#获取当前页面所有的contexts
time.sleep(5) webview = self.driver.contexts
#在获取到的contexts list里面去挨个循环
for context in webview:
#判断循环中单个的context是否是webview,如果是就进行切换,并且跳出循环
if 'WEBVIEW' in context:
self.driver.switch_to.context(context)
break
self.driver.find_element_by_link_text('JAVA').click()

到目前为止我们是不是就能够很轻松自由的操作app内嵌的H5页面了呢。动手操作一下

备注:如果你用真机一直无法切换,不要激动这个很正常,用模拟器试一试,因为真机有很多限制,你可以尝试root后去试一试。

12.3 混合app实战

  上面的知识我相信大家很容易都懂了,但是在实际操作中大家会遇见一个起码的问题,上面问题看我们下面讲解,在我们正常的操作情况下我们是不是操作完第二个页面是否应该关闭该页面然后直接去操作其它页面呢?于是乎就有了我们下面的代码:

def view(self):#获取当前页面所有的contexts
time.sleep(10) webview = self.driver.contexts
#在获取到的contexts list里面去挨个循环
for context in webview:
#判断循环中单个的context是否是webview,如果是就进行切换,并且跳出循环
if 'WEBVIEW' in context:
self.driver.switch_to.context(context)
break
self.driver.find_element_by_link_text('JAVA').click()
#关闭按钮定位
self.driver.find_element_by_id("cn.com.open.mooc:id/left_icon").click

  动了手的小伙伴就知道问题了,你们无论如何都操作不了这个关闭按钮或者是关闭了操作不了其他页面的元素,上面的代码无论如何到关闭的时候都报错,对吧!但是你仔细思考会发现,我们前面讲了在我们从原生的app中切换到h5页面的时候都经过了切换,那么现在的driver是不是还是处于h5的呢?思考思考思考!!!你driver都还在h5家里,然后你让他去操作原来家里的东西能行吗?答案肯定是否定的,所以这个时候你又需要将driver切换到原来的driver。

思考:如果你的app有超级多的h5 页面然后在测试过程中你是不是需要进行不断的切换?麻烦吗?肯定啊。你每次切换都需要去写这个方法你不嫌弃累我都嫌弃累。so,我们这里是不是需要思考解决方案?那么之前我们python说的函数封装是不是起到作用了呢?这里给大家留一个思考题,如果做到高效的封装。

备注:这个在工作中经常用到,大家一定去动手练习一下这个思考题。

提示:笨一点的方法是封装成两个方法,好一点封装成一个方法,然后通过传递参数的形式去实现。

Appium python自动化测试系列之混合app实战(十一)的更多相关文章

  1. Appium python自动化测试系列之自动化截图(十一)

    11.1 截图函数的正常使用 11.1.1 截图方法 无论是在手动测试还是自动化测试中场景复现永远是一个很重要的事情,有时候一些问题可能很难复现,这个都需要测试人员对bug有很高的敏感度,在一般的情况 ...

  2. Appium python自动化测试系列之等待函数如何进行实战(九)

    ​9.1 等待函数的使用 9.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个 ...

  3. Appium python自动化测试系列之滑动函数封装实战(八)

    8.1 什么是函数的封装 教科书上函数的封装太官方,我们这里暂且将函数的封装就是为了偷懒把一些有共性的功能或者一些经常用的功能以及模块放在一起,方便我们以后再其他地方调用.这个只是个人的理解所以大家懂 ...

  4. Appium python自动化测试系列之元素的定位(六)

    ​6.1 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个 ...

  5. Appium python自动化测试系列之Capability介绍(五)

    ​5.1 Capability介绍 5.1.1 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其 ...

  6. Appium python自动化测试系列之认识Appium(四)

    ​4.1界面认识 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界面的,一种是没有界面的,首先我们先讲一下有界面的,以及界面有哪些东西. 首先看第一幅图,如果你的是win ...

  7. Appium python自动化测试系列之移动自动化测试前提(一)

    1.1 移动自动化测试现状 因为软件行业越来越发达,用户的接受度也在不断提高,所以对软件质量的要求也随之提高,当然这个也要分行业,但这个还是包含了大部分.因为成本.质量的变化现在对自动化测试的重视度越 ...

  8. Appium python自动化测试系列之appium环境搭建(二)

    ​2.1 基础环境搭建 当我们学习新的一项技术开始基本都是从环境搭建开始,本书除了第一章节也是的,如果你连最基础的环境都没有那么我们也没必要去说太多,大概介绍一下: 1.因为appium是支持andr ...

  9. Appium python自动化测试系列之页面滑动原理讲解(十)

    10.1.1 页面滑动原理分析 在页面滑动查找章节我们就讲了滑动的知识点,只是不知道大家是否有认真练习以及去理解,如果你认真练习.理解了那么我相信这一章节的东西不用看也能够完成,下面我们还是简单分析一 ...

随机推荐

  1. java线程池相关知识点总结

    Android中常见到的很多通用组件一般都离不开"池"的概念,如各种图片加载库,网络请求库,即使Android的消息传递机制中的Meaasge当使用Meaasge.obtain() ...

  2. 如何使用Flexbox和CSS Grid,实现高效布局

    CSS 浮动属性一直是网站上排列元素的主要方法之一,但是当实现复杂布局时,这种方法不总是那么理想.幸运的是,在现代网页设计时代,使用 Flexbox 和 CSS Grid 来对齐元素,变得相对容易起来 ...

  3. tomcat The specified JRE installation does not exist

    window->perferences->server->installed runtimes 里tomcat删掉,重新建立服务,再运行

  4. Spring-mvc配置“/”路径过滤问题

    首先大家都知道"/*"可以匹配所有url,包括带扩展名的,一般只用在过滤器上. 一般Spring-mvc的核心 <servlet> <servlet-name&g ...

  5. UVW源码漫谈(番外篇)—— Emitter

    这两天天气凉了,苏州这边连续好几天都是淅淅沥沥的下着小雨,今天天气还稍微好点.前两天早上起来突然就感冒了,当天就用了一卷纸,好在年轻扛得住,第二天就跟没事人似的.在这里提醒大家一下,天气凉了,睡凉席的 ...

  6. JavaScript 框架------------AngularJS(上)

    一.简单了解一下AngularJS AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 ...

  7. RG_5

    必须发博纪念经过昨天的开车, 作业本终于做完啦!!! 可以认真的刷题了.

  8. Java 制作证书的工具keytool用法总结

    一.keytool的概念 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在 ...

  9. 理解及操作环境变量(基于Mac操作)

    通过本文,简单的了解下环境变量及其操作,与便于遇到相关问题时能够准确快捷的解决. 什么是环境变量 An environment variable is a dynamic-named value th ...

  10. 600集Python从入门到精通教程(懂中文就能学会)

    目录大纲: 本套教程15天 1-3   天内容为Linux基础命令 4-13  天内容为Python基础教程 14-15 天内容为 飞机大战项目演练 视频概括: 第一阶段(1-3天): 该阶段首先通过 ...