文章目录 前言一、Appium简介1.appium的组成2.appium工作原理 二、adb常用命令三、appium交互总结提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Appium简介及adb常用命令
一、Appium简介 1.appium的组成 自动化脚本即client端(通过Java编写的代码,也可以通过其他语言编写)Appium指令服务器sdk通信环境(Android模拟器)或移动端设备 2.appium工作原理 Client端发送自动化指令给Appium server,Appium Server接收到client发送的指令后,转换为移动端能够识别的指令,然后发送给移动端设备,并对移动端设备进行 *** 作。 具体原理可查看下面两位大佬的帖子,原理描述的非常详细:
1.Appium工作原理
2.Appium工作原理 二、adb常用命令 设备选择:
adb -d 指定唯一真机
adb -e 指定唯一模拟器
adb -s 指定相应serialNumber号的设备
查询设备:adb devices
打开谷歌模拟器,连接模拟器:emulator @avd_name
adb connect deviceName
安装卸载应用:adb install path
adb uninstall appPackage
设备与电脑互传文件,截图,录屏:adb push 电脑路径 设备路径
adb pull 设备路径 电脑路径
截图: adb shell screencap 设备路径
录屏: adb shell screenrecord 设备路径
调用Activity管理器 am:启动应用: adb shell am start -n 包名/Activity名
强制停止应用: adb shell am force-stop 包名
调用软件包管理器 pm:显示所有应用: adb shell pm list packages
只显示系统应用: adb shell pm list packages -s
只显示第三方应用: adb shell pm list packages -3
列出所用测试软件包:adb shell pm list instrumentation
删除与软件包关联的所有数据: adb shell pm clear 包名
调用dumpsys,获取连接设备上的所有系统服务的诊断输出:获取前台包名: adb shell dumpsys activity | findstr mFocusedActivity
检查输入诊断: adb shell dumpsys input
测试界面性能: adb shell dumpsys gfxinfo 包名
检查电池诊断: adb shell dumpsys batterystats-charged 包名
查看CPU信息: adb shell dumpsys cpuinfo
查看内存信息: adb shell dumpsys meminfo
获取内存占用情况统计信息: adb shell dumpsys procstats --hours 3
日志信息:屏幕输出日志: adb logcat
通过标签过滤: adb logcat -s 标签
显示时间: adb logcat -v time adb shell dumpsys acticity top
输出所有信息: adb logcat -v long
输出日志到文件: adb logcat -v time >log.txt
清除旧日志信息: adb logcat -c
Monkey基本用法:
adb monkey 参数 随机发送事件
参数:
-v: 指定反馈信息级别,总过分3个级别
-s: 指定伪随机数生成器的seed值
-p: 用于约束限制,用此参数指定一个或者多个包
--throttle: 每个事件结束后的间隔时间
--ignore-crashes: 忽略崩溃
--ignore-timeouts: 忽略超时
--ignore-security-exceptions: 忽略安全异常
--ignore-native-crashes: 忽略本地代码导致的崩溃异常
--monitor-native-crashes: 跟踪本地方法的崩溃问题
事件:
--pct-touch: 触摸事件
--pct-motion: 滑动事件
--pct-appswitch: activity之间的切换
--pct-pinchzoom: 缩放事件
--pct-rotation: 屏幕旋转事件
--pct-flip: 键盘事件
--pct-anyevent: 任意事件
adb shell monkey -p appPackage -v -v -v --pct-touch 30 --pct-motion 30 --pct-appswitch 20 --pct-flip 10 --pct-anyevent 10 -s 12345 --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes 100 >monkey_log.txt
日志处理:
程序无响应:ANR
崩溃问题: CRASH
其他问题:Exception
获取Android手机的屏幕上的空间列表:adb shell "uiautomator dump && cat /sdcard/window_dump.xml"
三、appium交互
1.Capability 设置
caps = {}
# 系统名称
caps['platformName'] = 'Android'
# 系统版本
caps['platformVersion'] = '6.0'
# 设备名称
caps['deviceName'] = 'deviceName'
# 设备包名
caps['appPackage'] = 'appPackage'
# 设备窗口页面
caps['appActivity'] = 'appActivity'
# 是否重置测试的环境
caps['noReset'] = 'true'
# 首次启动的时候,不停止 app
# caps['dontStopAppOnReset'] = 'true'
# 跳过设备初始化,
caps['skipDeviceInitialization'] = 'true'
# 启用 Unicode 输入
caps['unicodeKeyBoard'] = 'true'
# 在运行 Unicode 测试后,将键盘重置为其原始状态
caps['resetKeyBoard'] = 'true'
# 通过页面检测来增强其 webview 检测
# caps['ensureWebviewsHavePages'] = 'true'
# 加载动态页面时间设置为0s
# caps['settings[waitForIdleTimeout]'] = 0
# 指定对应版本的webdriver的路径
# skipDeviceInitialization:true, false 跳过安装,权限设置等 *** 作
caps['chromedriverExecutable'] = 'chromedriver-path'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
详细参数可查看appium官网:Desired Capabilities元素定位:
手机界面定位方式与web界面定位方式类似(不能使用css selector方式定位),根据id或者相对路径定位;
cmd中输入命令
uiautomatorviewer
打开该工具定位(无法验证定位方式);使用appium-desktop的inspector定位(可验证定位方式);
webview中的元素需要pc端访问:
chrome://inspect/#devices
,点击Webview里的inspect,即可d出当前webview的HTML视图控件交互:
点击方法:element.click()
输入 *** 作:element.send_keys(“”)
设置元素的值:element.set_value(“”)
清除 *** 作:element.clear()
是否可见:element.is_displayed 返回 true or false
是否可用:element.enabled() 返回 true or false
是否被选中:element.is_selected() 返回 true or false
获取属性值:element.get_attribute(name)
获取元素文本:element.text
获取元素坐标:element.location
结果:
{‘y’:19,‘x’:498}
获取元素尺寸(高和宽):element.size
结果:
{‘width’:500,‘height’:22}
查看上下文: driver.contexts
切换上下文:switch_to.context()
查看窗口句柄:driver.window_handles
切换窗口句柄:driver.switch_to.window()
获取toast属性:toast = driver.find_element(By.XPATH, '//*[@]').text
滚动查找:
driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, 'new UiScrollable(new UiSelector().'
'scrollable(true).instance(0)).'
'scrollIntoView(new UiSelector().text("带查找文本").'
'instance(0));').click()
总结
appium的基本使用与adb命令的基本使用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)