目录
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 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-完整代码
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