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--一些说明

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并联 高电压、高电流 放大器实现 2 倍输出电流模块±2A

1.1 并联输出电路设计注意事项 直接对两个功率运算放大器的输出进行硬接线并不是一种好的电气做法。如果两个运算放大器的输出直接连接在一起,则可能会导致不均匀的电流共享。这是因为其中的每个运算放大器都尝试强制施加略微不同的 Vout 电压,该电压取决…

vulnhub(16):sickos(两种打点方式)

端口 ip:192.168.72.154 nmap -Pn -p- 192.168.72.154 --min-rate 10000PORT STATE SERVICE 22 open ssh 3128 open http-proxy 8080 closed http-proxy web渗透方式一:web后台 正常访问80端口,是不开放的,我们需要配置…

高速定向广播声光预警系统赋能高速安全管控

近年来,高速重大交通事故屡见不鲜,安全管控一直是高速运营的重中之重。如何利用现代化技术和信息化手段,创新、智能、高效的压降交通事故的发生概率,优化交通安全管控质量,是近年来交管部门的主要工作,也是…

云原生Istio基础

一.Service Mesh 架构 Service Mesh(服务网格)是一种用于处理服务到服务通信的专用基础设施层。它的主要目的是将微服务之间复杂的通信和治理逻辑从微服务代码中分离出来,放到一个独立的层中进行管理。传统的微服务架构中&#x…

浅析Android View绘制过程中的Surface

前言 在《浅析Android中View的测量布局流程》中我们对VSYNC信号到达App进程之后开启的View布局过程进行了分析,经过对整个App界面的View树进行遍历完成了测量和布局,确定了View的大小以及在屏幕中所处的位置。但是,如果想让用户在屏幕上看到…

【十六进制数转十进制数 】

【十六进制数转十进制数 】 C语言版本C 版本Java版本Python版本 💐The Begin💐点点关注,收藏不迷路💐 从键盘接收一个十六进制数,编程实现将其转换成十进制数。 输入 输入一个十六进制数 输出 输出一个十进制数 样…

GitHub 上的优质 Linux 开源项目,真滴硬核!

作为一名互联网人,提起 Linux 大家都不陌生,尤其是日常跟 Linux 操作系统打交道最多的,最熟悉不过了。互联网上关于 Linux 相关的教程和资料也非常的多,但是当你从中筛选出真正对自己有帮助的资料是需要花费很大精力与时间的。 G…

JVM基础(内存结构)

文章目录 内存结构JAVA堆方法区 (Method Area)运行时常量池(Runtime Constant Pool) 虚拟机栈 (Java Virtual Machine Stack)本地方法摘栈(Native Method Stacks)程序计数器&#xf…

交易的人生就是对未来不断的挑战!

在这个充满不确定性的市场中,我们每个人都渴望找到一条通往成功的路径。在Eagle Trader交易员中,有一位资深交易者,他不仅对交易有着不同寻常的执着和热爱,而且他的真诚见解和独到的交易哲学,可能会触动你的心弦。他的…

尚硅谷-react教程-求和案例-@redux-devtools/extension 开发者工具使用-笔记

## 7.求和案例_react-redux开发者工具的使用(1).npm install redux-devtools/extension(2).store中进行配置import { composeWithDevTools } from redux-devtools/extension;export default createStore(allReducer,composeWithDevTools(applyMiddleware(thunk))) src/redux/s…

OpenCV系列教程六:信用卡数字识别、人脸检测、车牌/答题卡识别、OCR

文章目录 一、信用卡数字识别1.1 模板匹配1.2 匹配多个对象1.3 处理数字模板1.4 预处理卡片信息,得到4组数字块。1.5 遍历数字块,将卡片中每个数字与模板数字进行匹配 二、人脸检测2.1人脸检测算法原理2.2 OpenCV中的人脸检测流程 三、车牌识别3.1 安装t…

一行代码,实现请假审批流程(Java版)

首先画一个流程图 测试流程图 activiti 项目基础配置 activiti 工作流引擎数据库设计 工作流引擎API 介绍 什么是BPMN流程图 工作流引擎同类对比 继续学习方向 总结 工作流审批功能是办公OA系统核心能力,如果让你设计一个工作流审批系统,你会吗…

SDK5(note中)

在原有SDK5(note上)里的代码上添加了 timer的消息 LRESULT OnCreate(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {OutputDebugString(_T("[11syy]WM_CREATE\n"));//创建一个计时器SetTimer(hwnd, 1, 1000, nullptr);return TRUE; }LRESULT OnClese(HWND …

全星魅 北斗三号船载终端的优势和领域利用

QM43BS型北斗三号船载终端:开启航海通信与定位新时代 在当今这个信息化高速发展的时代,航海领域对于通信与定位技术的需求愈发迫切。深圳市全民北斗科技有限公司,作为北斗技术应用领域的佼佼者,针对数传通信和位置服务应用&#x…

Python 实现深度学习模型预测控制--预测模型构建

链接:深度学习模型预测控制 链接:WangXiaoMingo/TensorDL-MPC: DL-MPC(deep learning model predictive control) is a software toolkit developed based on the Python and TensorFlow frameworks, designed to enhance the performance of tradition…

你了解kafka消息队列么?

消息队列概述 一. 消息队列组件二. 消息队列通信模式2.1 点对点模式2.2 发布/订阅模式 三. 消息队列的优缺点3.1 消息队列的优点3.2 消息队列的缺点 四. 总结 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者&…

Android Junit 单元测试 | 依赖配置和编译报错解决

问题 为什么在依赖中添加了testImplement在build APK的时候还是会报错?是因为没有识别到test文件夹是test源代码路径吗? 最常见的配置有: implementation - 所有源代码集(包括test源代码集)中都有该依赖库.testImplementation - 依赖关系仅在test源代码…

理解磁盘结构---CHS---LAB---文件系统

1,初步了解磁盘 机械磁盘是计算机中唯的一个机械设备, 特点是慢,容量大,价格便宜。 磁盘上面的光面,由数不清的小磁铁构成,我们知道磁铁是有n/s极的,这刚好与二进制的&…

selenium脚本编写及八大元素定位方法

selenium脚本编写 上篇文章介绍了selenium环境搭建,搭建好之后就可以开始写代码了 基础脚本,打开一个网址 from selenium import webdriver driver webdriver.Chrome()#打开chrome浏览器 driver.get(https://www.baidu.com) #打开百度 打开本地HTML文件 上篇…

利用Kubernetes原生特性实现简单的灰度发布和蓝绿发布

部分借鉴地址: https://support.huaweicloud.com/intl/zh-cn/bestpractice-cce/cce_bestpractice_10002.html 1.原理介绍 用户通常使用无状态负载 Deployment、有状态负载 StatefulSet等Kubernetes对象来部署业务,每个工作负载管理一组Pod。以Deployment为例&#x…