appium_获取元素状态

本文详细介绍如何使用Appium获取Android应用中元素的各种属性,包括text、resource-id、classname、content-desc和checked值,以及元素坐标的获取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

元素的属性我们经常会用到,当定位到某个元素后,有时会需要用到这个元素的 text值、className、resource-id、checked等。 
一般标准的属性我们都可以通过get_attribute(“属性名称”)来获取,我们来看看下面截图的元素都是怎么获取的吧。从上到下来看。
我们从text开始讲,我们先通过xpath方式定位到这个元素
# coding:utf-8
from appium import webdriver
import time

desired_caps = {
                "platformName": "Android",
                "deviceName": "emulator-5554",
                "platformVersion": "5.1.1",
                "appPackage": "com.sdu.didi.gsui",
                "noReset": True,
                "appActivity": "com.didichuxing.driver.sdk.LauncherActivity"
                }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.find_element_by_xpath("//android.widget.EditText[@resource-id='com.sdu.didi.gsui:id/et_phone' and @text='请输入手机号码']").click()
driver.find_element_by_xpath("//android.widget.EditText[@resource-id='com.sdu.didi.gsui:id/et_phone' and @text='请输入手机号码']").send_keys("123455")
time.sleep(3)
a = driver.find_element_by_xpath("//android.widget.CheckBox[@text='同意']")
获取 text方法有:
print(a.text)
print(a.get_attribute("text"))
虽然有两种方法,但一般都用第一种,因为写法比较简单。知道有第二种方法就好了。
 
获取 resource-id值方法:
print(a.get_attribute("resourceId"))
获取 classname值方法:
print(a.get_attribute("className"))
print(a.tag_name)
获取 content-desc值方法:
print(a.get_attribute("name"))
这里特别说明一下,当那个content-desc的值为空的时候,这个方法获取的是元素text的值,只有当content-desc不为空才返回对应的值。 
 
获取 check值方法:
print(a.get_attribute("checked"))
 
元素里只要属性值是布尔型的,即 false or true。都可以通过这个方法来获取,就不一一列出了。这里的第二种方法经常用到,重点掌握!!
获取元素坐标:
print(a.size)
print(a.location)
基本上就这些,定位到元素后,元素里的属性都是可以获取到的。
 
 

作者:含笑半步颠√

博客链接:https://www.cnblogs.com/lixy-88428977

声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如果您认为还不错,欢迎转载。转载与引用请注明作者及出处。

转载于:https://www.cnblogs.com/lixy-88428977/p/9773331.html

class BaseTestCase(unittest.TestCase): def setUp(self): file_name = 'capabilities.yml' config = read_yaml_file(os.path.join(get_project_root_path(),'data',file_name)) # 获取 Appium 配置 appium_config = config['appium'] # 初始化 Appium 选项 options = UiAutomator2Options().load_capabilities(appium_config['capabilities']) # 初始化驱动 self.driver = webdriver.Remote(appium_config['appium_server_url'], options=options) def tearDown(self): if self.driver: self.driver.quit() 测试类:import unittest from time import sleep from appium.webdriver.common.appiumby import AppiumBy from basic.appium_driver import BaseTestCase class TestAppium(BaseTestCase): def test_find_battery(self): el = self.driver.find_element(by=AppiumBy.XPATH, value='(//android.view.View[@content-desc="播放"])[1]') el.click() sleep(4) self.driver.find_element(by=AppiumBy.XPATH,value='(//android.view.View[@content-desc="播放"])[2]').click() sleep(4) def test_find_soundrecorder(self): el = self.driver.find_element(by=AppiumBy.ANDROID_UIAUTOMATOR, value='new UiSelector().text("你好日产")') el.click() sleep(4) self.driver.back() self.driver.find_element(by=AppiumBy.XPATH, value='(//android.view.View[@content-desc="播放"])[2]').click() sleep(4) def test_switch_app(self): self.driver.activate_app('com.android.soundrecorder') sleep(3) self.driver.terminate_app("com.android.soundrecorder") # 需要指定包名 self.driver.activate_app('com.tencent.mobileqq') sleep(3) self.driver.press_keycode(3) # Android的HOME键 if __name__ == '__main__': unittest.main() 这两个测试代码合理吗?可以在测试结束正常用到tearDown吗?
03-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值