關於xpath相對路徑前加點與不加點的區別

2021-07-14 02:49:40 字數 918 閱讀 8600

最近在用selenium做web工程自動化測試的相關專案,會經常用到元素定位,由於原專案開發中並不是所有關鍵元素都加有id,所以xpath就成為了使用最為頻繁的定位方式。

眾所周知,xpath定位分為絕對定位和相對定位,如果以單斜線「/」開頭則表示為從根目錄下開始的絕對路徑,以雙斜線「//」開始的是相對路徑。為了適應頁面結構的改變,一般相對路徑較為常用。selenium2中的webdriver提供了findelement(by)的方法,該方法中的引數by就可以是xpath的形式。我在工作中也大多使用此方法,由於firefox提供的firebug和firepath外掛程式獲取元素非常方便,所以經常用外掛程式定位。但是奇怪的是每次定位雙斜線的前面總是會多乙個點:「.//」,但是去掉點之後似乎也沒有什麼影響,因此一直沒有在意。但是後來的一件是讓我對此改變了看法。

blankcontent

上面是乙個簡單的示例文件結構,在selenium中webelement也有乙個findelement的方法,用於查詢該元素下的子孫元素,假如我們已經獲得了c元素,我們現在要獲取c元素下的b元素:請注意以下兩種**的區別。

寫法一:webelement b = c.findelement(by.xpath(".//b"))

寫法二:webelement b = c.findelement(by.xpath("//b"))

其實兩個**的區別就在於xpath路徑加不加點的問題上,事實證明,寫法一取到的是包含content的b元素,而寫法二取到的是包含blank的b元素。所以其實加點和不加點是有很大區別的,在查詢整個頁面的時候沒有區別,但是在當前元素呼叫此方法時就有了,加點代表取當前元素為根節點向下查詢元素,而不加點是以整個頁面為根元素向下查詢的。所以firepath這個外掛程式還是很智慧型的,預設給xpath路徑加上了點,以防止在當前元素下找元素時發生錯誤。

關於相對路徑和據對路徑

一 基本概念 1 相對路徑 顧名思義,相對路徑就是相對於當前檔案的路徑。網頁中一般表示路徑使用這個方法。2 絕對路徑 絕對路徑就是你的主頁上的檔案或目錄在硬碟上真正的路徑。絕對路徑就是你的主頁上的檔案或目錄在硬碟上真正的路徑,比如,你的perl 程式是存放在 c apache cgi bin 下的,...

相對路徑 與 區別

一 基本概念 1 相對路徑 顧名思義,相對路徑就是相對於當前檔案的路徑。網頁中一般表示路徑使用這個方法。2 絕對路徑 絕對路徑就是你的主頁上的檔案或目錄在硬碟上真正的路徑。絕對路徑就是你的主頁上的檔案或目錄在硬碟上真正的路徑,比如,你的perl 程式是存放在 c apache cgi bin 下的,...

路徑詳解 絕對路徑,相對路徑,根相對路徑

路徑詳解 重點 1 絕對路徑 1 什麼是絕對路徑 檔案從最高端目錄下開始的完整路徑 1 訪問網路資源 1 由以下四個部分組成 1 協議名稱 2 主機名 ip位址,網域名稱 3 目錄路徑 4 檔名 ex 1 協議名 2 主機名 網域名稱 3 目錄路徑 img4 檔名 bd logo1.png 2 訪問...