AppiumDesktop学习总结

news2024/11/15 8:07:27

Appium学习总结

文章目录

  • Appium学习总结
    • 一、简介
    • 二、环境准备
      • 1.下载并配置安卓SDK环境变量
      • 2.下载及安装AppiumDesktop
      • 3.安装AppiumDesktop
      • 4. 启动AppiumDesktop
      • 5.安装Python3.x环境
      • 6.安装Appium的Python客户端
      • 7.安装安卓模拟器
      • 8.安装被测APP:
      • 9.连接安卓设备
    • 三、运行Python脚本
    • 四、定位元素方式
      • 1、简介
      • 2、元素定位方式
        • 2.1accessibility_id
        • 2.2xpath
    • 五、按键表
    • 六、常用操作总结

一、简介

Appium Desktop是一款用于Mac、Windows和Linux的开源应用。它是Appium更为优化的图形界面和appium相关的工具的组合:

Appium-Server的图形界面。可以设置选项、启动/停止服务器、查看日志等功能;且无须提前安装Node / NPM,因为Node运行时直接与Appium Desktop绑定。

可以使用AppiumDesktop自带的Inspector来查看应用程序的元素,并进行基本的交互。

二、环境准备

1.下载并配置安卓SDK环境变量

https://www.jianshu.com/p/4e00f725bf75

2.下载及安装AppiumDesktop

根据自己的系统版本来下载 (点我查看系统版本)
64位:链接: https://pan.baidu.com/s/1JGuIbIv1JpKPqox0_nz3Cw 提取码: 1234
32位:链接: https://pan.baidu.com/s/1FtWhm3AFXLslk7YFOG3w6g 提取码: 1234

3.安装AppiumDesktop

在这里插入图片描述

4. 启动AppiumDesktop

在这里插入图片描述

5.安装Python3.x环境

若已经装了python环境则忽略这一步
教程传送门:http://www.runoob.com/python/python-install.html

6.安装Appium的Python客户端

在cmd里面运行下面的代码:
pip3 install Appium-Python-Client -i https://pypi.tuna.tsinghua.edu.cn/simple
在这里插入图片描述

7.安装安卓模拟器

1.下载并安装雷电模拟器:http://www.ldmnq.com/
2.打开雷电模拟器

8.安装被测APP:

链接:https://pan.baidu.com/s/1M6pcs1sI4hsEvAQOTv8KfQ
提取码:1234

9.连接安卓设备

使用的是手机:打开安卓手机的USB调试,用数据线连接手机和电脑
使用的是模拟器:直接去执行adb devices
在windows命令提示符中输入:adb devices,能看到手机连上电脑既可
在这里插入图片描述

三、运行Python脚本

在VSCode中新建Python文件,并且输入对应代码运行查看效果
根据自己的手机来修改代码中对应的参数


# 1.导入appium的webdriver
from appium import webdriver

def get_driver():
    """
        获取设备driver
    """
    desired_caps = {}
    desired_caps['platformName'] = 'Android'                    # 打开什么平台的app,固定的 > 启动安卓平台
    desired_caps['platformVersion'] = '5.1.1'                   # 安卓系统的版本号:adb shell getprop ro.build.version.release
    desired_caps['deviceName'] = 'vivo x6plus d'                # 手机/模拟器的型号:adb shell getprop ro.product.model
    desired_caps['appPackage'] = 'io.appium.android.apis'               # app的名字:
                                                            # 安卓8.1之前:adb shell dumpsys activity | findstr "mFocusedActivity"
                                                            # 安卓8.1之后:adb shell dumpsys activity | findstr "mResume"
    desired_caps['appActivity'] = '.ApiDemos'              # 同上↑
    desired_caps['unicodeKeyboard'] = True                      # 为了支持中文
    desired_caps['resetKeyboard'] = True                        # 设置成appium自带的键盘
    # 去打开app,并且返回当前app的操作对象
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    return driver

def test():
    """
        查找单个元素
    """
    # 获取driver
    driver = get_driver()

    #  通过id获取元素:最准确
    app = driver.find_element_by_id("android:id/text1")
    app.click()

    # 返回键
    driver.back()

    # 通过text获取元素
    Animation = driver.find_element_by_android_uiautomator('new UiSelector().text("Animation")')
    Animation.click()

    # 返回键
    driver.back()

    # 通过content-desc来获取元素
    app = driver.find_element_by_accessibility_id("App")
    app.click()

    # 返回键
    driver.back()

    # 通过xpath获取:使用最多
    media = driver.find_element_by_xpath("//android.widget.TextView[@text='Media' and @content-desc='Media']")
    media.click()


if __name__ == "__main__":
    test()


四、定位元素方式

1、简介

由于AppiumDesktop版本已经屏蔽掉AppiumServer的一些定位方式,导致以往AppiumServer的一些定位方式在AppiumDesktop中不能使用。

2、元素定位方式

首先,在AppiumDesktop中,可以直接使用自带的inspector进行元素定位,可以弃用安卓自带的uiautomatorviewer,不得不说,这样子效率大大提高。
在这里插入图片描述
AppiumDesktop V1.6以后仅支持以下定位方式:

2.1accessibility_id

driver.find_element_by_accessibility_id(“Accessibility”)
在这里插入图片描述

2.2xpath

driver.find_element_by_xpath()
在这里插入图片描述

五、按键表

电话键

KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_HOME 按键Home 3
KEYCODE_MENU 菜单键 82
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索键 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25

控制键

KEYCODE_ENTER 回车键 66
KEYCODE_ESCAPE ESC键 111
KEYCODE_DPAD_CENTER 导航键 确定键 23
KEYCODE_DPAD_UP 导航键 向上 19
KEYCODE_DPAD_DOWN 导航键 向下 20
KEYCODE_DPAD_LEFT 导航键 向左 21
KEYCODE_DPAD_RIGHT 导航键 向右 22
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_PAGE_UP 向上翻页键 92
KEYCODE_PAGE_DOWN 向下翻页键 93
KEYCODE_DEL 退格键 67
KEYCODE_FORWARD_DEL 删除键 112
KEYCODE_INSERT 插入键 124
KEYCODE_TAB Tab键 61
KEYCODE_NUM_LOCK 小键盘锁 143
KEYCODE_CAPS_LOCK 大写锁定键 115
KEYCODE_BREAK Break/Pause键 121
KEYCODE_SCROLL_LOCK 滚动锁定键 116
KEYCODE_ZOOM_IN 放大键 168
KEYCODE_ZOOM_OUT 缩小键 169

组合键

KEYCODE_ALT_LEFT Alt+Left
KEYCODE_ALT_RIGHT Alt+Right
KEYCODE_CTRL_LEFT Control+Left
KEYCODE_CTRL_RIGHT Control+Right
KEYCODE_SHIFT_LEFT Shift+Left
KEYCODE_SHIFT_RIGHT Shift+Right

基本

KEYCODE_0 按键'0' 7
KEYCODE_1 按键'1' 8
KEYCODE_2 按键'2' 9
KEYCODE_3 按键'3' 10
KEYCODE_4 按键'4' 11
KEYCODE_5 按键'5' 12
KEYCODE_6 按键'6' 13
KEYCODE_7 按键'7' 14
KEYCODE_8 按键'8' 15
KEYCODE_9 按键'9' 16
KEYCODE_A 按键'A' 29
KEYCODE_B 按键'B' 30
KEYCODE_C 按键'C' 31
KEYCODE_D 按键'D' 32
KEYCODE_E 按键'E' 33
KEYCODE_F 按键'F' 34
KEYCODE_G 按键'G' 35
KEYCODE_H 按键'H' 36
KEYCODE_I 按键'I' 37
KEYCODE_J 按键'J' 38
KEYCODE_K 按键'K' 39
KEYCODE_L 按键'L' 40
KEYCODE_M 按键'M' 41
KEYCODE_N 按键'N' 42
KEYCODE_O 按键'O' 43
KEYCODE_P 按键'P' 44
KEYCODE_Q 按键'Q' 45
KEYCODE_R 按键'R' 46
KEYCODE_S 按键'S' 47
KEYCODE_T 按键'T' 48
KEYCODE_U 按键'U' 49
KEYCODE_V 按键'V' 50
KEYCODE_W 按键'W' 51
KEYCODE_X 按键'X' 52
KEYCODE_Y 按键'Y' 53
KEYCODE_Z 按键'Z' 54

六、常用操作总结

1、appium启动任意的Activity

在手机上启动任意的Activty用driver.start_activity方法,
如果启动的Activity不是测试应用程序的一部分,它也将启动该活动的应用程序。

具体的方法如下:

driver.start_activity('com.foo.app', '.MyActivity')

2、检索应用程序字符串

driver.app_strings方法返回应用程序的字符串

strings = driver.app_strings()

3、向安卓设备发送一个按键事件

driver.press_keycode(3)

详细代码见附录

4、查看当前的Avtivty

activity = driver.current_activity assertEquals('.ApiDemos', activity)

5、锁定屏幕

driver.lock(5)

6、将 app 置于后台,把当前应用放到后台去

driver.background_app(5)

7、收起键盘

driver.hide_keyboard()

8、启动 Activity

在当前应用中打开一个 activity 或者启动一个新应用并打开一个 activity。
只能在 Android 上使用。

driver.start_activity('com.example.android.apis', '.Foo')

9、打开通知栏 (Notifications),打开下拉通知栏 只能在 Android 上使用

driver.open_notifications()

10、检查应用是否已经安装

driver.is_app_installed('com.example.android.apis')

11、安装应用

driver.install_app('path/to/my.apk')

12、删除应用

driver.remove_app('com.example.android.apis')

13、模拟设备摇晃

driver.shake()

14、关闭应用

driver.close_app()

15、启动 (Launch)

根据服务关键字 (desired capabilities) 启动会话 (session) 。
请注意这必须在设定 autoLaunch=false 关键字时才能生效。

这不是用于启动指定的 app/activities ,
你可以使用 start_activity 做到这个效果,
这是用来继续进行使用了 autoLaunch=false 
关键字时的初始化 (Launch) 流程的。

driver.launch_app()

16、重置 (Reset)

driver.reset()

17、可用上下文 (context)

列出所有的可用上下文

翻译备注:context可以理解为 可进入的窗口 。
例如,对于原生应用,可用的context和默认context均为NATIVE_APP

driver.contexts

18、当前上下文 (context)

driver.current_context

19、切换到默认的上下文 (context)

将上下文切换到默认上下文

driver.switch_to.context(None)

20、应用的字符串 (App Strings)

获取应用的字符串

driver.app_strings

21、按键事件 (Key Event)

给设备发送一个按键事件

driver.keyevent(176)

22、触摸动作(TouchAction) / 多点触摸动作(MultiTouchAction)

生成触摸动作的接口。这部分文档很快将会补充更多的内容进来。

action = TouchAction(driver)

action.press(element=el, x=10, y=10).release().perform()

23、滑动(Swipe)

模拟用户滑动

driver.swipe(start=75, starty=500, endx=75, endy=0, duration=800)

24、捏 (Pinch)

捏屏幕 (双指往内移动来缩小屏幕)

driver.pinch(element=el) 

25、放大 (Zoom)

放大屏幕 (双指往外移动来放大屏幕)

driver.zoom(element=el)

26、滑动到 (Scroll To)

滑动到某个元素。

todo: python

27、拉出文件 (Pull File)

从设备中拉出文件

driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')

28、推送文件(Push file)

推送文件到设备中去

driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NCRE二级 《MS Office高级应用》备考之路

文章目录一、WORD一、易考点二、解题思路二、EXCEL一、易考点二、解题思路三、PPT一、易考点二、解题思路四、其他一、WORD 一、易考点 1.设置页边距、纸张方向、纸张大小、装订线位置,分栏。 2.设置主题、页面边框、添加水印。 3.设置段间距、行间距、特殊格式&…

MySQL从入门到精通(第一篇):MySQL的基本语法及其设计,结合多篇文章

MySQL目录一、数据库入门1. 数据管理技术的三个阶段2. 关系型数据库与非关系型数据库3. 四大非关系型数据库a. 基于列的数据库(column-oriented)b. 键值对存储(Key-Value Stores)c. 文档存储(Document Stores&#xff…

【日志首次上报积分最多】

题目描述 【日志首次上报最多积分】 日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。 如果上报太频繁,会对服务端造成压力;如果上报太晚,会降低用户的体验; 如果一次上报的条数…

【flyway入门及使用】解决生产环境sql更新遗漏

flyway入门及使用 一、简单介绍 flyway开源的数据库版本管理工具 二、为什么要使用flyway 1.自己写的sql没有在全部环境执行 2.别人写的sql没有在全部环境执行 3.有人修改了已经执行过的SQL,期望再次执行 4.需要新增环境做数据迁移 三、flyway是如何工作 1…

雷达流量计的安装方法与应用方向介绍

1、设备介绍 雷达流量计是一种采用微波技术的水位流速探测仪器,结合了成熟的雷达水位计和雷达流速仪的测量技术,主要应用于江河、水库闸口、地下水道管网、灌溉渠道等明渠水位流速测量。该产品可有效地监控水位流速流量变化状态,为监测单位提…

【ThreeJs 初学习】随机三角形的实现方案

随机三角形的实现方案 根据官网的文档整理出一份API文档, 地址是:ThreeJs 官网文档,其目的还是为了方便查阅 下列代码源码地址 上述的截图 就是大致的实现效果。 实现内容 首先我们需要对法向量 以及如何完成一个面有一定的了解,具体了解的内…

Opencv-DNN模块之官方指导:利用DNN模块实现深度学习应用:分类、分割、检测、跟踪等

本文根据 Deep Learning with OpenCV DNN Module: A Definitive Guide 中相关内容进行翻译整理而得,用于今后的学习和工程。 00 前  言 ---   机器视觉研究领域从上个世纪六十年后期就已创立。图像分类和物体检测是计算机视觉领域中的一些最古老的的问题&#x…

CSS - 实现Loading加载动画

Loading加载动画 用CSS都用实现一个loading的加载动画 通过控制 item-loader-container 来实现显示及隐藏 <div class"item-loader-container" id"item-loader-container"><div class"la-ball-running-dots la-2x"><div></…

TVS二极管6.6SMDJ58A/6.6SMDJ58CA参数,有什么区别?

提及6600W高功率TVS二极管&#xff0c;电子工程师们更多想到的可能是DO-218AB封装SM8S系列汽车级瞬态抑制TVS二极管&#xff0c;关于SM8S系列TVS管这方面的知识&#xff0c;之前科普过好多次了。接下来&#xff0c;TVS保护管厂家东沃电子要科普的是另一款6600W的二极管6.6SMDJ系…

最优化问题

一&#xff0c;最优化问题 http://faculty.bicmr.pku.edu.cn/~wenzw/optbook/opt1.pdf 最优化问题&#xff08;也称优化问题&#xff09;泛指定量决策问题&#xff0c;主要关心如何对有限 资源进行有效分配和控制&#xff0c;并达到某种意义上的最优。 最优化问题一般可以描…

算法之美~递归

递归求解问题的分解过程&#xff0c;去的过程叫“递”&#xff0c;回来的过程叫“归”。eg.电影院第几排&#xff1f;f(n) f(n-1) 1 其中,f(1) 1根据递推公式&#xff0c;实现递归代码public int f(int n) {if (n 1) return 1;return f(n-1) 1; }递归需要满足的三个条件一…

2023年谷歌搜索排名规则揭秘,Google排名机制

本文主要分享关于2023年谷歌排名算法的一些机制以及如何操盘才能更好的获取谷歌的自然排名。 本文由光算创作&#xff0c;有可能会被修改和剽窃&#xff0c;我们佛系对待这种行为吧。 要把谷歌排名做起来&#xff0c;你得了解谷歌的排名算法。 Google排名机制是怎么样的&…

调试日志:安卓设备之NFC

adb 查看GPIO 引脚状态 adb shell cd /sys/class/gpio ls cat /sys/kernel/debug/gpio 参考链接 msm8953对应GPIOs 0-141&#xff0c;对应的GPIO Base Addr是从0开始 adb查看GPIOgpio stm8 管脚 配置工具_MSM8953 GPIO口配置说明_zhengjw666的博客-CSDN博客 查看中断 c…

CVE-2022-22972 VMware Workspace ONE Access 身份认证绕过漏洞分析

漏洞描述 5 月 18 日&#xff0c;VMware 发布了一份公告 ( VMSA-2022-0014 )&#xff0c;以解决多个 VMware 产品中的两个漏洞&#xff0c;其中包括CVE-2022-22972&#xff0c;该漏洞在身份认证处理时存在一定缺陷。远程攻击者可通过伪造相关请求信息来绕过身份验证&#xff0…

P2121 拆地毯

# 拆地毯 ## 题目背景 还记得 NOIP 2011 提高组 Day1 中的铺地毯吗&#xff1f;时光飞逝&#xff0c;光阴荏苒&#xff0c;三年过去了。组织者精心准备的颁奖典礼早已结束&#xff0c;留下的则是被人们踩过的地毯。请你来解决类似于铺地毯的另一个问题。 ## 题目描述 ## 输入格…

Spring Boot 2 个人App后端实践(1)

App使用Flutter&#xff0c;数据库考虑到要存储的对象并不规整选择使用MongoDB&#xff0c;尝试为自己的App搭建一个简易的后端。 1.通过IDEA脚手架创建项目 New Project->Spring Initializr->Next&#xff0c;输入相关信息并选择Java版本1.8&#xff0c;->Next选择依…

ANTLR4入门学习(一)

ANTLR4入门学习&#xff08;一&#xff09;一、安装Antlr1.1 环境1.2 安装命令1.3 校验安装1.4 自定义脚本二、简单使用2.1 加入Hello parrt语法文件2.2 加入调试工具TestRig2.3 开始调试-tokens选项&#xff0c;会打印出全部的词法符号的列表-tree会打印出LISP风格文本格式的语…

ICG试剂 ICG-PEG-NHS_ICG-PEG-SE_吲哚菁青-聚乙二醇-活性酯

【中文名称】吲哚菁青-聚乙二醇-活性酯&#xff0c;吲哚菁绿琥珀酰亚胺脂【英文名称】 ICG-PEG-NHS&#xff0c;ICG-PEG-SE&#xff0c;ICG-PEG-NHS ester【光谱图】【CAS号】N/A【分子量】400、600、1000、2000、3400、5000、10000、20000【纯度标准】95%【包装规格】5mg&…

Java 删除链表中的节点

删除链表中的节点中等有一个单链表的 head&#xff0c;我们想删除它其中的一个节点 node。给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。链表的所有值都是 唯一的&#xff0c;并且保证给定的节点 node 不是链表中的最后一个节点。删除给定的节点。注意&#…

50.Isaac教程--基于Elbrus立体视觉 VSLAM 的定位

基于Elbrus立体视觉 VSLAM 的定位 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录基于Elbrus立体视觉 VSLAM 的定位架构嵌入式高保真嵌入式降噪惯性测量单元 (IMU) 集成SLAM 与纯视觉里程计使用立体相机示例应用程序源代码在 x86_64 主机…