Appium中的api(二)

目录

元素定位操作api

1--通过id定位api

2--通过class获取定位元素

3--通过xpath表达式定位元素

4.完整代码

解释

效果


元素定位操作api

1--通过id定位api

注:driver.find_element是获取单个元素

# 通过id获取

mySearchId ="com.android.settings:id/search_action_bar"

searchElement = self.driver.find_element(AppiumBy.ID,mySearchId)

2--通过class获取定位元素

注:driver.find_elements是获取一组元素集合,如果没有则会报错

print("通过class获取一组元素")
# 通过class获取一组TextView
myElements= self.driver.find_elements(by=AppiumBy.CLASS_NAME, value=myClassName)

#循环遍历输出

for myElementC in myElements:

print(myElementC.text)

3--通过xpath表达式定位元素

通过xpath获取元素

myXpath = "//android.widget.TextView[@text='电池']"

myElementByXpaths = self.driver.find_elements(by=AppiumBy.XPATH, value=myXpath)

4.完整代码

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

        # 通过id获取元素
        mySearchId = "com.android.settings:id/search_action_bar"
        myElement = self.driver.find_element(by=AppiumBy.ID, value=mySearchId)
        time.sleep(2)


        print("通过class获取单个元素")
        # 通过class获取元素
        myClassName = "android.widget.TextView"
        myElementByClassName = self.driver.find_element(by=AppiumBy.CLASS_NAME, value=myClassName)
        # 输出元素的信息
        print(myElementByClassName.text)

        # 获取text属性值
        print(myElementByClassName.get_attribute("text"))
        # 获取class属性值
        print(myElementByClassName.get_attribute("class"))
        # 获取package属性值
        print(myElementByClassName.get_attribute("package"))
        # 获取content-desc属性值
        print(myElementByClassName.get_attribute("content-desc"))








        print("通过class获取一组元素")
        # 通过class获取一组TextView
        myElements = self.driver.find_elements(by=AppiumBy.CLASS_NAME, value=myClassName)

        #循环遍历输出
        for myElementC in myElements:
            print(myElementC.text)


        print("通过xpath获取元素")
        # 通过xpath获取元素
        myXpath = "//android.widget.TextView[@text='电池']"
        myElementByXpaths = self.driver.find_elements(by=AppiumBy.XPATH, value=myXpath)
        print(myElementByXpaths)
        time.sleep(5)
解释
  1. 导入必要的模块

    • time: 提供了各种时间相关的函数
    • unittest: Python内置的单元测试框架。
    • webdriverUiAutomator2Optionsappium 模块中导入,用于初始化WebDriver会话。
    • AppiumBy 提供了查找元素的方式。
  2. 设置测试能力(Capabilities)

    • platformName:指定目标平台,这里是Android。
    • automationName:指定使用的自动化引擎,这里是UiAutomator2。
    • deviceName:模拟或真实设备的名称。
    • appPackage:应用的包名。
    • appActivity:启动时的主Activity名称。
    • languagelocale:设置语言和区域。
    • udid:设备的唯一标识符,在这里指定了一个本地模拟器的地址。
  3. 初始化WebDriver会话

    • setUp方法中创建了一个WebDriver实例,用于控制设备上的应用。
  4. 清理工作

    • tearDown方法用于在测试结束后关闭WebDriver会话。
  5. 测试方法

    • test_find_by_id 方法包含了一系列操作来验证元素查找的功能。
      • 使用current_packagecurrent_activity来获取当前的包名和Activity名称。
      • 使用find_element通过ID查找元素。
      • 使用find_element通过CLASS_NAME查找元素,并打印相关信息。
      • 使用find_elements通过CLASS_NAME查找多个元素,并遍历输出文本。
      • 使用find_elements通过XPath查找元素,虽然这里查找的是多个元素,但是XPath只匹配了一个元素。
效果
相关推荐
z千鑫8 分钟前
【人工智能】深入理解PyTorch:从0开始完整教程!全文注解
人工智能·pytorch·python·gpt·深度学习·ai编程
MessiGo32 分钟前
Python 爬虫 (1)基础 | 基础操作
开发语言·python
肥猪猪爸1 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
LZXCyrus1 小时前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
Enougme1 小时前
Appium常用的使用方法(一)
python·appium
懷淰メ2 小时前
PyQt飞机大战游戏(附下载地址)
开发语言·python·qt·游戏·pyqt·游戏开发·pyqt5
hummhumm2 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
hummhumm2 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
每天吃饭的羊2 小时前
python里的数据结构
开发语言·python
卡卡_R-Python3 小时前
UCI Heart Disease Data Set—— UCI 心脏病数据集介绍
python·plotly·django·virtualenv·pygame