原文地址http://blog.csdn.net/kaka1121/article/details/51878346
單個控制元件獲取
需求:
右鍵到某個控制元件上,就能獲取到至多三個可以唯一定位該元素的相對Xpath,並將其標記為以上8種抽象控制元件之一。
可抓取控制元件節點名:
input(type=="text"、"submit"、"button"、"reset"、"image"、"checkbox"、"radio"、"file")
textarea、select、table、a、button、span、img、i、font、div
和上面抽象出來的8種控制元件對應起來,如下圖:
抓取優先順序&策略
如上圖所示:
1.如果存在id,且唯一,則直接用id,其Xpath為:
//input[@id=’main’]
2.其次,如果存在name,且唯一,則直接用name,其Xpath為:
//a[@name=’name’]
3.再次,如果存在text,且唯一,則直接用text,其Xpath為:
//span[contains(text(),’aaa’]
4.如果還不能唯一定位,且存在name、text,二者組合能唯一定位,則其Xpath類似:
//Select[@name=’name’ and contains(text(),’aaa’]
5. 如果還不能唯一定位,則依次嘗試"value","title","class","style",如果能通過其一唯一定位,則其Xpath類似:
//XXX[@class(或者是value、title、style)=’class’]
6.如果還不能唯一定位,則遞迴尋找其父節點(依次單看id、name、text、title),直到找到唯一。 。
再從其父節點開始,取絕對路徑(元素索引),加起來唯一定位,其Xpath類似:
//input[@id=’main’]/div[1]/span[2]
當然,這種情況開始,就應該跟開發提可測性,增加唯一的id、name之類了。
7.如果還不能唯一定位,則尋找其所有子節點(依次單看id、name、text、title),直到找到唯一。
再使用其子節點Xpath來唯一定位,其Xpath類似:
//input[@id=’main’]/parent::XXX
8.如果還不能唯一定位,則尋找其所有兄弟節點(依次單看id、name、text、title),和自己在兄弟節點中的index,直到找到唯一。
//input[@id=’main’]/parent::XXX/XX[3]
9.以上全不滿足,則給出其絕對路徑(元素索引),來唯一定位,其Xpath類似:
/XXX[1]/XX[2]/X[5]/XXXXX[2]
示例:
右鍵—>點選
抓取結果:
如上圖所示,以百度首頁--“百度一下”按鈕為抓取物件,抓取出的三個能唯一定位的Xpath如圖中③所示。
另外,外掛還對控制元件所在frame(①)進行抓取,此處無frame資訊。
如上圖中②所示,控制元件被識別為click類,提供”點選”方法。
如上圖中④所示,控制元件被命名為“su”,呼叫時使用該名字,並附上備註“su”(⑤)作為控制元件的說明。
點選“生成程式碼”
生成基於框架的程式碼入下:
@Xpath(xpath={"//input[@id='su']", "//input[contains(@value,'百度一下')]", "//input[contains(@class,'bg s_btn btnhover')]"})
@Frame(frame="")
@Description(description="su")
public Click su;
結合,框架,便能對控制元件進行點選操作。