当前位置:实例文章 » JAVA Web实例» [文章]Appium+python自动化(二十一)- 让猴子按你指令大闹手机,让我们都成为耍猴高手(超详解)

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)

# 使用

其他信息

其他资源

Top