目录

问题思考

解决思路

context

WebView

H5元素定位环境搭建

操作步骤

Webview 调试模式检查与开启方式

H5定位实践案例


问题思考

在混合开发的App中,经常会有内嵌的H5页面。那么这些H5页面元素该如何进行定位操作呢?

解决思路

针对这种场景直接使用基于Andriod原生控件进行元素定位是行不通的,Web网页是单独的B/S架构,两者的运行环境不同因此需要进行上下文(context)切换,然后对H5页面元素进行定位操作。

context

在程序中context我们可以理解为当前对象在程序中所处的一个环境。 比如App一个界面是属于Activity类型,也就是Android界面环境,但是当访问内嵌的网页是属于另外一个环境(网页环境),两者处于不同的一个环境。

WebView

WebView是Android系统提供能显示网页的系统控件,它是一个特殊的View,同时它也是一个ViewGroup,可以有很多其他子View。

H5元素定位环境搭建

资源下载

  • Chrome PC浏览器: 官网下载地址
  • 手机版 Chrome
  • Chrome driver: 下载地址    (注:chrome driver要与Chrome的版本对应:ChromeDriver版本与Chrome版本对应表)
  • 夜神模拟器
  • dr.fone app 3.2.0 (被测试app)

操作步骤

1、手机与电脑连接,开启USB调试模式,通过adb devices可查看到此设备。

2、电脑端、移动端必须安装chrome浏览器(尽量保证移动端chrome版本与PC端一致),根据对应的Chrome浏览器版本安装对应的Chrome driver

3、App Webview开启debug模式

4、在电脑端Chrome浏览器地址栏输入chrome://inspect/#devices,进入调试模式

  • 此时页面显示了手机型号、驱动名称、APP要调试的WebView名称
  • 点击inspect,若成功加载与APP端相同界面的调试页面,则配置成功

5、执行测试脚本

Webview 调试模式检查与开启方式

1、检查方式:

打开app对应的h5页面,在 chrome://inspect/#devices 地址中,检查是否显示对应的webview,如没有,则当前未开启调试模式。

2、开启方式:

在app中配置如下代码(在WebView类中调用静态方法setWebContentsDebuggingEnabled):

if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {  WebView.setWebContentsDebuggingEnabled(true);

注:此步骤,一般需要App开发人员开启。

H5定位实践案例

1、测试场景

启动dr.fone app 进入backup H5页面中的输入邮箱并点击提交,然后返回

2、代码实现

from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWaitdesired_caps={}
desired_caps['platformName']='Android'
desired_caps['deviceName']='127.0.0.1:62025'
desired_caps['platformVersion']='4.4.2'desired_caps['app']='/Users/frank/Desktop/MonkeyRunner/dr.fone3.2.0.apk'
desired_caps['appPackage']='com.wondershare.drfone'
desired_caps['appActivity']='com.wondershare.drfone.ui.activity.WelcomeActivity'driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(5)print('click BackupBtn')
driver.find_element_by_id('com.wondershare.drfone:id/btnBackup').click()WebDriverWait(driver,8).until(lambda x:x.find_element_by_id('com.wondershare.drfone:id/btnRecoverData'))
print('click NextBtn')
driver.find_element_by_id('com.wondershare.drfone:id/btnRecoverData').click()WebDriverWait(driver,8).until(lambda x:x.find_element_by_class_name('android.webkit.WebView'))
contexts=driver.contexts
print(contexts)#需android4.4及以上版本的系统中才会输出更多的webview
print('switch conetext')
driver.switch_to.context('WEBVIEW_com.wondershare.drfone')
print('edit email')
driver.find_element_by_id('email').send_keys('shuqing@wondershare.cn')
print('click sendBtn')
driver.find_element_by_class_name('btn_send').click()#切换context 点击返回
driver.switch_to.context('NATIVE_APP')
driver.find_element_by_class_name('android.widget.ImageButton').click()

3、报错&解决方案

报错1

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException:Message: An unknown server-side error occurred while processing the command.
Original error: Failed to start Chromedriver session: A new session could not be created.
(Original error: session not created exception: Chrome version must be >= 60.0.3112.0

报错2

error: Chromedriver: Chromedriver exited unexpectedly with code null, signal SIGTERM

【解决方案】

下载对应版本的chromedriver驱动,放置在: {Appium path}\node_modules\appium\node_modules\appium-chromedriver\chromedriver\mac 替换即可

— The End —

欢迎阅读,希望对你有所帮助~~

Appium H5自动化测试相关推荐

  1. Appium移动自动化测试(三)--安装Android模拟器(转)

    Appium移动自动化测试(三)--安装Android模拟器 2015-06-08 10:33 by 虫师, 30828 阅读, 9 评论, 收藏, 编辑 当Android SDK安装完成之后,并不意 ...

  2. Appium移动自动化测试(一)--安装Appium(转)

    Appium移动自动化测试(一)--安装Appium 2015-05-30 17:48 by 虫师, 70668 阅读, 13 评论, 收藏, 编辑 Appium 自动化测试是很早之前就想学习和研究的 ...

  3. python+appium实现自动化测试的示例代码

    更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn.com p ...

  4. 视频教程-Appium移动自动化测试框架-软件测试

    Appium移动自动化测试框架 河北师大软件学院测试教室主任.项目基地测试经理;尚大学.金牌讲师.擅长技术: 项目模块化流程设计.软件测试流程设计及优化.项目管理平台的整合与应用.功能性自动化测试工具 ...

  5. Appium+Python 自动化测试一之:环境安装(Android篇)

    目前网上有大量Appium+Python的APP自动化测试的资料,这里我只是记录一下自己安装的过程,好让自己以后忘记的时候再翻起来看看,快速上手,不想再像之前那样踩坑. 注:因为之前玩过Robot F ...

  6. Windows实现appium+iOS自动化测试

    在前面的文章介绍了Windows上安装配置tidevice,环境搭建好后就实现了在Windows运行iOS自动化的第一步,接下来本文重点介绍在Windows上如何运行iOS自动化测试. 如果没有安装好 ...

  7. python appium自动化测试平台开发,Python+Appium实现自动化测试

    一.环境准备 1.脚本语言:Python3.x    IDE:安装Pycharm 2.安装Java JDK .Android SDK 3.adb环境,path添加E:\Software\Android ...

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

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

  9. Appium移动自动化测试-----(一)Appium介绍

    1.特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. "移动原生应用"是指那些用iOS或者 Androi ...

最新文章

  1. CSS Hack-清除浮动的最简单写法V2010-08
  2. java9-7 成员内部类的修饰符
  3. 002_centos7上安装mysql8
  4. Kotlin when 流程判断
  5. JQuery选择器中的属性筛选
  6. eclipse java maven_java – 非常轻量级的Eclipse-Maven集成 – 仅...
  7. TCP/IP 协议栈 -- 编写UDP客户端注意细节
  8. Ext.chart.Chart 显示图标 -- 本地数据
  9. 笔记:AIX系统/var/adm/wtmp大文件处理
  10. RK3128功能介绍
  11. 安卓手机app开发之微信app支付【绝对干货】h5打包apk调用微信app支付不再困惑
  12. ESP8266 WIFI模块
  13. 百度搜索下拉框,下拉菜单怎么做?如何刷?
  14. 学习笔记 Tianmao 篇 materialRefreshLayout 下拉刷新 控件的使用
  15. html三角形正方形代码,用CSS画三角形,纯CSS绘制三角形的代码
  16. intel edison 设置wifi自动连接
  17. 甘油三酯偏高的原因与治疗方法
  18. 方舟服务器在线人数查询软件,软件用户使用及在线人数统计无需服务器
  19. 直播新红海,狼人杀火爆背后的实时语音视频技术 | 深度
  20. python内建函数是什么意思_python、什么是内建函数?

热门文章

  1. 信创培训第一课:linux操作系统基础
  2. 单相串励电机和三相交流异步电机在高空作业平台中的应用
  3. Android animation呼吸动画 心形动画
  4. starUML4.0导出的图片去除水印的方法
  5. 用c语言实现打印乘法口诀表
  6. MapReduce入门(一)—— MapReduce概述 + WordCount案例实操
  7. 计算机的基础配置,教你认知电脑基本配置
  8. 美团点评CodeM编程大赛-题二
  9. ETHEREUM PET SHOP
  10. LVM挂盘的详细操作