appium手机web页面自动化
1、原生app:所有控件都是一种技术开发,笔记Android都是java开发的,IOS都是object-c开发的
大家手机上的计算器,就是原生app
2、混合app:原生app无法满足内容快速变更的需求,所以需要结合能快速发展现内容的web技术。两种技术混合在了一起(appium+web),所以称之为混合,比如淘宝、美团,展示商品的web页面 ,他是把web元素嵌套在原生应用当中
这部分内容包含在webview下面
3、web应用:手机网页
appium+web应用测试
一、手机web页面在电脑浏览器测试
-
如何获取手机页面链接
可以通过fiddler抓包工具
- 什么是手机web页面,就是手机浏览器页面
手机应用页面,复制应用页面链接,复制到电脑浏览器,可以在电脑打开
from selenium import webdriver
#以开发者模式打开 让自动化像手动打开的一样处于开发者模式
op=webdriver.ChroeOptions() #selenium以开发者模式打开应用
op=add_experimental_option("mobileEmulation",{"deviceName":"iPhone X"}) #手机型号
driver=webdriver.Chrome(options=op) #启动浏览器
driver.get("http://120.55.190.222:38080/#/pages/index/user") #请求网页数据
二、appium测试手机浏览器
手机端浏览器定位方式和selenium一样
json格式化
有时候写入appium服务数据不正确,查看半天也知道什么原因,可以使用json格式化,帮我我们快速判断问题
json地址:JSON在线解析及格式化验证 - JSON.cn
获取手机浏览器版本
可以在网址栏中输入chrome://version 查看谷歌浏览器版本
然后在电脑端下载和手机端浏览器相同的版本驱动,然后修改驱动名称,复制驱动地址粘贴到chromedriverExecutable这里
from appium import webdriver
#设置设备,应用参数
caps={
"platformName":"Android",
"platformVersion":"9",
"deviceName":"emulator-5554",
"appPacKge":"com.taobao.idlefish",
#输入浏览器类型
"browserName":"Chrome",
#要在电脑上装一个与手机里边的浏览器相对应的版本驱动
#要注意,会和电脑上的浏览器的版本驱动重名,所以需要对电脑端的驱动进行重命名
#驱动配置方法,和selenium一样
"chromedriverExecutable":"浏览器驱动地址"
"unicodeKeyboard":"True",
"resetkeyboard":"True",
"noReset":"True",
"newCommandTimeout":6000,
"automationName":"UiAutomator2"
}
driver=webdriver.Remote("http://127.0.0.1:4723/wb/hub",caps) #启动应用
driver.get("网址")#打开网址
三、混合app
什么是混合app
混合app就是框架原生app框架 加 web-app应用
怎么看app原生框架,手机断网更新数据,所有数据会清空,剩下的就是app原生架构
from appium import webdriver
caps={
"platformName":"Android",
"platformVersion":"9",
"deviceName":"emulator-5554",
"appPacKge":"com.taobao.idlefish", #获取包名
"appActivity":"com.taobao.fleamarket.home.activity.InitActivity",#获取Activity类名
"unicodeKeyboard":"True",
"resetkeyboard":"True",
"noReset":"True",
"newCommandTimeout":6000,
"automationName":"UiAutomator2"
}
driver=webdriver.Remote("http://127.0.0.1:4723/wb/hub",caps) #启动应用
#混合应用定位方式
"""
原生应用使用appium方式定位
web应用,就是html数据,使用selenium方式定位,web应用相当于内嵌网页,需要切换到web
"""
#定位web页面
#打印网页数据
print(driver.contexts)
#切进web页面
driver.switch_to.context("WEBVIEW_com.example.haiwen.myhybirdapp")
#下面就可以执行web定位语法了
appium常见问题及解决方案
1、由于目标计算机积极拒绝,无法链接
原因:appium服务为启动
解决:启动aooium服务后。等待[welcome to appim xxx]提示语句出现
2、会话冲突:failed to start an appiun seddion requested a new session but one was
in progress
原因:之前的会话没有关闭
解决:重启appium服务或重启手机
3、为安装java环境
安装jdk,如果以安装,检查环境变量
4、adb检测不到设置
1、电脑是否安装手机去驱动(win10/11不需要),电脑下载手机助手,等手机助手装好驱动,装好以后卸载手机助手,因为手机助手会占用adb端口
2、打开手机设置,进入开发者选项,打开us调试功能
3、重新插拔数据线,如手机提示仅充电,选传文件若提示是覅u允许这台设备调试没,选择永远允许
4、换数据线,
5、程序无法自动打开appium settings
自己手动打开appiumsettings
6、Java.long PERMISSION DENIAL:WRITING TO SETTINGS(权限不足)
小米:开启usb调试(安全设置)掺入sim卡
oppo:开发者选项 禁止权限监控--开启状态
7、appium could ont sign with default certifcate(通常是权限不足)
原因:通常出现载win7上
解决:appium图标以管理员方式运行