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

Appium中的api(一)

目录

1.基础python代码准备

1--参数的一些说明

2--python内所要编写的代码

解释

 

2.如何获取包名和界面名

1-api

2-完整代码

代码解释

3.如何关闭驱动连接

4.安装卸载app

1--卸载

2--安装

5.判断app是否安装

6.将应用放到后台在切换为前台的时间

7.UIAutomatorViewer的使用

1--找到uiautomatorviewer.bat

2--获取信息

3--一些说明


1.基础python代码准备

1--参数的一些说明

    platformName='Android', # 名字,这个这就是这个
    automationName='uiautomator2', # 这个是使用的驱动
    deviceName='Android',  # 这个是设备名字可以随意
    appPackage='com.android.settings',  # 这个是你要启动的包名
    appActivity='.Settings',    # 这个是你要启动的活动单元名字
    language='en',
    locale='US',
    udid="127.0.0.1:21503"  # 这个是要连接的设备的ip和端口号    我用的是逍遥模拟器  端口号为 21503

2--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(self):time.sleep(2)
解释

这里有个测试类叫 MyElementUiTest,它继承了 unittest.TestCase。这意味着你可以用 Python 的单元测试框架来组织测试代码。

setUp 方法里,我们告诉 Appium 怎么启动一个应用。这里用到了一个叫 capabilities 的字典,里面包含了启动应用需要的信息,比如说是 Android 系统,用的是 UiAutomator2 驱动,要测试的是系统设置应用 (com.android.settings),以及一些其他的配置信息。

tearDown 方法是在每次测试之后运行的,主要是用来清理环境,比如关掉之前打开的应用。

test_find 方法是个具体的测试用例。目前这个方法里只有一个 time.sleep(2),作用是让脚本暂停两秒钟。这通常是为了给应用一点时间去加载或者是为了避免太快的操作导致的问题。但是最好还是用更精确的方法去等待元素出现,而不是硬编码地等待固定时间。

 

2.如何获取包名和界面名

1-api

 # 获取当前界面的包名和界面名
        print("当前界面信息")
        print(self.driver.current_activity)
        # 获取当前界面的包名
        print(self.driver.current_package)

2-完整代码

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(self):# 获取当前界面的信息myPackageInfo =  self.driver.current_package;print(myPackageInfo)# 获取当前页面的包名myActivityInfo = self.driver.current_activityprint(myActivityInfo)time.sleep(2)
代码解释
  • capabilities 字典中包含了启动一个Android应用所需的配置信息,如平台名称(platformName)、自动化框架(automationName)、设备名称(deviceName)、应用程序包名(appPackage)、应用程序启动Activity(appActivity)等。

  • appium_server_url 是运行Appium服务器的URL地址。

  • setUp方法中,使用webdriver.Remote函数来启动一个与Appium服务器的新会话,并通过提供的能力和选项来配置它。

  • tearDown方法在每个测试用例执行完毕后调用,用来关闭与Appium服务器的会话。

  • test_find方法中,首先打印了当前界面的应用程序包名(current_package),然后打印了当前活动的名称(current_activity)。最后,为了让测试更加稳定,增加了一个两秒的延时(time.sleep(2))。

3.如何关闭驱动连接

driver.quit()关闭的是当前连接

4.安装卸载app

1--卸载

self.driver.remove_app("要移除app的包名")

2--安装

self.driver.install_app("要安装的app路径名")

5.判断app是否安装

self.driver.is_app_installed("要判断的app包名")

6.将应用放到后台在切换为前台的时间

self.driver.background_app(5)

7.UIAutomatorViewer的使用

1--找到uiautomatorviewer.bat

找到android的SDK目录下的tools ===》bin ===》uiautomatorviewer.bat

2--获取信息

3--一些说明

相关文章:

Appium中的api(一)

目录 1.基础python代码准备 1--参数的一些说明 2--python内所要编写的代码 解释 2.如何获取包名和界面名 1-api 2-完整代码 代码解释 3.如何关闭驱动连接 4.安装卸载app 1--卸载 2--安装 5.判断app是否安装 6.将应用放到后台在切换为前台的时间 7.UIAutomatorViewer的使用 1--找…...

【AI辅助设计】没错!训练FLUX LoRA就这么简单!

前言 得益于开源社区的力量,在各位大佬的努力下,现在16G VRAM的家用电脑也可以训练FLUX的LoRA了 👏。 今天我使用fluxgym这个方法,训练LoRA,并记录过程。 篇幅有限,这里就不一一展示了,有需要的…...

Mac 下安装FastDFS

首先我们需要下载相对应的安装包: libfastcommonFastDFS 下载完成后我们先将其解压到桌面。 1.安装libfastcommon 我们进入到libfastcommon-master目录中执行./make.sh和sudo ./make.sh install,具体代码如下: 2.安装FastDFS 同安装libfa…...

人工智能的未来:重塑生活与工作的变革者

随着人工智能(AI)技术的快速发展,我们正处于一个前所未有的变革时代。AI不仅在医疗、企业运营和日常生活中发挥着重要作用,而且正在重新定义我们的生活和工作方式。本文将探讨人工智能技术的应用前景以及它如何改变我们的生活和工…...

【微服务】Java 对接飞书多维表格使用详解

目录 一、前言 二、前置操作 2.1 开通企业飞书账户 2.2 确保账户具备多维表操作权限 2.3 创建一张测试用的多维表 2.4 获取飞书开放平台文档 2.5 获取Java SDK 三、应用App相关操作 3.1 创建应用过程 3.2 应用发布过程 3.3 应用添加操作权限 四、多维表应用授权操作…...

学习threejs,使用粒子实现下雪特效

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Points简介1.11 ☘️…...

unity3d——Time

在Unity3D中,Time类是一个非常重要的工具类,它提供了一系列与时间相关的属性和方法,帮助开发者在游戏中实现各种时间相关的操作。以下是一些Time类常用的方法及其示例: 一、常用属性 Time.time 含义:表示从游戏开始到…...

天地图实现海量聚合marker--uniapp后端详细实现

本文章详细的讲解了前后端代码来 实现uniapp天地图功能的实现 以及 后端海量数据的聚合查询 和网格算法实现思路。 并对当数据量增加和用户频繁请求接口时可能导致服务器负载过高做了前后端优化。 前端uniapp: 实现了天地图的行政区划边界/地图切换/比例尺/海量数…...

Bug | 项目中数据库查询问题

问题描述 理论上,点击查询后,表头应当显示中文。而不是上面的在数据库中的表头【如上图示】 正常点击查询后,如果没有输入值,应当是查询所有的信息。 原因分析: 这里是直接使用SELECT * 导致的。例如: S…...

C++入门基础知识129—【关于C 库函数 - time()】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 库函数 - time()的相关内容&#xff0…...

大文件秒传,分片上传,断点续传

大文件分片上传 一 功能描述 1.文件通过web端分片多线程上传到服务端,然后web端发起分片合并,完成大文件分片上传功能 2.上传过的大文件,实现秒传 3.上传过程中,服务异常退出,实现断点续传 二 流程图 三 代码运行…...

多生境扩增子探秘:深度溯源与多样性解析

分析微生物组数据的组成结构的一个主要挑战是确定其潜在来源。在微生物来源分析中,随机森林、SourceTracker和FEAST都有较广泛应用。今天,小编就带大家看一篇发表在《iMeta》的文章,使用溯源技术追踪微生物的来源与去向,揭示生物在…...

Selenium4自动化测试常用函数总结,各种场景操作实战

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 seleninum作为自动化测试的工具,自然是提供了很多自动化操作的函数,下面列举下比较常用的函数,更多可见官方文档:…...

图像生成新范式:智源推出全能视觉生成模型 OmniGen

大型语言模型(LLM)的出现统一了语言生成任务,并彻底改变了人机交互。然而,在图像生成领域,能够在单一框架内处理各种任务的统一模型在很大程度上仍未得到探索。近日,智源推出了新的扩散模型架构 OmniGen&am…...

实现RPC接口的demo记录

1.Thrift RPC 接口实现 Demo Service public class DemoServiceImpl implements DemoService.Iface {private static final Logger logger LoggerFactory.getLogger(DemoServiceImpl.class);Overridepublic String sayHello(Context context, String msg) throws TException …...

Python期末题目 | 期末练习题【概念题+代码】

一、前言 Python 是一门功能强大且易于学习的编程语言,在高校中被广泛用作教学语言。Python 的期末考试通常会包含基础知识和编程实践,以考察学生的理解与应用能力。本文整理了一套 Python 期末练习题,包括选择题、填空题、判断题和代码题。…...

OpenCV基本操作(python开发)——(6)视频基本处理

OpenCV——视频基本处理 一、读取摄像头 import numpy as np import cv2cap cv2.VideoCapture(0) # 实例化VideoCapture对象, 0表示第一个摄像头 while cap.isOpened():ret, frame cap.read() # 捕获帧cv2.imshow("frame", frame)c cv2.waitKey(1) # 等待1毫…...

详解Java之Spring MVC篇一

目录 Spring MVC 官方介绍 MVC RequestMapping 传递参数 无参数 单个参数 针对String类型 针对Integer类型 针对int类型 针对自定义类型 多个参数 参数重命名 参数强制一致 参数不强制一致 传递数组 ​编辑传递List ​编辑 传递JSON ​编辑 从路径中获取参…...

ubuntu20.04上使用 Verdaccio 搭建 npm 私有仓库

安装nvm 首先安装必要的工具: apt update apt install curl下载并执行nvm安装脚本: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash添加环境变量(如果安装脚本没有自动添加)。编辑 ~/.bash…...

Python实现办公自动化的数据可视化与报表生成

在 Python 中,可以利用多个库来实现办公自动化中的数据可视化与报表生成。以下是具体的方法: 一、数据可视化 使用 matplotlib 库 matplotlib 是一个强大的 Python 绘图库,可以创建各种类型的静态、动态和交互式图表。示例代码:i…...

前端知识串联笔记(更新中...)

1.MVVM MVVM 是指 Model - View - ViewModel,Model 是数据与业务逻辑,View 是视图,ViewModel 用于连接 View 和 Model Model ---> View:将数据转化成所看到的页面,实现的方式:Data Bindings -- 数据绑定…...

PostgreSQL根据字符串的长度排序

PostgreSQL根据字符串的长度排序 在 PostgreSQL 中,你可以使用 LENGTH 函数来获取字符串的长度,并根据这个长度进行排序。LENGTH 函数会返回字符串的字符数。 以下是一个基本的 SQL 查询示例,它根据 some_column 字符串列的长度对表中的行进…...

计算机网络:网络层 —— IP数据报的发送和转发过程

文章目录 IP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报示例 IP数据报的发送和转发过程 IP 数据报的发送和转发过程包含以下两个过程: 主机发送IP数据报路由器转发IP数据报 直接交付:源主机与目的主机在同一网络中间接交付:…...

【算力基础】GPU算力计算和其他相关基础(TFLOPS/TOPS/FP32/INT8...)

文章目录 :one: 算力的常见指标:two: 算力计算:three: 常用链接 🚀 本文主要是聚焦于深度学习领域的 GPU的算力估计,其他类型的硬件设备如CPU可以类比参考。 1️⃣ 算力的常见指标 算力衡量主要与运算速度和精度这两个指标有关。 🌔速度指…...

UI自动化测试(app端)4.0

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…...

C#与C++交互开发系列(十):数组传递的几种形式

前言 在C#和C的交互开发中,数组传递是一个非常常见且实用的场景。数组可以作为方法的参数,也可以作为响应结果返回。在本篇博客中,我们将探讨几种常见的数组传递方式,展示如何在C#与C之间进行有效的数据交换。我们将主要介绍以下…...

【C++复习】第一弹-基础性语法

前言 学习了C语法这么久了,我其实觉得,我们学习一门语言应该更加注重使用性,对于语法的细节可以通过具体的项目去重新造轮子的时候再去抠细节,也就是说你得学会先走,在去想我们如何走的,身体的哪些肌肉在发…...

软考高级备考记录

一 报考条件和报名流程 报考条件 该考试具有水平考试性质,报考任何级别不需要学历、资历条件,只要达到相应的专业技术水平就可以报考相应的级别 报名流程 软考报名官网:中国计算机技术职业资格网 官网上有 报名时间,考试…...

图为大模型一体机新探索,赋能智能家居行业

在21世纪的今天,科技的飞速进步正以前所未有的速度重塑着我们的生活方式。从智能手机到物联网,从大数据到人工智能,每一项技术创新都在为人类带来前所未有的便利与效率。其中,图为AI大模型一体机作为人工智能领域的最新成果&#…...

精氨酸/赖氨酸多肽(芋螺肽)

产品简介: 芋螺肽,源自瑞士尖端科技,是一种模拟芋螺毒素的生物活性肽。它以其独特的分子结构和高选择性作用于电压门控钠离子通道(特别是Nav1.4),为您提供安全、自然且不僵硬的回春效果。芋螺肽&#xff0…...