appium - 混合应用-h5

1、native、web、hybrid简介

目前主流应用程序大体分为三类:web APP(网页应用)、hybrid APP(混合应用)、native APP(原生应用)。

native:

优点:直接依托于操作系统,交互性最强,性能最好;功能最为强大,特别是在与系统交互中,几乎所有功能都能实现。

缺点:开发成本高,无法跨平台,不同平台Android和iOS上都要各自独立开发;门槛较高,原生人员有一定的入门门槛,相比广大的前端人员而言较少;更新缓慢,特别是发布应用商店后,需要等到审核周期;维护成本高。

 

web:
优点:开发成本低,可以款平台,调用方便;维护成本低;更新无需通知用户,不需要手动升级;无需安装APP,不会占用手机内存。

缺点:无法获取系统级别的通知,提醒,动效等等,用户存留率低;设计受限制诸多;体验较差。

 

hybrid:

优点:在应用程序中嵌入了webview,通过webview访问网页;开发成本较低,可以跨平台,调试方便;维护成本低,功能可服用;功能更加完善,性能和体验要比起web APP好太多;更新较为自由。

缺点:相比原生,性能仍然有较大损耗;不适用于交互性较强的APP。

 

2、如何分别一个APP页面究竟是native还是web的。

在手机/模拟器中点击关于手机中的版本号5下,出来开发者选项。

在开发者选项中勾选上显示布局边界再返回到APP界面。

如果APP是web页面,那界面不会有布局边界显示,如有则说明是native的界面。

在就通过定位工具:

appium - 混合应用-h5_第1张图片

我们之前所使用的API都是针对于原生的应用而言的,如果是web页面就不能采取这些API来定位元素,而且很多的应用都是hybrid混合应用了。

 

3、hybrid自动化脚本开发

识别webview视图

我们可以根据上面描述的方法,进行判断。

 

获取所有的contexts:driver.contexts

理解context:

context上下文,疑问这一个场景,一个场景就是用户和操作系统交互的过程,native界面和webview界面分属于不用的context,native默认是“NATIVE_APP”,webview则默认是“WEBVIEW_被测进程名称”。

通过切换context对象,可以让appium认识到自己当前处于哪一个状态里面。

 

4、切换到webview视图

示例:

# 2、切换-Window窗口
# context - 混合应用  native_app
time.sleep(5)
# 1、获取所有的context    确保你的APP能够让代码识别到webview
cons = driver.contexts
print(cons)
# 2、根据context名字,切换到webview  # WEBVIEW_com.lemon.lemonban
# driver.switch_to.context(cons[-1])
driver.switch_to.context('WEBVIEW_com.lemon.lemonban')
# 打印web内容
webinfo = driver.page_source

 

5、定位webview中的元素

已经切换到HTML,那后续就是web自动化操作 --- 原生webview,基本上都是Chromedriver。

(1)Chrome浏览器中输入:chrome://inspect

该方法操作inspect后需要才可以使用(不推荐)。

 

(2)使用uc - devtools

具体参考官方文档:https://dev.ucweb.com/docs/pwa/docs-zh/xy3whu

 

6、回到native_app

driver.switch_to.context(None)

 

结论:

1、要让APP当中的webview能够被识别,并且要操作的元素在webview当中。

2、利用appium的context切换,从NATIVE_APP切换到webview网页。

3、利用uc - devtools来定位网页元素并操作。

4、web网页,需要下载与Android系统webview版本匹配的Chromedriver

你可能感兴趣的:(Python,appium,Python,appium)