轉:http://blog.csdn.net/u012145166/article/details/50342569
1.name和id
其中使用到了name和id定位。但有時候由於開發人員的疏忽或者開發習慣的問題,會漏寫name或者id屬性。或者有時候如果頁面很龐大,元素很多,也有可能出現兩個一不小心定義了兩個重復的id的情況。這樣就無法進行唯一定位了。
2.xpath
前面所說的id和name屬性就相當於是一個人的姓名。你可以通過姓名找到他。但是同名同姓的問題是存在的,而且有時候也不知道他的姓名,那就去就去他的家里找,一個人住的地方總是唯一的。所以這種方式幾乎是萬能的,能基本解決所有定位需求。
3.css
另外還有一種通過CSS進行定位的方式,這種方式也能解決大部分的定位問題,但是這種方法比較復雜,學習成本比較高。我自己也沒有好好學習過,就不再介紹了。
4.使用firebug插件和firepath插件獲取xpath和id,name
4.1插件的安裝
那如何去獲取定位所需要的id,name,xpath數據呢?因為Selenium默認是支持Firefox瀏覽器的,而Firefox又以其強大、數量龐大的可選插件著稱,所以當然就會有相應的插件支持這個工作,也就是firebug和firepath。
可能由於牆的原因,無法成功在線進行安裝。可以在下載插件后,進行離線安裝下載鏈接請猛戳這里。
下載的文件無須解壓,按下圖方法安裝即可。
4.2使用示例
這里再以百度首頁為例講解兩個插件的用法。
打開網頁后,按F12,可見到頁面下方的一些可操作選項。
點擊箭頭1指向的這個鼠標形狀的按鈕,就可以開始定位元素了。點擊要進行定位的元素,比如搜索編輯框。此時下方的網頁源碼處就會自動跳到相應的HTML代碼處,方便直接查看其相應屬性,就能從中獲取我們所需要的name和id。
那怎么獲取xpath呢?點擊Firepath功能,進入Firepath視圖,再次點擊那個鼠標形狀的按鈕,開始選擇元素。同樣的,我們再選擇編輯框。這時,頁面就會自動顯示出這個元素的xpath值,同時代碼也會跳到相應的地方。
5.使用google chrome瀏覽器獲取xpath和id,name
firefox能用,當然chrome瀏覽器也能支持啦,而且不需要安裝插件。
5.1獲取id,name
進入頁面,按F12,安裝如下步驟即可獲取到元素的相關屬性,就不再多說了。
5.2獲取xpath
在獲取到的屬性代碼塊上右擊,點擊copy xpath即可將xpath復制到剪貼板中
6.xpath的使用
獲取到后,如何去使用呢?其實使用就和獲取一樣簡單,只需將原來的定位參數修改為“xpath= value”即可,value就是4.2步驟中獲取到的xpath值。
我們將上一篇的例子使用的定位方法切換為xpath方法,效果如下。
不過這里xpath看上去好像還是使用id來定位的,這是因為使用工具對xpath自動獲取時有很多種方法,有絕對路徑,也有相對路徑。而這里就是使用相對路徑方法里的直接按屬性定位。
我們不妨嘗試獲取一下右上角”登錄”的xpath值。
是不是不太一樣了?解釋一下,這里先使用按id屬性定位獲取到了無序列表,即右上角這一排,然后再用相對路徑定位到這個列表下的第七個元素“登錄”。所以取得的值是”.//*[@id=’u1’]/a[7]“