Appium python自动化测试系列之混合app实战(十一)

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说的函数封装是不是起到作用了呢?这里给大家留一个思考题,如果做到高效的封装。

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

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

时间: 2024-10-08 04:12:56

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

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

10.1.1 页面滑动原理分析 在页面滑动查找章节我们就讲了滑动的知识点,只是不知道大家是否有认真练习以及去理解,如果你认真练习.理解了那么我相信这一章节的东西不用看也能够完成,下面我们还是简单分析一下. 所谓的页面滑动在我们实际操作手机的过程中就是不断的从屏幕的下面滑到上面,或者右边滑到左边,反之亦然.其实在做自动化滑动的时候我们遵循的也是这个道理,我们只需要按着一个点然后在屏幕上拖动到另外一个点就行,这就实现了一个简单的滑动.还不懂?回去看第六章的滑动定位吧. 10.2 常见页面滑动方式实战

Appium python自动化测试系列之日志的收集(十二)

?13.1 日志的定义 13.1.1 日志的定义 听到日志这个东西可能有的人莫名其妙,第一次接触就会觉得我们为什么要收集日志,即使要收集日志那么我们需要收集哪些日志,日志的作用是什么等等. 其实日志无论是在测试.开发中都非常重要,如果你在跑自动化时程序报错了,但是你没有日志你怎么去定位时程序错误还是你app的错误?或者还是其它环境因素? 在java中有log4j这日志模块,在python里面我们使用的是logging这个模块,这个模块不需要你去怎么下载安装等等,python自带的有,你只需要拿来

Appium python自动化测试系列之使用HTMLTestRunner生成测试报告(十三)

?13.1 测试报告概述 13.1.1 测试报告的定义 在前面章节我们已经讲了自动化基础的很多东西,如果说掌握了,而且自己动手去练习了,我相信在一些初级的面试中是没任何问题的,今天我们接触的应该算是一个比较新的东西,也算是开启另一层知识的大门. 在手工测试过程中如果发现了bug我们需要提交测试报告,自动化中虽然当程序出错的时候我们不可能让程序自动去提交bug(其实也可以,只是需要自己去开发模块,思路:当程序监听到错误的时候就触发一个提交bug的程序),但是为了体现工作的价值当自动化跑完之后是不是

RF+Appium框架自动化测试系列一之(Mac下Appium环境搭建)万事开头难

Mac下Appium环境搭建: 消失了3个月,有一段时间没来园子更新博客了,各位看官见谅哈哈,消失是因为TestYao刚换了工作环境没外网,好多笔记没能及时的记录分享,以后有时间慢慢补上吧,这段时间主要接触了移动端app的自动化测试,公司为了快速把移动端自动化这块搞起来,试用几款目前流行的工具,腾讯的xtest定制版.神州数码的自动化测试平台.开源rf+appium框架. 经过一段试用最终还是选择了rf+appium主要原因有: 1.开源,网上社区活跃 2.扩展性强,针对不同项目不同的需求,封装

React Native电商项目实战混合APP开发 React Native实战 混合APP实战开发

React Native  和 angular+ionic 是目前网络上最火的混合APP开发语言,其功能强大能够开发出安卓和IOS程序! ------------------课程目录------------------ <React Native电商项目实战>├<01React Native初体验>│  ├01-React Native简介.mp4│  ├02-React Native环境搭建.mp4│  ├03-React Native初体验及其它环境搭建.mp4│  └04-R

Appium+Python自动化测试(二)——运行App程序示例

在上一篇博客中,已经将环境搭建好了.现在,我们利用搭建的环境来运行一条测试脚本,脚本中启动一个计算器的应用,并实现加法的运算. 创建模拟器 在运行App之前,首先需要创建一个Android模拟器,也可以使用真机来运行,效果更佳. 进到Android SDK的目录,双击运行AVD Manager.exe 点击Create创建一个Android模拟器 输入一个模拟器名称,选择设备类型和API版本,点击进行创建.创建完成后会显示当前所有的设备,选择设备,点击Start启动 第一次启动的时候会有点慢,要

appium+python自动化47-首次打开app权限弹窗问题

前言 用真机运行appium代码,首次打开app有的手机会出现权限弹窗问题,一般这种弹窗都是在引导页前面或者引导页后面出现.权限弹窗上面的按钮都是固定的,只需要定位到"始终允许"按钮,点击确定就可以了.还有一个问题是这种弹窗的个数不确定,有的app是2个有的是3个,为了解决这个问题,可以专门写个判断方法.注意:模拟器是不会有这种权限弹窗的 环境:appium 1.8android 7.0美团app 权限弹窗 1.以美团app为案例,安装app首次启动的时候,在引导页出现权限弹出框,如下

Windows&amp;Appium&amp;Python自动化测试-Appium安装

一.安装node.js 官方下载地址为:https://nodejs.org/en/download 傻瓜式安装即可,安装完成后,CMD中运行node -v查看版本号 输入npm 出现如上图信息,表示 node.js 安装成功.npm 是一个 node 包管理和分发工具,有了 npm,后面就可以输入指令在线安装 appium """ 此处内容无需执行,仅供参考,虽然也可以实现,但后边内容给了更好方式 安装appium服务端,可通过cmd 下输入 npm install -g

Appium&amp;Python自动化测试-环境搭建之安卓SDK

一.安装包工具准备: jdk1.8.0(64 位) installer_r24.4.1-windows-androidSDK 二.JDK的安装及配置 官方下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选中"Accept License Agreement",下载所需版本即可,这里下载的是"Windows x64"的版本,安装过程建议使