Web UI 自動化單個xpath抓取外掛詳解

weixin_33982670發表於2018-03-10

原文地址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種控制元件對應起來,如下圖:

 
抓取優先順序&策略

image

如上圖所示:

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]

 

示例:

image

右鍵—>點選

image

抓取結果:

image

如上圖所示,以百度首頁--“百度一下”按鈕為抓取物件,抓取出的三個能唯一定位的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;

結合,框架,便能對控制元件進行點選操作。

 

相關文章