Appium+python自动化(二十一)- 让猴子按你指令大闹手机,让我们都成为耍猴高手(超详解)
发布人:shili8
发布时间:2025-03-03 01:47
阅读次数:0
**Appium + Python 自动化 (二十一) - 让猴子按你指令大闹手机**
在前面的文章中,我们已经学习了如何使用 Appium 和 Python 来自动化移动端应用的测试。然而,仅仅知道这些知识还不够,我们需要通过实践来成为真正的耍猴高手。
在本篇文章中,我们将深入探讨如何使用 Appium 和 Python 来实现更复杂的自动化任务。我们将学习如何使用各种元素定位策略、操作元素、处理弹窗等技巧,让我们的测试变得更加智能和灵活。
**环境准备**
为了开始我们的实践之旅,我们需要准备以下环境:
* Appium Server:我们需要安装并启动 Appium Server,端口号为4723。
* Python:我们需要安装 Python3.x,并且确保 pip 包管理工具已经安装。
* Appium-Python-Client 库:我们需要使用 pip 安装 Appium-Python-Client 库。
**元素定位策略**
在 Appium 中,我们可以使用各种元素定位策略来找到应用中的元素。以下是常见的元素定位策略:
###1. idid 是一种简单而有效的定位策略,通过给元素设置一个唯一的 id 值,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 id 定位元素element = driver.find_element_by_id('com.example.app:id/username') print(element.text)
###2. class_nameclass_name 是一种基于类名的定位策略,通过给元素设置一个类名,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 class_name 定位元素element = driver.find_element_by_class_name('android.widget.EditText') print(element.text)
###3. xpathxpath 是一种基于 XPath 表达式的定位策略,通过给元素设置一个 XPath 表达式,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 xpath 定位元素element = driver.find_element_by_xpath('//android.widget.EditText[@text="Username"]') print(element.text)
###4. accessibility_idaccessibility_id 是一种基于可访问性 id 的定位策略,通过给元素设置一个可访问性 id 值,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 accessibility_id 定位元素element = driver.find_element_by_accessibility_id('Username') print(element.text)
###5. namename 是一种基于名称的定位策略,通过给元素设置一个名称,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 name 定位元素element = driver.find_element_by_name('Username') print(element.text)
###6. descriptiondescription 是一种基于描述的定位策略,通过给元素设置一个描述,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 description 定位元素element = driver.find_element_by_description('Username') print(element.text)
###7. resource-idresource-id 是一种基于资源 id 的定位策略,通过给元素设置一个资源 id 值,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 resource-id 定位元素element = driver.find_element_by_resource_id('com.example.app:id/username') print(element.text)
###8. classclass 是一种基于类名的定位策略,通过给元素设置一个类名,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 class 定位元素element = driver.find_element_by_class('android.widget.EditText') print(element.text)
###9. idid 是一种基于 id 值的定位策略,通过给元素设置一个 id 值,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 id 定位元素element = driver.find_element_by_id('com.example.app:id/username') print(element.text)
###10. namename 是一种基于名称的定位策略,通过给元素设置一个名称,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 name 定位元素element = driver.find_element_by_name('Username') print(element.text)
###11. descriptiondescription 是一种基于描述的定位策略,通过给元素设置一个描述,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用 description 定位元素element = driver.find_element_by_description('Username') print(element.text)
###12. resource-idresource-id 是一种基于资源 id 的定位策略,通过给元素设置一个资源 id 值,可以快速找到该元素。
from appium import webdriver# 定义 Appium Server 的 URLurl = ' /> # 定义测试设备信息device_info = { 'platformName': 'Android', 'platformVersion': '10', 'deviceName': 'emulator-5554' } # 创建一个 WebDriver 对象driver = webdriver.Remote(url, device_info) # 使用