由于测试的APP是混合应用,即包含了原生代码和web网页。

混合应用在应用程序中嵌入了Webview,Webview是用来访问网页的一个控件。Webview内核也分为原生和第三方(比如腾讯X5内核)

一、获取webview中的页面信息

1、在手机(模拟器)中,设置—关于手机—多次点击版本号,切换到开发者模式

2、处于开发者模式,设置界面会有开发人员选项,然后将USB调试功能开启。

3、在pc端  chrome浏览器中输入 chrome://inspect/#devices 回车。如果此时测试app所在页面是有webview,就会显示网页的链接。点击inspect即可显示网页html

4、首次点击inspect 打开的是空白网页,第一次需要翻墙,google会自动下载一个插件,然后就可以正常显示html

二、切换webview

1、先获取Webview的context

self.driver.contexts()  # 获取所有的contexts。可以用这种方法判断是否有webview。

['NATIVE_APP', 'WEBVIEW_com.tsframework.myapp181296']

self.driver.current_context() # 获取当前页面的context

NATIVE_APP

2、#切换到Webview的context

self.switch_to('com.tsframework.myapp181296')

三、切换webview遇到的问题及解决方法

在实际测试过程中,出现了在执行self.switch_to('com.tsframework.myapp181296') 时,程序停住,不往下继续执行。查看appium日志发现,报错 chrome not reachable

1、替换对应的chromedriver,

从chrome://inspect/#devices 可以看到 webview版本是44,然后下载对应chrome版本为44 的chromedriver版本,替换到appium中。

路径如下:E:\Appium\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win(appium默认到这个路径下获取chromedriver)

或者指定chromedriver的路径

desired_caps['chromdriverExecutable']=path  ##chromdriverExecutable:指向webdriver executable的绝对本地路径

2、修改如下配置

desired_caps['chromeOptions']={'androidProcess':"com.tsframework.myapp181296"}

可参考:https://testerhome.com/topics/6954

Appium 学习二:切换Webview的更多相关文章

  1. Python+Appium学习篇之WebView处理

    1.认识WebView 实例说明: 当你打开百度阅读APP→VIP全站去广告→用自带的 UI Automator去定位里面的元素,如图: 不管你去定位  '规则详情'  '开通'等等,都会定位不到,只 ...

  2. Appium Hybrid混合应用测试——Native切换WebView

    Appium Hybrid混合应用测试过程中,经常需要在Native和WebView之间进行切换: 1.切换至WEBVIEW操作: for cons in driver.contexts: if co ...

  3. Appium Hybrid混合应用测试——Native切换WebView , 切换不了WebView (没有试过,先记录在此)

    Appium Hybrid混合应用测试过程中,经常需要在Native和WebView之间进行切换: 1.切换至WEBVIEW操作: for cons in driver.contexts: if co ...

  4. 【Mac + Appium + Python3.6学习(二)】之Android自动化测试,appium-desktop配置和简易自动化测试脚本

    上一篇文章介绍安装appium测试环境,这一片研究介绍如何测试Android自动化. 上一篇地址:<[Mac + Appium学习(一)]之安装Appium环境> 这一篇参考:<Ma ...

  5. Appium切换webview时候报chromedriver版本问题

    前言 用appium切换webview的时候报chrome和chromedriver版本的问题:session not created exception: Chrome version must b ...

  6. Appium 解决微信公众号、小程序切换 webview 后无法定位元素的问题

    如何切换webview进入小程序请参考https://testerhome.com/topics/12003 脚本思路:进入webview后会存在多个handle同Web页签一样,获取所有的handl ...

  7. Appium学习实践(二)Python简单脚本以及元素的属性设置

    1.简单的Python脚本 Appium中的设置与Appium学习实践(一)简易运行Appium中的一致 Launch后,执行脚本 #coding:utf-8 import unittest impo ...

  8. 『与善仁』Appium基础 — 28、webview的操作方式

    目录 1.先了解什么是Hybrid(混合) 2.识别Webview 3.context上下文 4.Webview和原生页面之前的切换 5.综合练习 我们之前说过的所有操作,都是对原生页面的操作. 在手 ...

  9. Appium学习实践(三)测试用例脚本以及测试报告输出

    之前Appium学习实践(二)Python简单脚本以及元素的属性设置中的脚本,会有一个问题,就是在每个测试用例完成之后都会执行tearDown,然后重新setUp,这样导致脚本的执行效率偏低,而且会有 ...

随机推荐

  1. Linux装agent

    解压Linux.zip  Linux的负载机链接:https://pan.baidu.com/s/1yrmsT3PYfuL9Wlh4FEYxaA 密码:s72n unzip Linux.zip chm ...

  2. 网络编程-----IO

    IO模型介绍 阻塞IO 非阻塞 多路复用 异步 IO模型比较分析 selectors 阻塞IO:之前写的所有的socket,recv,accput都是 阻塞原理: 其实多数时间多用到了等待数据那里. ...

  3. 2.python发展历程

    创始人:吉多·范罗苏姆于1989年圣诞节在阿姆斯特丹编写 python分为: python 2.X python 3.X 使用python的公司: 豆瓣.BT.Dropbox.YouTube.Quor ...

  4. 【mysql】Mgr实现数据库高可用架构

    转载:https://www.cnblogs.com/luoahong/articles/8043035.html MGR简介 MySQL Group Replication(下简称:MGR)是MyS ...

  5. bootstrap modal 移除数据

    有时业务需求,在弹出模态框时需要动态的展示,但是不做处理时,每次弹出的都是第一次的数据,所以需要监听模态框关闭,每次关闭需要先清除里面的数据. //监听弹页关闭 $("#myModal&qu ...

  6. 《Linux内核原理与设计》第五周作业

    使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 方法一:使用库函数API在屏幕上显示进程的ID 先在实验楼中打开XFCE,在目录下输入指令: vi getpid.c;新建并打开get ...

  7. MySQL 批量添加

    自己封装的一个批量添加. $data 是一个二维数组.key对应是数据表的字段名: /** * 批量创建 * @param array $data * @return int $res 影响行 * @ ...

  8. [蓝桥杯]PREV-10.历届试题_幸运数

    问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的“筛法”生成 . 首先从1开始写出自然数1,,,,,,.... 就是第一个幸运数. 我们从2这个数开始.把所有序号能被2整除的项删除,变 ...

  9. WINDOWS NT操作系统的注册表文件

    WINDOWS NT操作系统的注册表文件 WINDOWS NT注册表文件分为系统文件和用户文件两类. 系统设置和缺少用户 配置数据存放在系统C:\Windows\System32\config文件夹下 ...

  10. Centos7在单用户模式下重置root密码

    1.启动Centos7 ,按空格让其停留在如下界面: 鼠标上下可以选择启动内核,默认选择第一个内核开机 2.按e键进入编辑模式 e 按下e键后我们可能无法看到我们需要编辑的区域,这是因为在较新版本的C ...