6.Appium Xpath定位方式大全

本文详细介绍了Appium中使用XPath进行元素定位的各种方法,包括利用id、text、class、content-desc属性,以及contains模糊定位、组合定位和层级定位。XPath作为万能定位工具,对于具有唯一属性或文本的元素,提供了多种灵活的定位策略。

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

Xpath定位是appium中最重要的一种定位方式,也是一种万能的定位方法,如果元素id是唯一的,xpath可以利用id属性定位;如果text属性是唯一的,xpath可以结合text属性定位 ;如果class属性唯一,xpath可以利用class属性定位。xpath也可以组合定位,如果一个元素有2个属性,通过xpath可以同时匹配两个属性,text,id,class等这些属性都能够任意组合定位。Xpath也可用实现层级定位,如果一个元素,除了class属性(class属性是一定会有的)其它属性都没有,这个时候可以找到它父元素,通过父元素定位子元素

1.Xpath利用id定位

如果元素id属性是唯一的,可以通过id属性定位 //*[@resource-id=’id属性’]
 

find_element_by_xpath(“//*[@resource-id=’xxx’]”)

find_elements_by_xpath(“//*[@resource-id=’xxx’]”)

  示例:

from appium import webdriver
import time
from selenium.common.exceptions import NoSuchElementException
def android_driver():
    desired_cap={}
    desired_cap['platformName']="Android"
    desired_cap['platformVersion']='8.1.0'
    desired_cap['deviceName']='HONOR9X'
    desired_cap['udid']='5fb5c4cc'  #ip或者设备好
    desired_cap['appPackage']='com.ss.android.article.news'   #要启动的应用包名
    desired_cap['appActivity']='com.ss.android.article.news.searchIcon2'  #要启动的应用activity
    desired_cap['noReset']=True   #不需要重新登录
    driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_cap)

    return driver

if __name__=="__main__":
    driver=android_driver()
    time.sleep(10)
    try:
        element=driver.find_element_by_xpath("//*[@resource-id='com.ss.android.article.news:id/c0k']")
        #element = driver.find_element_by_id('com.ss.android.article.news:id/bzw')
    except NoSuchElementException:
        print("没有找到这个摄像元素")
    else:
        print("已经找到这个摄像元素了,点击他")
        element.click()

当有多个元素的id值相同时,可以使用find_elements_by_xpath进行查找,使用的时候要加上角标

from appium import webdriver
import time
from selenium.common.exceptions import NoSuchElementException
def android_driver():
    desired_cap={}
    desired_cap['platformName']="Android"
    desired_cap['platformVersion']='8.1.0'
    desired_cap['deviceName']='HONOR9X'
    desired_cap['udid']='5fb5c4cc'  #ip或者设备好
    desired_cap['appPackage']='com.ss.android.article.news'   #要启动的应用包名
    desired_cap['appActivity']='com.ss.android.article.news.searchIcon2'  #要启动的应用activity
    desired_cap['noReset']=True   #不需要重新登录
    driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_cap)

    return driver

if __name__=="__main__":
    driver=android_driver()
    time.sleep(10)
    try:
        #element=driver.find_element_by_xpath("//*[@resource-id='com.ss.android.article.news:id/c0k']")
        #element = driver.find_element_by_id('com.ss.android.article.news:id/bzw')
        elements=driver.find_elements_by_xpath("//*[@resource-id='com.ss.android.article.news:id/uh']")
    except NoSuchElementException:
        print("没有找到这个元素")
    else:
        print("已经找到这个元素了,点击第一个")
        elements[1].click()  #使用角标,点击第一个

2.Xpath利用text定位

text属性定位 如果元素text属性是唯一的,可以通过text文本定位

//*[@text=’text文本属性’]
find_element_by_xpath(“//*[@text=’xxx’]”)  #通过文本属性xxx定位元素

示例:

from appium import webdriver
import time
from selenium.common.exceptions import NoSuchElementException
def android_driver():
    desired_cap={}
    desired_cap['platformName']="Android"
    desired_cap['platformVersion']='
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术提高效率

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值