当前位置: 首页 > news >正文

Appium中的api(三)

目录

Appium中的api(三)

1.输入和清空内容

1--输入内容

2--清空内容

2.获取文本内容

3.获取文本位置

4.获取文本的大小(即获取控件的宽和高)

5.滑动api

6.拖拽api

7.如何获取手机分辨率

8.如何截图

9.模拟按键事件api

10.操作通知栏

案例:App自动化模拟

1--源码

2--效果

附录

下面是一些常见的keyCode


Appium中的api(三)

1.输入和清空内容

1--输入内容

send_keys(设置该元素的值)

element.send_keys("这里面是设置元素的值")

2--清空内容

clear() 清空元素的值

send_key("")

element.send_keys("")

element.clear()

2.获取文本内容

element.text  #  这个是获取文本内容

element.text

3.获取文本位置

element.location # 获取坐标信息

element.location['x'] # 获取x轴

element.location['y'] # 获取y轴

4.获取文本的大小(即获取控件的宽和高)

element.size # 获取控件的宽和高

5.滑动api

def swipe(self, start_x: int, start_y: int, end_x: int, end_y: int, duration: int = 0)

起始位置坐标 滑动到 结束坐标位置

dirver.swipe(startX,startY,endX,endY,duration)

6.拖拽api

# 把endElement 拖拽到scroll位置

driver.scroll(startElement,endElement)

# 把endElement 拖拽到scroll位置

driver.drag_and_drop(startElement,endElement)

7.如何获取手机分辨率

# 获取手机分辨率信息

getInfo =  driver.get_window_size()

# 获取手机的宽度

myWidthInfo =  getInfo["width"]

# 获取手机的高度

myHeightInfo =  getInfo["height"]

8.如何截图

driver.get_screenshot_as_file

参数(文件路径,文件名)

9.模拟按键事件api

driver.press_keycode(4)   # 模拟返回案件

10.操作通知栏

driver.open_notifications()

案例:App自动化模拟

1--源码

下面是全部的python源码

import time
import unittest
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBycapabilities = dict(platformName='Android', # 名字,这个这就是这个automationName='uiautomator2', # 这个是使用的驱动deviceName='Android',  # 这个是设备名字可以随意appPackage='com.android.settings',  # 这个是你要启动的包名appActivity='.Settings',    # 这个是你要启动的活动单元名字language='en',locale='US',udid="127.0.0.1:21503"  # 这个是要连接的设备的ip和端口号    我用的是逍遥模拟器  端口号为 21503
)appium_server_url = 'http://localhost:4723'class MyElementUiTest(unittest.TestCase):# 前置处理def setUp(self) -> None:self.driver = webdriver.Remote(appium_server_url, options=UiAutomator2Options().load_capabilities(capabilities))# 后置处理  关闭连接会话sessiondef tearDown(self) -> None:self.driver.quit()# testdef test_find_by_id(self):# 获取当前界面的信息myPackageInfo =  self.driver.current_package;print(myPackageInfo)# 获取当前页面的包名myActivityInfo = self.driver.current_activityprint(myActivityInfo)def test_my_element_test(self):# 获取搜索栏信息mySearchElementID ="com.android.settings:id/search_action_bar"mySearchElement = self.driver.find_element(AppiumBy.ID, mySearchElementID)# 点击搜索栏mySearchElement.click();# 停留2秒time.sleep(2)print("获取编辑框id")# 获取编辑框的idmyEditTextID = "android:id/search_src_text"myEditText = self.driver.find_element(AppiumBy.ID, myEditTextID)# 输入信息,你好啊AppiummyEditText.send_keys("你好啊Appium")# 停留两秒钟time.sleep(2)# 清除信息myEditText.clear()time.sleep(2)print("输入信息,你好啊Appium")# 输入信息,你好啊AppiummyEditText.send_keys("你好啊Appium")time.sleep(2)# 清除信息myEditText.send_keys("")time.sleep(2)print("模拟返回")# 模拟返回self.driver.press_keycode(4)# 停留两秒time.sleep(2)# 滑动两次屏幕# 获取设备信息print("获取设备信息")devicesInfo = self.driver.get_window_size();print(devicesInfo)# 获取高度height = devicesInfo['height']print(height)width = devicesInfo['width']print(width)print("模拟滑动屏幕")# def swipe(self, start_x: int, start_y: int, end_x: int, end_y: int, duration: int = 0),self.driver.swipe( start_x=width * 0.5, start_y=height * 0.8,end_x = width * 0.5, end_y=height * 0.2, duration=1000)time.sleep(2)self.driver.swipe( start_x=width * 0.5, start_y=height * 0.8,end_x = width * 0.5, end_y=height * 0.2, duration=1000)time.sleep(2)print("模拟滑动屏幕结束")# 通过是否包含字体获取控件# xpathmyStartElement = self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text,'应用和通知')]")# 结束元素myEndElement = self.driver.find_element(AppiumBy.XPATH, "//*[contains(@text,'声音')]")print("拖拽")self.driver.scroll(myStartElement, myEndElement)time.sleep(2)print("拖拽结束")self.driver.drag_and_drop(myEndElement, myStartElement)time.sleep(2)print("拖拽结束")# 打开通知栏self.driver.open_notifications()time.sleep(2)print("打开通知栏结束")self.driver.back()

2--效果

附录

下面是一些常见的keyCode

拨号键(KEYCODE_CALL)
6挂机键(KEYCODE_ENDCALL)
8BackSpace(退格键,但通常不直接用这个KeyCode表示退格)
9Tab键(KEYCODE_TAB)
16Shift_L(左Shift键)
19导航键向上(KEYCODE_DPAD_UP)
20导航键向下(KEYCODE_DPAD_DOWN)
21导航键向左(KEYCODE_DPAD_LEFT)
22导航键向右(KEYCODE_DPAD_RIGHT)
23导航键确定键(KEYCODE_DPAD_CENTER)
24音量增加键(KEYCODE_VOLUME_UP)
25音量减小键(KEYCODE_VOLUME_DOWN)
26电源键(KEYCODE_POWER)
27Escape键(KEYCODE_ESCAPE)或拍照键(在某些上下文中)
32空格键(space)
36Home键(与KEYCODE_HOME相同,但数字不同)
37左箭头键(Left)
38上箭头键(Up)
39右箭头键(Right)
40下箭头键(Down)
46Delete键(KEYCODE_DEL)
61Enter键(在某些上下文中,但通常Enter用66表示)
66回车键(KEYCODE_ENTER)
67退格键(KEYCODE_DEL的另一种表示,但通常退格用8表示BackSpace)
82菜单键(KEYCODE_MENU)
83通知键(KEYCODE_NOTIFICATION,但注意这不是标准的Android键码)
84搜索键(KEYCODE_SEARCH)
91话筒静音键(KEYCODE_MUTE,但注意这不是标准的Android键码)
92向上翻页键(KEYCODE_PAGE_UP)
93向下翻页键(KEYCODE_PAGE_DOWN)
111ESC键(与KEYCODE_ESCAPE相同,但数字不同)
112删除键(FORWARD_DEL,与KEYCODE_DEL不同)
115大写锁定键(KEYCODE_CAPS_LOCK)
122光标移动到开始键(KEYCODE_MOVE_HOME)
123光标移动到末尾键(KEYCODE_MOVE_END)
143小键盘锁(KEYCODE_NUM_LOCK)
164扬声器静音键(KEYCODE_VOLUME_MUTE的另一种表示,但注意上下文)

相关文章:

Appium中的api(三)

目录 Appium中的api(三) 1.输入和清空内容 1--输入内容 2--清空内容 2.获取文本内容 3.获取文本位置 4.获取文本的大小(即获取控件的宽和高) 5.滑动api 6.拖拽api 7.如何获取手机分辨率 8.如何截图 9.模拟按键事件api 10.操作通知栏 案例:App自动化模拟 …...

踩坑:关于使用ceph pg repair引发的业务阻塞

概述 在某次故障回溯中,发现引发集群故障,slow io,pg stuck的罪魁祸首竟是做了一次ceph pg repair $pgid。然而ceph pg repair作为使用频率极高的,用来修复pg不一致的常用手段,平时可能很少注意其使用规范和可能带来的…...

瞬间升级!电子文档华丽变身在线题库,效率翻倍✨

👋嘿小伙伴们,有个超赞的秘籍要告诉你们——土著刷题能将你的电子文档一键变身在线题库!😉 你还没发现这个宝藏功能吗?快来瞧瞧! 🌟是不是常被一堆电子版的学习资料搞得头昏脑涨,学习…...

如何动态改变本地的ip

在当今数字化时代,网络连接已成为我们日常生活和工作中不可或缺的一部分。无论是出于隐私保护、突破地域限制,还是为了测试和优化网络应用,动态改变本地IP地址的需求日益增多。本文将详细介绍如何安全、有效地实现这一目标,旨在帮…...

Spring Boot框架在中小企业设备管理中的创新应用

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…...

Ceph入门到精通-Osd db扩容

ceph-bluestore-tool 是一个在 BlueStore 实例上执行低级管理操作的实用程序。 以下命令可用于 ceph-bluestore-tool 语法 ceph-bluestore-tool COMMAND [ --dev DEVICE … ] [ -i OSD_ID ] [ --path OSD_PATH ] [ --out-dir DIR ] [ --log-file | -l filename ] [ --deep ]c…...

windows msvc2017 x64编译AWS SDK CPP库

在本文中,我们将介绍如何编译AWS SDK C库,以便在您的项目中使用。AWS SDK C库提供了与Amazon Web Services交互的接口,允许您在C应用程序中使用AWS服务。 一、准备工作 在开始编译AWS SDK C库之前,请确保您的系统已经安装了以下…...

铜业机器人剥片 - SNK施努卡

SNK施努卡有色行业电解车间铜业机器人剥片 铜业机器人剥片技术是针对传统人工剥片效率低下、工作环境恶劣及生产质量不稳定的痛点而发展起来的自动化解决方案。 面临人工剥片的诸多挑战,包括低效率、工作环境差、人员流动大以及产品质量控制不精确等问题。 人工剥片…...

非接触式竖向位移、水平位移视频实时在线监测的设备分类及选型

前言 视觉是人工智能正在快速发展的一个分支,简单说来,机器视觉就是用机器代替人眼来做测量和判断。在结构健康自动化监测方面,机器视觉采用光学图像结合智能算法和物联网技术,利用先进的智能靶标识别及亚像素处理等技术&#xff…...

Svelte 5 正式发布:新一代前端框架!

10 月 22 日,Svelte 5 正式发布!该版本带来的更新主要包括: 重写框架:Svelte 5 是从头开始重写的,使得应用更快、更小、更可靠,并且代码更一致和符合习惯。 向后兼容:Svelte 5 几乎完全向后兼容…...

85.【C语言】数据结构之顺序表的中间插入和删除及遍历查找

目录 3.操作顺序表 1.分析中间插入函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLInsert函数的声明 运行结果 2.分析中间删除函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLErase函数的声明 运行结果 承接84.【C语…...

触觉智能Purple Pi OH鸿蒙开发板成功适配OpenHarmony5.0 Release,开启新征程!

10月22日,触觉智能Purple Pi OH鸿蒙开发板迎来了重大系统版本升级,成功适配OpenHarmony5.0 Release,为嵌入式开发者和科技爱好者们带来了全新的机遇与挑战! 触觉智能 Purple Pi OH 开发板一直以来都以其高品质和超高性价比而著称。…...

分布式解决方案---分布式ID

目录 是什么 特点 全局唯一 高并发 高可用 怎么做 实现方案 是什么 分布式ID是指在分布式系统中生成的唯一标识符。由于分布式系统的特点,多个节点可能会同时生成ID,因此需要确保每个ID在整个系统中是唯一的。 重点就是唯一性!&#x…...

httpd服务

文章目录 1、搭建一个网络yum源2、基于域名访问的虚拟主机3、基于端口来访问域名4、搭建个人网站5、加密访问显示自定义网页内容 1、搭建一个网络yum源 [roottest01 conf.d]# cat repo.conf <virtualhost *:80>documentroot /var/www/html/ServerName 10.104.43.154ali…...

Linux系统安装Redis详细操作步骤(二进制发布包安装方式)

安装方式介绍 在Linux系统中&#xff0c;安装软件的方式主要有四种&#xff0c;这四种安装方式的特点如下&#xff1a; 安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布&#xff0c;只要解压&#xff0c;修改配置即可rpm安装软件已经按照redhat的包管理规范进…...

Jenkins和Gitlab整合构建CI/CD流水线

配置环境 虚拟机建议4G起步 192.168.58.199 192.168.58.200 部署Jenkins 部署Jenkins参考这篇文章&#xff1a;Jenkins安装部署_connecting to pkg.jenkins.io (pkg.jenkins.io)|151.-CSDN博客 安装完毕之后根据下图操作 选择git&#xff0c;添加git仓库克隆url&#xff0c;选…...

14 C语言中的关键字

C语言中的关键字 在C语言中&#xff0c;关键字是一些预定义的单词&#xff0c;它们具有特殊的意义和用途。这些关键字不能用作标识符&#xff0c;比如变量名、函数名等&#xff0c;因为它们被保留用于特定的语言结构和操作。 关键字的分类 C语言的关键字可以分为几个主要类别…...

(11)(2.1.7) FETtec OneWire ESCs(一)

文章目录 前言 1 去哪里买 2 连接 3 组态 前言 &#xff01;Note 此功能在固件版本 4.1.1 及更高版本上可用。 OneWire 是 FETtec 的 ESC 双向通信协议(ESC bi-directional communication protocol)。 FETtec OneWire ESC 的遥测信息被发送回自动驾驶仪&#xff1a; 电…...

Python 异步编程:使用 `asyncio.to_thread` 和 `asyncio.Queue` 处理任务队列

Python 异步编程&#xff1a;使用 asyncio.to_thread 和 asyncio.Queue 处理任务队列 1. 什么是 asyncio.to_thread&#xff1f;2. 什么是 asyncio.Queue&#xff1f;3. 示例代码&#xff1a;使用 asyncio.to_thread 和 asyncio.Queue 处理任务队列示例代码代码解释运行结果 4.…...

【问题解决】Flink在linux上运行成功但是无法访问webUI界面

一&#xff0c;问题 在搭建Flink的时候&#xff0c;已经在linux服务器上运行了./start-cluster.sh&#xff0c; 而且日志显示已经成功了。 服务器上也没有开启防火墙 正常来说应该能通过ip:8081来访问(8081是Flink WebUI的默认端口)&#xff0c;但是访问的时候&#xff0c;显示…...

多渠道订单数据处理自动化,落地步骤与ERP打通方案 | 2026企业级智能体实战手册

在2026年的数字化转型深水区&#xff0c;企业面临的不再是“是否要自动化”的问题&#xff0c; 而是如何在高并发、多维度的全渠道业务压力下&#xff0c; 实现订单流、资金流与信息流的绝对同步。 传统的OMS&#xff08;订单管理系统&#xff09;与ERP&#xff08;企业资源计划…...

传统认为越早进入行业越占优势,编程统计入行时间,行业红利数据,行业成熟期入行风险更低收益更稳。

“入行时间与行业红利期的匹配关系分析” 为主题&#xff0c;给出一套工程化、可教学、可复现的分析示例。一、实际应用场景描述&#xff08;Business Context&#xff09;在职业规划、行业研究与人才策略中&#xff0c;普遍存在一种观点&#xff1a;“越早进入一个行业&#x…...

MySQL 数据库基础入门:从概念到实战

前言&#xff1a;在程序开发中&#xff0c;数据存储是核心需求之一。虽然文件也能保存数据&#xff0c;但面对安全性、查询效率、海量存储等场景&#xff0c;文件存储的短板暴露无遗。而数据库作为专门的数据分析和管理工具&#xff0c;完美解决了这些问题&#xff0c;成为程序…...

Super IO插件终极指南:5分钟掌握Blender文件处理革命

Super IO插件终极指南&#xff1a;5分钟掌握Blender文件处理革命 【免费下载链接】super_io blender addon for copy paste import / export 项目地址: https://gitcode.com/gh_mirrors/su/super_io Super IO是一款彻底改变Blender工作流程的革命性插件&#xff0c;它通…...

企业如何通过API Key管理与审计日志加强内部AI应用管控

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业如何通过API Key管理与审计日志加强内部AI应用管控 对于在企业内部规模化部署大模型应用的团队而言&#xff0c;如何确保资源被…...

阿里云百炼接入OpenClaw全攻略

前置准备 已安装并可正常打开 OpenClaw Windows 版本 OpenClaw 部署包获取&#xff1a;https://xiake.yun/api/download/package/14?promoCodeIVD643FDE29AOpenClaw 顶部 Gateway 状态显示为在线准备好可正常登录的阿里云账号可正常访问阿里云百炼控制台地址确认账号已开通百…...

告别软件模拟!用GD32F303硬件I2C驱动AT24C02 EEPROM保姆级教程(附完整代码)

从软件模拟到硬件加速&#xff1a;GD32F303硬件I2C驱动AT24C02全流程解析 当你在嵌入式项目中频繁操作EEPROM时&#xff0c;是否遇到过这样的困扰&#xff1a;软件模拟I2C占用大量CPU资源&#xff0c;时序稳定性受中断影响&#xff0c;传输速率始终无法突破瓶颈&#xff1f;这些…...

JavaScript零基础到精通

&#x1f4da; 教程定位与目标 本教程专为‌零基础学习者‌设计&#xff0c;覆盖从‌语法入门‌到‌现代JavaScript精通‌的完整路径&#xff0c;内容严格遵循‌ES2026标准‌&#xff0c;融合‌MDN、freeCodeCamp、W3Schools‌权威结构&#xff0c;并适配‌中文学习者习惯‌。…...

不只是抓包:巧用Drony为Android APP设置“专属网络通道”,测试本地Mock服务

巧用Drony构建Android应用专属调试通道&#xff1a;从Mock服务到精准流量控制 在移动应用开发与测试过程中&#xff0c;前后端分离架构已成为主流范式。然而&#xff0c;当Android应用硬编码了生产环境API地址或缺乏灵活的配置机制时&#xff0c;如何在不修改代码的情况下将特定…...

MiGPT终极指南:如何将小爱音箱改造成AI语音助手

MiGPT终极指南&#xff1a;如何将小爱音箱改造成AI语音助手 【免费下载链接】mi-gpt &#x1f3e0; 将小爱音箱接入 ChatGPT 和豆包&#xff0c;改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 在智能家居日益普及的今天&#xff0…...