1. 程式人生 > >Selenium2+python自動化-xpath定位語法

Selenium2+python自動化-xpath定位語法

htm 有時 百度一下 方法定位 complete blank for value 語法

前言

  在上一篇簡單的介紹了用工具查看目標元素的xpath地址,工具查看比較死板,不夠靈活,有時候直接復制粘貼會定位不到。這個時候就需要自己手動的去寫xpath了,這一篇詳細講解xpath的一些語法。

什麽是xpath呢?

官方介紹

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

xpath表達式介紹:

 1 /         從根節點選取,絕對路徑。
 2 //        從匹配選擇的當前節點選擇,相對路徑。
3 * 表示匹配任意標簽元素。 4 . 點表示選取當前節點。 5 .. 點點表示選取當前節點的父節點。 6 @ 選取屬性(ID、class、name、其它(//*[@autocomplete="off"]))。 7 Text() 定位文本屬性的元素(//*[text()=新聞])。 8 Contains 模糊匹配任意位置(//*[contains(text(),hao)] 或 //*[contains(@class,s_ipt)])。 9 Starts-with 模糊匹配開頭部分(//*[starts-with(text(),
專屬-)])。 10 Ends_with 模糊匹配結尾部分 11 Tag 用標簽定位(//input[@id=kw])。 12 And 邏輯運算符(//*[@id=su and @value="百度一下"]) 。 13 Or 邏輯運算符(//*[@id=su or @value="百度一下"])。 14 | 運算符,可以選取若幹個路徑(//book | //cd,返回所有擁有 book 和 cd 元素的節點集)。15

一、xpath:屬性定位

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

    技術分享圖片

  2. 於是可以用以下xpath方法定位

    技術分享圖片

二、xpath:其它屬性

1.如果一個元素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也可以有同樣的功能,並且更為強大。

  技術分享圖片

Selenium2+python自動化-xpath定位語法