IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> app自动化之混合应用的测试(h5,小程序) -> 正文阅读

[移动开发]app自动化之混合应用的测试(h5,小程序)

一、什么是混合应用Hybrid App

二、有哪几种混合应用测试

  • 原生应用 + h5
    -? 任意的一个 APP + h5
  • 微信小程序
    -? 微信的app
    -? 你们公司的小程序(h5)
  • 公众号服务
    -? 微信app
    -? 你们公司的公众号(h5)
  • 支付宝的小程序
  • 百度小程序

三、微信小程序

  • 只要进入微信的小程序选择界面,点击进入小程序后测试步骤跟非混合应用一个使用方法
  • 小程序 / 公众号的自动化测试不是很稳定
  • 套路(现成的代码)

四、如何判断一个页面在h5 / webview

  • web dev 调试工具 uc-tools 或者 chrome? inspect可以查看到



    chrome inspect: 浏览器上网址上输入chrome:/inspect
    点击左下角的inspect,会给我们跳转到一个页面


  • 元素的 class属性为 class = android.webkit.WebView
  • 有x图标
  • uiautomatorviewer 等辅助工具难以定位
  • 进度条

五、混合应用测试准备条件

  • ?apk设置,找开发开启webview调试模式。app设置 setWebContentsDebuggingEnabled=True
  • Webdriver
  • 调试工具

六、 chromedriver 版本

  • ?手机上面的网页,使用手机的浏览器(怎么查看手机的包名)
  • 在 uctools 当中查看手机上的浏览器版本(手机需要下载谷歌浏览器吗?不需要,只要用的是安卓手机,默认安装的浏览器都是谷歌内核的)
  • npm.taobao.org/mirrors?下载对应版本的驱动
  • 把驱动保存到项目指定目录下 :drivers/ ,
    通过? achromedriverExecutableDir: r"D:\android_chromedriver"

? ? ? ? ?查看到自己的浏览器版本号之后,在电脑端输入npm.taobao.org/mirrors, 下拉找到chromeDriver,点击进去之后,选择一个自己的版本号,注意:如果没有找到对应的版本号,选择其中一个大版本号,点击进去之后会告诉你这个大版本 包含了哪些小版本。

七、webview 测试步骤

  1. 通过uiautomatorviewer 定位原生应用控件
  2. 通过uctool 定位web页面
  3. appium 操作到web页面
  4. 上下文切换
  5. 再定位 web页面
  6. 退回原生页面,切换回原生

八、混合应用?

  1. 在原生界面上操作,不需要额外的步骤
  2. 当我们点击进入 webview, 首先可以通过UCtools 发现
  3. 进入 webview 环境:driver.switch_to.context(参数),参数填你要进入的哪个环境
  4. 操作 webview 和 selenium 的用法是一样的
  5. 通过 driver.switch_to.context()切换回原生界面。

九、实战

(1)app跳转到h5? webview
?

from appium.webdriver import Remote

file_lemonban = r"D:\柠檬班.apk"
file_daikuan = r"D:\Future-release-2018.apk"
caps = {
    "deviceName": "emulator-5554",
    "platformName": "Android",
    "app": file_lemonban,
    "newCommandTimeout": 1200
}

# Remote 类是集成自 selenium webdriver类
driver = Remote(command_executor='http://127.0.0.1:4446/wd/hub',
                desired_capabilities=caps
                )
# 隐性等待
driver.implicitly_wait(10)

# 定位 进入webview 上层元素, “师资团队”,此时并没有进入 webview
# 打印所有的环境
print(driver.contexts)  

el = driver.find_element('xpath', '//*[@text="师资团队"]')
el.click()

# 打印所有的环境
print(driver.contexts)  



# 打印结果
['NATIVE_APP']
['NATIVE_APP', 'WEBVIEW_com.lemon.lemonban']

?可以看出来点击进入webview? h5界面了,显示环境有2个,一个是app,一个是webview,此时我们需要切换到webview环境。

from appium.webdriver import Remote

file_lemonban = r"D:\柠檬班.apk"
file_daikuan = r"D:\Future-release-2018.apk"
caps = {
    "deviceName": "emulator-5554",
    "platformName": "Android",
    "app": file_lemonban,
    "newCommandTimeout": 1200,
    "chromedriverExecutableDir": r"D:\android_chromedriver"
}

# Remote 类是集成自 selenium webdriver类
driver = Remote(command_executor='http://127.0.0.1:4446/wd/hub',
                desired_capabilities=caps
                )
# 隐性等待
driver.implicitly_wait(10)

# 定位 进入webview 上层元素, “师资团队”,此时并没有进入 webview
print(driver.contexts)  # 打印所有的环境
el = driver.find_element('xpath', '//*[@text="师资团队"]')
el.click()

print(driver.contexts)  # 打印所有的环境

# 从原生的页面环境进入 webview 环境, 完成这一个页面的切换
# NATIVE_APP, WEBVIEW
# 当点击进入webview之后,存在多套环境(NATIVE_APP, WEBVIEW)
# 切换环境的时候,填环境的名称,可以直接传进去,也可以传driver.contexts[-1]
driver.switch_to.context('WEBVIEW_com.lemon.lemonban')
# driver.switch_to.context(driver.contexts[-1])


# webview,进入webview后面的就是用selenium,
# 浏览器定位元素,要不要浏览器的驱动?
# 因为android 系统会内置chrome浏览器内核,手机上浏览器内核和电脑上浏览器的版本是不一样的,所以需要下载手机浏览器相对应的版本号的驱动
driver.find_element('xpath', '//a[contains(text(),"老师")]').click()

(2)微信小程序自动化?

要求:

  • 需要用真机,模拟器环境很难搭
    - 模拟器是x86的架构, 真机是 arm 架构(了解就行)
    - 在模拟器上运行微信小程序很困难。 (需要用到xposed这个框架,感兴趣的小伙伴们可以去尝试一下新鲜感哈哈哈...)
  • x5内核, 在 chrome 内核基础上进一步开发的。
    - 微信小程序只能在 x5 内核上运行
    - x5对应的其实是一个 chrome 的版本

小程序和公众号页面其实都是 H5 页面, 本质上都是混合应用测试,, 只是这些页面都是运行在x5内核上,而不是 chrome内核。

x5内核是在chrome内核上研发的,小程序和公众号打开只能在这个内核上,用普通的chrome浏览器无法打开,所以进行小程序测试必须要开启x5内核的调试模式。?

  1. 在任意的聊天窗口输入http://debugx5.qq.com进可以进入内核调试窗口,点击开启x5内核的调试模式。?
  2. 指定额外的caps
  3. 通过微信界面进入小程序
  4. driver.switch_to.context()进入小程序环境
  5. 下面就是web自动化测试 抓包啥的...
    ?

注意事项:?

?待补充。。。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:12:58  更:2022-06-29 19:13:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年3日历 -2024/3/29 21:52:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码