| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> Appium详解(超详细) -> 正文阅读 |
|
[开发测试]Appium详解(超详细) |
一、Appium 环境搭建:????1、安装Appium Python Client包:???????????? ???????????? ????2、安装Appium服务端:????????????下载地址1:https://github.com/appium/appium-desktop/releases/latest ????????????下载地址2:https://bitbucket.org/appium/appium.app/downloads/ ????3、安装并配置JDK:????????????下载 jdk 地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html ????????????检查电脑是否有安装过jdk或是否安装成功:cmd窗口----输入 java -version ????????????检查是否已配置环境变量:cmd窗口----输入 javac ????????????配置环境变量: ????????????1、变量名:JAVA_HOME 变量值:C:/Program Files/Java/jdk1.8.0_151(注意这里是安装jdk的路径,最好是英文路径) ????????????2、变量名:PATH 变量值:C:/Program Files/Java/jdk1.8.0_151/bin;C:/Program Files/Java/jdk1.8.0_151/bin;(注意这里是两个路径,用分号隔开) ????????????3、变量名:CLASSPATH 变量值:C:/Program Files/Java/jdk1.8.0_151/lib/dt.jar;C:/Program Files/Java/jdk1.8.0_151/lib/Tools.jar;(可不配置) ????4、下载安装并配置SDK:????????????下载sdk地址1: http://developer.android.com/studio/installing/index.html(划到下面“Command line Tools only”下载即可) ????????????下载sdk地址2: https://developer.android.google.cn/studio/(官网) ????配置环境变量: ????????????配置完后启动cmd窗口,输入 ????5、安装并配置nodejs(此步可以不做 ):????????????下载nodejs地址:http://nodejs.cn/download/ ????????????验证是否安装成功,打开cmd窗口,输入 ????6、连接真机:????????????1、用数据线连接,注意有的数据线只能用来充电 ????????????2、手机必须开启开发者模式 ????????????3、有的手机必须安装驱动才能连接 ????????????4、以上步骤确认无误后,在电脑cmd窗口输入:adb devices 连接手机 ------------------------------------------------------------------------------------------二、ADB 相关命令:????1、 adb基础命令:????????????1 adb devices 查看已连接的设备与模拟器 devices/offline/no devices/unauthorized ????????????2. adb connect ip port—连接设备 ????????????3. adb disconnect ip port----取消连接 ????????????4. adb version----查看adb的版本 ????????????5. adb start-server----启动adb服务 ????????????6. adb kill-server----杀掉adb服务 ????????????7. adb install 绝对路径 (必须是英文)----安装程序 ????????????8. adb uninstall 包名-----卸载程序 ????????????9. adb shell pm list packages -3 -----输出系统用户安装的第三方app包名 ????????????10. adb shell pm list packages -s ------输出系统自带的包名 ????????????11. adb pull /data/anr/traces.txt D:/log -----把手机端的文件拷贝到电脑端 ????????????12. adb push D:/log/traces.txt /data/anr ------把电脑端的文件拷贝到手机端 ????2、获取app包名和启动名命令:????????????1、windows命令: ????????????windows命令: ????????????2、Linux命令: ????3、过滤指定app的日志:adb logcat -v time | findstr 包名????????????获取系统版本号: ????????????获取手机webview版本: ????????????获取App的启动时间: ????????????1、TotalTime:app自身启动时间 ????????????2、WaitTime:系统启动app时间 ------------------------------------------------------------------------------------------三、Appium 启动配置:
????1、元素定位单数形式和复数形式和selenium一样,复数形式返回的也是列表;????????????driver.find_elements_by_id(“username”) # 根据id定位,即 resource-id 的值; ????????????driver.find_element_by_accessibility_id(‘unique name’) # 根据唯一id定位,即 contend-desc 的值; ????????????driver.find_element_by_class_name(“android.btn”) # 根据类名定位,即 class 的值; ????????????driver.find_element_by_xpath("//元素类型[@属性=‘value’]") # 根据xpath定位,即 xpath 的值; ????????????driver.tap([(1, 2), (3, 4)]) # 模拟手指点击坐标,tap里面最多有5个坐标, ????2、通过元素的百分比坐标来定位:????????????target_size = driver.get_window_size() # 获取手机屏幕的尺寸 ????????????height = target_size[“height”] # 获取手机屏幕 x 坐标 ????????????width = target_size[“width”] # 获取手机屏幕 y 坐标 ????????????driver.tap([(height / 2, width / 8)]) # 点击指定百分比坐标的位置 ------------------------------------------------------------------------------------------四、元素定位工具 - Uiautomatorviewer????1、工具路径:????????????一般在 /SDK/Tools/bin/uiautomatorviewer.bat 目录下,有的也会直接放在 /SDK/Tools/uiautomatorviewer.bat 目录下; ????2、工具缺点:????????????高版本的安卓可能有兼容性问题,经常出现连接不上的问题,需要多次重启工具和adb; ????3、工具内容解释:????????????index:元素的下标,在结构树上能看到; ????????????text:文本信息,不是每个元素都有; ????????????resource-id:元素的id,但这个id有可能不是唯一的(格式:“包名:id”); ????????????class:元素属于的类,安卓是java开发的,所以每个元素都有class,; ????????????package:app的包名; ????????????content-desc:这个可以唯一定位元素,通常开发都不会写; ????????????bounds:坐标值,通常有两个list,一个是左上角一个是右下角,如: [x1,y1][x2,y2] ? ------------------------------------------------------------------------------------------五、UI Selector API 定位方法:???1、通过ID来选择元素:???????????? ??? 2、通过CLASS来选择元素:???????????? ???3、通过content-desc来选择元素:???????????? ???注意:new 后面的空格只能是一个,否则会报错; ???4、通过xpath来选择元素,用uiselector来表示:???????????? 如用选择xpath定位后的第 n 个元素: ???5、通过正则表达式匹配id:???????????? ???6、通过文本来选择元素:???????????? ???7、通过正则表达式选择文本:???????????? ???8、UiSelector在appium代码中的写法:???????????? ???????????? ------------------------------------------------------------------------------------------六、操作页面:???1、滑动:????????????banner = driver.find_element_by_id("") # 先定位到需要获取尺寸的目标元素 ????????????banSize = banner.size # 返回:{“height”: size[“height”], “width”: size[“width”]} ????????????eleHeight, eleWidth = banSize[“height”], banSize[“width”] # 获取元素的高度和宽度 ????????????loc = banner.location # 获取元素的左上角坐标,返回:{“x”: round(old_loc[‘x’]), “y”: round(old_loc[‘y’])} ????????????startX, startY = loc + eleWidth * 0.2, loc + eleHeight * 0.5 # 获取起始坐标 ????????????endX, endY = loc + eleWidth * 0.8, startY # 获取终点坐标 ????????????driver.swipe(startX, startY, endX, endY, duration=None) # 滑动方法,duration是滑动消耗时间 ------------------------------------------------------------------------------------------七、通知查看:???1、打开通知栏????????????driver.swipe() # 通过滑动屏幕实现—从顶端向下滑动 ????????????driver.open_notifications() # 固定用法,通过调用api来实现 ???2、关闭通知栏????????????driver.swipe() # 通过滑动屏幕实现—从底部向上滑动 ????????????driver.press_keycode() # 括号里面填写相对应的按钮编码,短按操作 ????????????driver.keyevent() # 相当于继承了selenium的方法,短按操作 ????????????driver.long_press_keycode() # 长按按钮操作,括号里的输入对应按钮的编码 ???3、按钮对应的编码 扩展:????????????driver.press_keycode(5) # 拨号键 ????????????driver.press_keycode(220) # 调节屏幕亮度的键 ????????????driver.press_keycode(221) # 调节屏幕亮度的键 ????????????driver.press_keycode(3) # home 键 ????????????driver.press_keycode(82) # 菜单键 ????????????driver.press_keycode(4) # 返回键 ????????????driver.press_keycode(27) # 拍照键 ????????????driver.press_keycode(26) # 电源键,点击一下相当于锁屏,长按相当于关机操作 ????????????driver.press_keycode(91) # 话筒静音键 ????????????driver.press_keycode(24) # 电源键,点击一下相当于锁屏,长按相当于关机操作 ????????????driver.press_keycode(25) # 音量增加键 ????????????driver.press_keycode(26) # 音量减小键 ? ------------------------------------------------------------------------------------------八、WebView???1、打开电脑上的浏览器以手机模式执行????????前提:电脑浏览器能访问手机版的该网页!
???如果要直接对app的webview进行测试,需要修改源码:???准备工作1: app修改编译:对 webview对象加入 setWebContentsDebuggingEnabled 的调用!
???准备工作2: 查看webview元素????????????通过chrome的远程调试功能—电脑需要翻墙 ????????????打开chrome浏览器,地址栏输入:chrome://inspect ????????????Android 4.4(KitKat)或更高的版本 ???准备工作3: 选择合适的webdriver? 九、appium 实现 webview 自动化:???如果需要操作webview的内容,必须要切入 context 里面去,否则无法定位到元素!????????????driver.contexts # 查看你当前有那些context,返回的是一个列表; ????????????driver.current_context # 查看 driver 当前处于哪个 context; ????????????contextname = driver.contexts[0] ????????????driver.switch_to.context(contextname) # 切入 context 里面去; |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:20:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |