原生app和h5 app的介绍和定位

  • 常见app类型
    原生app:
    优点:
    可访问手机所有功能,可实现功能最齐全
    运行速度快、性能高、用户体验好
    支持大量图形和动画,不卡并且反应速度快
    可快捷地使用设备端提供的接口,处理速度上有优势,比如去调手机相机等应用能快速唤起,不需要额外依赖网络。
    缺点:
    开发成本高,周期长,Android和ios都需要单独的人员进行开发
    更新版本需要重新下载安装包,很不方便
    混合app:app里面嵌入了一个网页(即利用了原生app和html5的开发技术)
    优点:
    开发周期短
    功能过呢更新发布快
    缺点:
    用户体验不如本地应用(原生app)
    性能稍慢(需要连接网络)
    不支持缓存
    H5app:网页app,可通过浏览器访问
    优点:
    支持范围广
    开发成本低,周期短
    缺点:
    对联网要求高,离线不能做任何操作gu
    功能有限
    运行速度慢(需要连接网络),网页不能承载太多东西
    图片和动画支持性不高
    手游app:手游一般通过引擎开发,著名的有cocos2d和unity3d,使用appium无法定位(按钮等控件运行时由于引擎 渲染变成了一副简单的图片,所以无法使用appium定位)
    可使用Airtest或GAutomator去测试
  • 原生app和h5 app 定位方法
    原生app:
    appium元素定位工具:uiautomatorviewer/Appium Desktop inspector/weditor
    定位工具一:Android sdk自带定位工具uiautomatorviewer
    路径位置:sdk\tools\uiautomatorviewer.bat
    使用:双击uiautomatorviewer.bat之后选中需要定位的软件包
    定位工具二:Appium Desktop inspector,Appium 自带的定位工具
    定位工具三:weditor
    安装Uiautomator2:pip install Uiautomator2
    初始化:python -m uiautomator2 init
    安装weditor:pip install weditor
    确认安装成功:输入weditor 出现打开浏览器
    h5 app:
    context:翻译为‘上下文,背景;环境’,指不同环境的切换(指原生app环境切到h5环境)
    app内嵌h5如何定位:
    H5页面通过什么来显示:WebView是Android系统提供能显示网页的系统控件,专门提供给Android手机显示h5页面类或者是个容器。
    H5元素定位环境:
    参考学习地址:https://www.cnblogs.com/xuzhongtao/p/9723210.html
    准备工作:
    电脑上需要有谷歌浏览器
    手机上也要有谷歌浏览器,通过豌豆荚下载谷歌浏览器
    配置浏览器驱动
    电脑浏览器的驱动放在python 的安装路径下
    手机浏览器驱动放在appium的安装路径下
    操作:
    1.手机与电脑连接,开启USB调试模式,通过adb devices可查看到此设备。(设备系统Android 5.0以上)
    2.电脑端、移动端必须安装chrome浏览器。(尽量保证移动端chrome版本与PC端一致)根据对应的Chrome浏览器版本安装对应的Chrome driver。
    3.App Webview开启debug模式(需要开发在app里面加入一串代码)
    在app中配置如下代码(在WebView类中调用静态方法setWebContentsDebuggingEnabled):
    if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {
    WebView.setWebContentsDebuggingEnabled(true);
    注:此步骤,一般需要App开发人员开启。
    4.在电脑端Chrome浏览器地址栏输入chrome://inspect/#devices,进入调试模式
    5.执行测试脚本
    6.打开app对应的h5页面,在 chrome://inspect/#devices 地址中,检查是否显示对应的webview,如没有,则当前未开启调试模式。
    7.在自动化脚本中,进入到对应的H5页面,打印输出当前context,如果一直显示为Natvie App,则webview未开启。
    H5定位实践案例:
    测试场景:
    启动app 进入H5页面中进行操作之后返回原生app
    需求分析:
    a.先进入到H5页面,然后切换到context,再进行相关元素定位操作。
    b.conetext切换:可以通过contexts()方法来获取到页面的所有context
    c.使用driver.switch_to.context(‘网页地址’)进入网页,在H5页面进行元素定位操作
    d.最后使用driver._switch_to.context(“NATIVE_APP”)返回到原生app
    代码实现:
from appium import webdriver
#告诉appium server 被测手机相关的配置项
desired_caps=dict()
desired_caps['platformName']='Android' #被测平台Android/ios
desired_caps['deviceName']='nova 6' #设备名称,可随便写
desired_caps['platformVersion']='10' #被测手机系统版本号
desired_caps['appPackage']='com.eccalc.ichat'#被测app的包名--代表被测app在设备上的地址
desired_caps['appActivity']='.ui.WelcomeActivity'#被测app的入口信息
desired_caps['noReset']=True #禁止app在自动化后重置
desired_caps['newCommandTimeout']=3600 #设置命令超时时间,方便调试---单位秒
desired_caps['automationName']="UiAutomator2"#指定驱动,需在手机上安装
#Remote通信的ip和端口 是appium server安装机器的ip和端口
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
driver.implicitly_wait(10)
driver.find_element_by_id('bt_to_login').click()
sleep(5)
driver.find_element_by_id('tv_agree').click()
driver.find_element_by_id('et_phone').send_keys('1234569')
driver.find_element_by_id('et_pwd_one').send_keys('123456cs')
#判断复选框是否勾选,若checked为false就进行勾选
if driver.find_element_by_id('cb_login').get_attribute('checked')=='false':
    driver.find_element_by_id('cb_login').click()
driver.find_element_by_id('bt_login').click()
#进入h5页面,切换context并获取contexts
contexts=driver.contexts
print(contexts)
#切换到内嵌网页
driver.switch_to.context("WebViEW_com.shangcheng")
#操作完成跳出h5页面回到原生app
driver._switch_to.context("NATIVE_APP")
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值