当前位置: 首页 > 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--一些说明

http://www.lryc.cn/news/471589.html

相关文章:

  • 【AI辅助设计】没错!训练FLUX LoRA就这么简单!
  • Mac 下安装FastDFS
  • 人工智能的未来:重塑生活与工作的变革者
  • 【微服务】Java 对接飞书多维表格使用详解
  • 学习threejs,使用粒子实现下雪特效
  • unity3d——Time
  • 天地图实现海量聚合marker--uniapp后端详细实现
  • Bug | 项目中数据库查询问题
  • C++入门基础知识129—【关于C 库函数 - time()】
  • 大文件秒传,分片上传,断点续传
  • 多生境扩增子探秘:深度溯源与多样性解析
  • Selenium4自动化测试常用函数总结,各种场景操作实战
  • 图像生成新范式:智源推出全能视觉生成模型 OmniGen
  • 实现RPC接口的demo记录
  • Python期末题目 | 期末练习题【概念题+代码】
  • OpenCV基本操作(python开发)——(6)视频基本处理
  • 详解Java之Spring MVC篇一
  • ubuntu20.04上使用 Verdaccio 搭建 npm 私有仓库
  • Python实现办公自动化的数据可视化与报表生成
  • 前端知识串联笔记(更新中...)
  • PostgreSQL根据字符串的长度排序
  • 计算机网络:网络层 —— IP数据报的发送和转发过程
  • 【算力基础】GPU算力计算和其他相关基础(TFLOPS/TOPS/FP32/INT8...)
  • UI自动化测试(app端)4.0
  • C#与C++交互开发系列(十):数组传递的几种形式
  • 【C++复习】第一弹-基础性语法
  • 软考高级备考记录
  • 图为大模型一体机新探索,赋能智能家居行业
  • 精氨酸/赖氨酸多肽(芋螺肽)
  • C++音视频04:音视频编码、生成图片