APP自动化测试内嵌H5三种处理方式(基于python)

1、怎么判断APP是否有内嵌H5

使用appium的检查器对source中class进行查看,是否为 "android.webkit.WebView",如图

2、ADB命令

前提:设备需开启开发者模式,并授权允许开启调试模式。(建议使用虚拟机,屏幕大小固定不变。)

2.1、引用第三方库及常用操作

import os

os.system('adb shell input tap x y')  # 触控点击

os.system('adb shell input text 123456789')  # 输入文本

os.system('adb shell input keyevent KEYCODE_TAB')  # 按键操作

os.system('adb shell input swipe 1000 1000 100 1000')  # 滑动操作

os.sysytem('adb shell input keyevent KEYCODE_DEL')  # 逐个删除

3、内嵌H5的webview开启debug模式

3.1、检查是否开启debug模式

打开APP,进入到内嵌H5页面,在uc-devtools上查看,是否有对应的webview。若无,则未开启。

 点击inspect,正常则显示为如下:

3.2、开启debug方式

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

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

3.3、web自动化操作准备

由于涉及到web自动化操作,所以我们需要选择对应版本的Chromedriver,可以看到我们需要的版本是(66.0.3359.158),如图

 然后再打印当前H5页面的上下文,并切换到webview。代码如下:

# 获取页面所有的上下文
cons = driver.contexts  # ['NATIVE_APP', 'WEBVIEW_com.dogo.duo4android', 'WEBVIEW_com.android.launcher2']
print(cons)
sleep(3)
driver.switch_to.context(cons[1])  # 切换到webview

 4、第三方应用,内嵌H5的可行性方案

4.1、第三方应用内嵌H5自动化测试遇到的问题

1> 真机内嵌H5自动化无法ROOT成功,及正常安装上xposed+webviewdebughook

2> 众多模拟器无法正常安装上xposed+webviewdebughook

4.2、模拟器的选择

对比了多家模拟器(本来想用真机测试,但是无法解决ROOT问题),发现逍遥模拟器能解决所有遇到的问题。记得,开启模拟器ROOT设置

逍遥模拟器连接方式:

adb connect 127.0.0.1:21503

  然后,查看设备连接情况。

 4.3、利用第三方工具开启debug模式

1> 在模拟器上安装xposed框架,并更新版本。

2> 更新完毕后重启模拟器,成功页面如下图所示:

 3> 在xposed框架下安装webviewdebughook,重新启动后在xposed模块选项中激活webviewdebughook。

 4> 配置完成后可以进行验证,打开uc-devtools软件并使用模拟器中的浏览器进入百度页面,若uc工具中可以识别到页面信息则表示配置成功。

5> 后续步骤,就如同web自动化操作准备一致,获取Chromedriver版本,获取HT页面上下文。记得,操作完成内嵌H5后,回到原生页面,同样需要切换回去。

driver.switch_to.context('NATIVE_APP')  # 切换回原生

以上全部!

该文章内容均是在遇到问题时,查阅一下博客所得,并非原创!

参考文档1:https://www.cnblogs.com/-ming/p/12085311.html

参考文档2:https://www.cnblogs.com/jinjiangongzuoshi/p/6526049.html

参考文档3:https://www.jianshu.com/p/ccb13893b6a6

参考文档4:https://blog.csdn.net/suhang1205/article/details/105882453/

参考文档5:https://blog.csdn.net/Logo_OO/article/details/108599066

参考文档6:https://www.cnblogs.com/lovehuange/p/13473217.html

参考文档7:https://blog.csdn.net/qq_15228737/article/details/81142905

原文地址:https://www.cnblogs.com/guobaozhu/p/14155939.html