關於在自動化中Xpath表達式的書寫,其實我也只是剛剛入門,粗略的跟着網上的教程學了一下,這篇我就來分享總結一下我學習到的知識。
首先呢,我們先認識一下什么是Xpath。Xpath是XML路徑語言,它是一種用來確定XML(標准通用標記語言的子集)文檔中某部分位置的語言。因為Xpath基於XML的樹狀結構,提供了在數據結構樹種尋找節點的能力,所以Xpath被開發者們當做一種小型的查詢語言。
關於如何在網頁中獲取元素的Xpath表達式,我在上一篇文章中就已經介紹過了,在這篇中就不重復敘說了。當然,我在上篇文章上也說了,這種通過工具獲取的Xpath表達式,是死板的,不精確的,很容易找不到元素。在實際的項目中,Xpath的表達式可能會是很長的一句,或者關鍵信息會有相同的存在,所以我們不能夠快速准確的獲取好唯一的節點信息。這就需要用一些其他的表達方法來幫助我們了。這也是我寫這篇文章的用意。介紹幾種比較實用的Xpath定位方法。
text()方法:這個方法我們用百度首頁上的“新聞”按鈕來舉例。首先看網頁源代碼如下
我們可以看得出來在和“新聞”同類型的元素很多,他們的className是相同的,如果這時候源碼中對方沒有標出不同的name屬性,那我對於我們獲取新聞這個元素就很難了。這時候我們的text()方法就可以派上用場了。表達式:.//*[@id='u1']/a[text()='新聞']。也就是說,當我們要定位的元素是文本類型,且附近同類型元素太多時,我們就可以用text()方法來快速定位到我們需要的文本元素。
這里我在個人推薦一下,面對這樣一個唯一標簽下面,一排同類型標簽的時候,我們還有一種簡單的Xpath表達式來定位元素。例如,我們想要定位的“新聞”元素,它排在這群文本的第一位,表達式可以寫成:.//*[@id='u1']/a[1]。代表我要定位id為“u1”標簽下所有已“a”標簽起頭的元素中的第一個元素。
在我目前的自動化學習過程中,我用到方法就是以上者三種方法,當然肯定還有更多其他好用的方法,不過對於我來說,目前這三種已經夠用了。所以我也就簡略的介紹了一下這三種方法。