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内所要编写的代码

python 复制代码
import time
import unittest
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy

capabilities = 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))


    # 后置处理  关闭连接会话session
    def tearDown(self) -> None:
        self.driver.quit()


    # test
    def 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-完整代码

python 复制代码
import time
import unittest
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy

capabilities = 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))


    # 后置处理  关闭连接会话session
    def tearDown(self) -> None:
        self.driver.quit()


    # test
    def test_find(self):
        # 获取当前界面的信息
        myPackageInfo =  self.driver.current_package;
        print(myPackageInfo)
        # 获取当前页面的包名
        myActivityInfo = self.driver.current_activity
        print(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--一些说明

相关推荐
张愚歌1 分钟前
轻松打造个性化Leaflet地图标记
前端·javascript
华仔啊4 分钟前
CSS实现高级流光按钮动画,这几行代码堪称神来之笔
前端·css
歪歪10011 分钟前
详细介绍一下“集中同步+分布式入库”方案的具体实现步骤
开发语言·前端·分布式·后端·信息可视化
林太白21 分钟前
rust17-部门管理模块
前端·后端·rust
_处女座程序员的日常22 分钟前
如何预览常见格式word、excel、ppt、图片等格式的文档
前端·javascript·word·excel·开源软件
小兜全糖(xdqt)24 分钟前
python ppt转pdf以及图片提取
python·pdf·powerpoint
明月与玄武25 分钟前
前端文件上传终极指南:从原理到架构实践!
前端·前端文件上传终极指南
前端世界33 分钟前
用Python打造智能成绩分析系统:从异常处理到断言验证的全流程实战
服务器·数据库·python
yaoxin52112334 分钟前
229. Java 集合 - 操作集合中的多个元素(批量操作)
java·开发语言·python
岁岁岁平安34 分钟前
python 配置pip镜像源
python