Appium H5自动化测试
目录
问题思考
解决思路
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自动化测试相关推荐
- Appium移动自动化测试(三)--安装Android模拟器(转)
Appium移动自动化测试(三)--安装Android模拟器 2015-06-08 10:33 by 虫师, 30828 阅读, 9 评论, 收藏, 编辑 当Android SDK安装完成之后,并不意 ...
- Appium移动自动化测试(一)--安装Appium(转)
Appium移动自动化测试(一)--安装Appium 2015-05-30 17:48 by 虫师, 70668 阅读, 13 评论, 收藏, 编辑 Appium 自动化测试是很早之前就想学习和研究的 ...
- python+appium实现自动化测试的示例代码
更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn.com p ...
- 视频教程-Appium移动自动化测试框架-软件测试
Appium移动自动化测试框架 河北师大软件学院测试教室主任.项目基地测试经理;尚大学.金牌讲师.擅长技术: 项目模块化流程设计.软件测试流程设计及优化.项目管理平台的整合与应用.功能性自动化测试工具 ...
- Appium+Python 自动化测试一之:环境安装(Android篇)
目前网上有大量Appium+Python的APP自动化测试的资料,这里我只是记录一下自己安装的过程,好让自己以后忘记的时候再翻起来看看,快速上手,不想再像之前那样踩坑. 注:因为之前玩过Robot F ...
- Windows实现appium+iOS自动化测试
在前面的文章介绍了Windows上安装配置tidevice,环境搭建好后就实现了在Windows运行iOS自动化的第一步,接下来本文重点介绍在Windows上如何运行iOS自动化测试. 如果没有安装好 ...
- python appium自动化测试平台开发,Python+Appium实现自动化测试
一.环境准备 1.脚本语言:Python3.x IDE:安装Pycharm 2.安装Java JDK .Android SDK 3.adb环境,path添加E:\Software\Android ...
- Appium python自动化测试系列之Capability介绍(五)
5.1 Capability介绍 5.1.1 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其 ...
- Appium移动自动化测试-----(一)Appium介绍
1.特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. "移动原生应用"是指那些用iOS或者 Androi ...
最新文章
- CSS Hack-清除浮动的最简单写法V2010-08
- java9-7 成员内部类的修饰符
- 002_centos7上安装mysql8
- Kotlin when 流程判断
- JQuery选择器中的属性筛选
- eclipse java maven_java – 非常轻量级的Eclipse-Maven集成 – 仅...
- TCP/IP 协议栈 -- 编写UDP客户端注意细节
- Ext.chart.Chart 显示图标 -- 本地数据
- 笔记:AIX系统/var/adm/wtmp大文件处理
- RK3128功能介绍
- 安卓手机app开发之微信app支付【绝对干货】h5打包apk调用微信app支付不再困惑
- ESP8266 WIFI模块
- 百度搜索下拉框,下拉菜单怎么做?如何刷?
- 学习笔记 Tianmao 篇 materialRefreshLayout 下拉刷新 控件的使用
- html三角形正方形代码,用CSS画三角形,纯CSS绘制三角形的代码
- intel edison 设置wifi自动连接
- 甘油三酯偏高的原因与治疗方法
- 方舟服务器在线人数查询软件,软件用户使用及在线人数统计无需服务器
- 直播新红海,狼人杀火爆背后的实时语音视频技术 | 深度
- python内建函数是什么意思_python、什么是内建函数?