xpath定位元素

在做UI自動化的時候,可能要用到元素定位,因此,今天來細講一下xpath的元素定位

1、selenium一些基本的元素定位方法

id定位、xpath定位、css定位這三個使用較爲頻繁,必須掌握;其餘的定位方法幾乎不怎麼使用,瞭解即可。

"""


id定位、xpath定位、css定位這三個使用較爲頻繁,必須掌握
其餘的定位方法幾乎不怎麼使用,瞭解即可

"""
from selenium.webdriver import Chrome
import  time
driver = Chrome()
driver.get("http://www.baidu.com")

# 1、通過元素的id進行定位
# driver.find_element_by_id("kw").send_keys("王者榮耀")   # 輸入框的id是kw
# driver.find_element_by_id("su").click()               # 百度一下該按鈕的id是su
# time.sleep(3)

# 2、通過鏈接標籤(a標籤)的文本進行定位
# driver.find_element_by_link_text("貼吧").click()
# time.sleep(3)
# tips:非鏈接標籤不能使用該方法

# 3、通過鏈接標籤的文本(部分匹配)進行定位
# driver.find_element_by_partial_link_text("hao").click()  # 本意是想點擊hao123這個鏈接,但是此時可以進行部分匹配就能找到
# time.sleep(3)

# 4、通過標籤名去查找,此種方法不常用,容易找到多個相同的,不建議
# driver.find_element_by_tag_name("input")
# time.sleep(3)

# 5、通過class屬性來進行定位(如果class有多個值,則只能傳一個)
# driver.find_element_by_class_name()

# 6、通過name屬性來進行定位
# driver.find_element_by_name("wd")

# 7、xpath定位,使用頻率最高,要填xpath的表達式
# driver.find_element_by_xpath('//*[@id="kw"]').send_keys("王者榮耀")

# 8、css定位
# driver.find_element_by_css_selector('#kw').send_keys("王者榮耀")

driver.quit()

標註紅色的這三種,必須熟練掌握!!!

這裏有個細微的區別,還希望多看一下

 另外,有時候我們在運行時,會導致CPU佔比較多,比較卡,所以,可以用指令關掉

taskkill /f /im chromedriver.exe

2、xpath定位

絕對路徑不建議使用,稍有點改動就會出錯,一般不要去寫絕對路徑
//     從根節點開始,往下查找子孫結點
/      根節點開始一級一級往下找子節點
*      通配符,表示任意的元素
@    用來獲取屬性
         比如: 獲取id      @id
          獲取title    @title
          獲取value @value
[]   篩選條件
  舉例:
    1、查找a標籤(條件:href屬性等於'http://news.baidu.com')
      //a[@href='http://news.baidu.com']
    2、通過本文去定位
      //a[text()='新聞']

查找的函數:
  contains:部分匹配的函數
    //a[contains(text(),'hao')]
    //a[contains(@title,'一下')]

  start_with:匹配以***開頭
    //a[@start_with(text(),'hao')]

xpath的表達式,不是唯一的,只要能正確的定位到元素就行

 另一種方式也可以來定位

再舉一個例子

 因此,定位元素的方法很明顯,就是找屬性,先看外面屬於哪種標籤,是a標籤還是span標籤還是div標籤還是input標籤等等,在[]裏面進行篩選,獲取屬性就行了

以上僅僅是較爲基礎的xpath的定位方法,當然如果你想偷懶一下也可以,直接選中'檢查"然後copy xpath也行

3、css定位

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章