selenium.Xpath、Css定位


本篇博客將介紹Xpath和Css兩種元素定位方法


Xpath定位:

  1. Xpath.屬性定位
  2. Xpath.標簽定位
  3. Xpath.層級定位
  4. Xpath.索引
  5. Xpath.邏輯運算
  6. Xpath.模糊定位

Css定位:

  1. Css.屬性定位
  2. Css.其他屬性
  3. Css.標簽定位
  4. Css.層級定位
  5. Css.索引
  6. Css.邏輯運算

 

Xpath定位:

XPath即為XML路徑語言,它是一種用來確定XML1標准通用標記語言3的子集)文檔中某部分位置的語言。反正小編看這個介紹是雲里霧里的,通俗一點講就是通過元素的路徑來查找到這個元素的,相當於通過定位一個對象的坐標,來找到這個對象。

 

一、xpath:屬性定位

xptah也可以通過元素的id、name、class這些屬性定位,如下圖

 

1.常用屬性定位

 

2.如果一個元素id、name、class屬性都沒有,這時候也可以通過其它屬性定位到


二、xpath:標簽

    1.有時候同一個屬性,同名的比較多,這時候可以通過標簽篩選下,定位更准一點

    2.如果不想制定標簽名稱,可以用*號表示任意標簽

    3.如果想制定具體某個標簽,就可以直接寫標簽名稱

 

三、xpath:層級

    1.如果一個元素,它的屬性不是很明顯,無法直接定位到,這時候我們可以先找它老爸(父元素)

    2.找到它老爸后,再找下個層級就能定位到了

    3.如上圖所示,要定位的是input這個標簽,它的老爸的id=s_kw_wrap.

    4.要是它老爸的屬性也不是很明顯,就找它爺爺id=form

    5.於是就可以通過層級關系定位到

 

四、xpath:索引

    ​1.如果一個元素它的兄弟元素跟它的標簽一樣,這時候無法通過層級定位到。因為都是一個父親生的,多胞胎兄弟。

    ​2.雖然雙胞胎兄弟很難識別,但是出生是有先后的,於是可以通過它在家里的排行老幾定位到。

    ​3.如下圖三胞胎兄弟

 

    ​4.用xpath定位老大、老二和老三(這里索引是從1開始算起的,跟Python的索引不一樣)

 

五、xpath:邏輯運算

    ​1.xpath還有一個比較強的功能,是可以多個屬性邏輯運算的,可以支持與(and)、或(or)、非(not)

    ​2.一般用的比較多的是and運算,同時滿足兩個屬性

 

 

六、xpath:模糊匹配

    ​1.xpath還有一個非常強大的功能,模糊匹配

    ​2.掌握了模糊匹配功能,基本上沒有定位不到的

    ​3.比如我要定位百度頁面的超鏈接“hao123”,在上一篇中講過可以通過by_link,也可以通過by_partial_link,模糊匹配定位到。當然xpath也可以有同樣的功能,並且更為強大。

 

 


 

Css定位:

 大部分人在使用selenium定位元素時,用的是xpath定位,因為xpath基本能解決定位的需求。css定位往往被忽略掉了,其實css定位也有它的價值,css定位更快,語法更簡潔。
這一篇css的定位方法,主要是對比上一篇的xpath來的,基本上xpath能完成的,css也可以做到。相對比學習,更容易理解。

一、css:屬性定位

    1.css可以通過元素的id、class、標簽這三個常規屬性直接定位到

    2.如下是百度輸入框的的html代碼:

<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd"/>

    3.css用#號表示id屬性,如:#kw

    4.css用.表示class屬性,如:.s_ipt

    5.css直接用標簽名稱,無任何標示符,如:input

二、css:其它屬性

    1.css除了可以通過標簽、class、id這三個常規屬性定位外,也可以通過其它屬性定位

    2.以下是定位其它屬性的格式

三、css:標簽

    1.css頁可以通過標簽與屬性的組合來定位元素

四、css:層級關系

    1.在前面一篇xpath中講到層級關系定位,這里css也可以達到同樣的效果

    2.如xpath://form[@id='form']/span/input和

//form[@class='fm']/span/input也可以用css實現

五、css:索引

    1.以下圖為例,跟上一篇一樣

    2.css也可以通過索引option:nth-child(1)來定位子元素,這點與xpath寫法用很大差異,其實很好理解,直接翻譯過來就是第幾個小孩

    1.css同樣也可以實現邏輯運算,同時匹配兩個屬性,這里跟xpath不一樣,無需寫and關鍵字


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM