Xpath定位是appium中最重要的一种定位方式,也是一种万能的定位方法,如果元素id是唯一的,xpath可以利用id属性定位;如果text属性是唯一的,xpath可以结合text属性定位 ;如果class属性唯一,xpath可以利用class属性定位。xpath也可以组合定位,如果一个元素有2个属性,通过xpath可以同时匹配两个属性,text,id,class等这些属性都能够任意组合定位。Xpath也可用实现层级定位,如果一个元素,除了class属性(class属性是一定会有的)其它属性都没有,这个时候可以找到它父元素,通过父元素定位子元素 如果元素id属性是唯一的,可以通过id属性定位 //*[@resource-id=’id属性’] 示例: 当有多个元素的id值相同时,可以使用find_elements_by_xpath进行查找,使用的时候要加上角标 text属性定位 如果元素text属性是唯一的,可以通过text文本定位 示例: 如果class属性唯一的话,可以通过class属性定位 示例: 示例: 对于一个元素,其 content-desc属性、text属性、id属性、class属性不是固定的,但是有一部分是固定的,这种可以使用模糊定位。 如果一个元素有2个以上属性,通过xpath可以同时匹配2个属性进行组合定位,text、resource-id、class、index、contend-desc这些属性都能够任意组合定位。 <1>通过id和class属性定位 <2>text和index属性定位 <3>class和text属性定位 <4>class和index属性定位 如果一个元素只有class属性(class属性肯定会有),其它属性都没有,这种情况上面的方法就不适用了,这个时候可以通过父元素定位子元素,当然也可以通过子元素定位到父元素 <1>通过父元素定位子元素 <2>通过子元素定位父元素 通过子元素定位父元素,子需要再子元素后加两个点 详情请点击 https://study.163.com/course/introduction/1209833813.htm 查看1.Xpath利用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('https://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()
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('https://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文本属性’] 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']='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('https://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']") element=driver.find_element_by_xpath("//*[@text='西瓜视频']") except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
3.Xpath利用class属性定位
dirver.find_element_by_xpath(“//*[@class='class属性值']”)
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('https://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("//*[@class='android.widget.LinearLayout']") except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他")
4.Xpath利用content-desc定位
dirver.find_element_by_xpath(“//*[@content-desc='desc的文本']”)
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('https://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("//*[@content-desc='关注']") except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
5.Xpath contains 模糊定位
//*[contains(@text,”text属性”)] //*[contains(@content-desc,”content-desc属性”)] //*[contains(@resource-id,”id属性”)] //*[contains(@class,”class属性”)] (PS:如果属性值有中文的话,属性值用双引号)
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('https://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('//*[contains(@text,"西瓜")]') #不需要把元素text属性西瓜视频的全称写全也能找到 except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
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('https://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('//*[contains(@content-desc,"抗击")]') except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
6.Xpath组合定位
id_class='//class属性[@resource-id="id属性值"]' driver.find_element_by_xpath(id_class).click()
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('https://127.0.0.1:4723/wd/hub',desired_cap) return driver if __name__=="__main__": driver=android_driver() time.sleep(10) try: id_class='//android.widget.ImageView[@resource-id="com.ss.android.article.news:id/c0k"]' element=driver.find_element_by_xpath(id_class) except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
text_index=’//*[@text=”text属性值” and @index=”index属性值”]’ driver.find_element_by_xpath(text_index).click()
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('https://127.0.0.1:4723/wd/hub',desired_cap) return driver if __name__=="__main__": driver=android_driver() time.sleep(10) try: text_index='//*[@text="西瓜视频" and @index="1"]' element=driver.find_element_by_xpath(text_index) except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
class_text=’//class属性值[@text=”text属性值”]’ driver.find_element_by_xpath(class_text)
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('https://127.0.0.1:4723/wd/hub',desired_cap) return driver if __name__=="__main__": driver=android_driver() time.sleep(10) try: class_text='//android.widget.TextView[@text="西瓜视频"]' element=driver.find_element_by_xpath(class_text) except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
class_index='//class属性值[@index="xx"]' element= driver.find_element_by_xpath(class_index)
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('https://127.0.0.1:4723/wd/hub',desired_cap) return driver if __name__=="__main__": driver=android_driver() time.sleep(10) try: class_index='//android.widget.LinearLayout[@index="2"]' element=driver.find_element_by_xpath(class_index) except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
7.Xpath层级定位
father_sun=’//*[@resource-id=”父元素id属性”]/子元素class属性’ driver.find_element_by_xpath(father_sun)
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('https://127.0.0.1:4723/wd/hub',desired_cap) return driver if __name__=="__main__": driver=android_driver() time.sleep(10) try: #通过父元素的id找到父元素,然后再通过子元素的class属性找到子元素 father_sun='//*[@resource-id="com.ss.android.article.news:id/uh"]/android.widget.TextView' element=driver.find_element_by_xpath(father_sun) except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
sun_father =’//*[@resource-id=”父元素id属性”]/..’ driver.find_element_by_xpath(sun_father)
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('https://127.0.0.1:4723/wd/hub',desired_cap) return driver if __name__=="__main__": driver=android_driver() time.sleep(10) try: #通过子元素的id,定位到其父元素 sun_father='//*[@resource-id="com.ss.android.article.news:id/c0k"]/..' element=driver.find_element_by_xpath(sun_father) except NoSuchElementException: print("没有找到这个元素") else: print("已经找到这个元素了,点击他") element.click()
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算