本發(fā)明涉及頁面處理技術(shù)領(lǐng)域,尤其涉及一種自動準確定位頁面元素的系統(tǒng)和方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,web站點的信息爆炸增長,web自動化測試將變得越來越普及。而web自動化的基礎(chǔ)就是頁面元素定位。目前,關(guān)于頁面元素的定位方式比較單一,定位精度不高,定位結(jié)果比較復雜,處理難度大,而且定位錯誤后無法重新定位。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的實施例提供了一種定位精度高,能進行定位糾正的自動準確定位頁面元素的系統(tǒng)和方法。
本發(fā)明的實施例提供一種自動準確定位頁面元素的系統(tǒng),包括定位模塊、篩選模塊、傳輸模塊和糾錯重傳模塊,所述定位模塊對頁面元素進行定位,所述定位模塊包括多種定位方式,所述篩選模塊對定位模塊的多種定位方式得到的定位結(jié)果進行分析并篩選出不同等級的定位結(jié)果確定最優(yōu)級定位結(jié)果,所述定位結(jié)果的等級數(shù)量與定位方式的數(shù)量相適配,所述傳輸模塊將最優(yōu)級定位結(jié)果輸出給需要獲取頁面元素的第三方程序,如果最優(yōu)級定位結(jié)果傳輸給第三方程序后無法定位成功,所述糾錯重傳模塊將次級定位結(jié)果依次傳輸給第三方程序直至定位成功。
進一步,所述定位模塊的定位方式包括唯一標識屬性定位方式、xpath定位方式和css定位方式。
進一步,所述篩選模塊對定位模塊的定位方式、定位結(jié)果復雜度和長度分別進行分析篩選出不同等級的定位結(jié)果。
一種自動準確定位頁面元素的方法,包括以下步驟:
(1)確定需要定位的頁面元素;
(2)定位模塊分別通過唯一標識屬性定位方式、xpath定位方式和css定位方式對頁面元素進行定位得到定位結(jié)果復雜度和長度;
(3)篩選模塊對步驟(2)中定位模塊的定位方式、定位結(jié)果復雜度和長度分別進行分析篩選最優(yōu)級定位結(jié)果、二級定位結(jié)果和三級定位結(jié)果;
(4)傳輸模塊將最優(yōu)級定位結(jié)果輸出給需要獲取頁面元素的第三方程序,若第三方程序無法定位成功,糾錯重傳模塊將二級定位結(jié)果輸出給第三方程序,依次類推,即能準確定位步驟(1)確定的頁面元素。
進一步,所述步驟(2)中,唯一標識屬性定位方式根據(jù)頁面元素的id屬性生成方式、頁面元素的自定義屬性和頁面元素的class屬性的唯一性中的一項獲得定位頁面元素的定位。
進一步,所述步驟(2)中,xpath定位方式基于描述html標簽的關(guān)聯(lián)度以及屬性的重要性的html知識數(shù)據(jù)庫對頁面元素的xpath路徑表達式執(zhí)行泛化過程,所述泛化過程根據(jù)html知識數(shù)據(jù)庫逐步地從xpath路徑中移除一些標簽或?qū)傩裕鰪妜path解析引擎,用于通過泛化后的xpath路徑表達式在目標頁面的html文檔對象模型樹中搜索所述頁面元素,并且當根據(jù)所述xpath路徑表達式在所述htmldom樹中找到頁面元素時,輸出結(jié)果集合;當沒有找到頁面元素時,通知所述xpath泛化器對所述xpath路徑表達式進行進一步泛化。
進一步,所述步驟(3)中,將唯一標識屬性定位方式、xpath定位方式和css定位方式的權(quán)重依次確定為1、2和3;所述定位結(jié)果復雜度與條件判斷語句的數(shù)量呈正比,所述定位結(jié)果只有一個條件判斷語句時,定位結(jié)果復雜度的權(quán)重為1,每增加一個條件判斷語句,定位結(jié)果復雜度的權(quán)重增加1;所述定位結(jié)果長度與字符數(shù)量呈正比,所述定位結(jié)果長度的初始權(quán)重為1,每增加20個字符,定位結(jié)果長度的權(quán)重增加1;將每種定位方式以及相應定位方式得到的定位結(jié)果復雜度和長度的權(quán)重分別計算加權(quán)值,根據(jù)加權(quán)值的大小篩選不同等級的定位結(jié)果,加權(quán)值越小,定位結(jié)果的等級越高。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:頁面元素定位多樣化,有效解決定位模式單一,精度不高的問題,同時,解決了定位結(jié)果復雜無法定位的問題,定位失敗后,能自動重新定位,定位頁面元素更為靈活、快速、高效,大大提高了頁面元素定位的效率、靈活性和可靠性,使web自動化測試執(zhí)行起來更加簡單,更易于推廣,便于自動化人員的應用。
附圖說明
圖1是本發(fā)明一種自動準確定位頁面元素的系統(tǒng)的組成圖。
圖2是本發(fā)明一種自動準確定位頁面元素的方法的流程圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地描述。
請參考圖1,本發(fā)明的實施例提供了一種自動準確定位頁面元素的系統(tǒng),包括定位模塊1、篩選模塊2、傳輸模塊3和糾錯重傳模塊5。
定位模塊1對頁面元素進行定位,定位模塊1包括多種定位方式,在一實施例中,定位模塊1的定位方式包括唯一標識屬性定位方式、xpath定位方式和css定位方式。
篩選模塊2對定位模塊1的多種定位方式得到的定位結(jié)果進行分析并篩選出不同等級的定位結(jié)果確定最優(yōu)級定位結(jié)果,在一實施例中,篩選模塊2對定位模塊1的定位方式、定位結(jié)果復雜度和長度分別進行分析篩選出不同等級的定位結(jié)果,定位結(jié)果的等級數(shù)量與定位方式的數(shù)量相適配。
傳輸模塊3將最優(yōu)級定位結(jié)果輸出給需要獲取頁面元素的第三方程序4,如果最優(yōu)級定位結(jié)果傳輸給第三方程序4后無法定位成功,糾錯重傳模塊5將次級定位結(jié)果依次傳輸給第三方程序4直至定位成功。
請參考圖2,一種自動準確定位頁面元素的方法,包括以下步驟:
(1)確定需要定位的頁面元素;頁面元素可以為純文本文字類元素、文字的字體、字號、顏色和編碼等;
假設(shè)有以下頁面a.html:
<html>
<body>
<buttonid="test"aria-label="googlesearch"name="btn"class="btn
btn_bigbtn_submit"type="submit">登錄</button>
</body>
</html>
頁面b.html:
以上述頁面a.html中為例,需要定位元素button:
findelement(by.id("test"))
也可通過xpath定位:
/html/body/buttion[1]
也可通過css定位:
findelement(by.cssselector("button.btn.btn_big.btn_submit"))
(2)定位模塊1分別通過唯一標識屬性定位方式、xpath定位方式和css定位方式對頁面元素進行定位得到定位結(jié)果復雜度和長度;
在一實施例中,唯一標識屬性定位方式根據(jù)頁面元素的id屬性生成方式、頁面元素的自定義屬性和頁面元素的class屬性的唯一性中的一項獲得定位頁面元素的定位;xpath定位方式基于描述html標簽的關(guān)聯(lián)度以及屬性的重要性的html知識數(shù)據(jù)庫對頁面元素的xpath路徑表達式執(zhí)行泛化過程,所述泛化過程根據(jù)html知識數(shù)據(jù)庫逐步地從xpath路徑中移除一些標簽或?qū)傩?,增強xpath解析引擎,用于通過泛化后的xpath路徑表達式在目標頁面的html文檔對象模型樹中搜索所述頁面元素,并且當根據(jù)所述xpath路徑表達式在所述htmldom樹中找到頁面元素時,輸出結(jié)果集合;當沒有找到頁面元素時,通知所述xpath泛化器對所述xpath路徑表達式進行進一步泛化;
(3)篩選模塊2對步驟(2)中定位模塊1的定位方式、定位結(jié)果復雜度和長度分別進行分析;
在一實施例中,將唯一標識屬性定位方式、xpath定位方式和css定位方式的權(quán)重依次確定為1、2和3;所述定位結(jié)果復雜度與條件判斷語句的數(shù)量呈正比,所述定位結(jié)果只有一個條件判斷語句時,定位結(jié)果復雜度的權(quán)重為1,每增加一個條件判斷語句,定位結(jié)果復雜度的權(quán)重增加1;所述定位結(jié)果長度與字符數(shù)量呈正比,所述定位結(jié)果長度的初始權(quán)重為1,每增加20個字符,定位結(jié)果長度的權(quán)重增加1;將每種定位方式以及相應定位方式得到的定位結(jié)果復雜度和長度的權(quán)重分別計算加權(quán)值,根據(jù)加權(quán)值的大小篩選不同等級的定位結(jié)果,加權(quán)值越小,定位結(jié)果的等級越高,據(jù)此,篩選出最優(yōu)級定位結(jié)果、二級定位結(jié)果和三級定位結(jié)果;
以上述頁面a.html中的button定位結(jié)果為例,加權(quán)值計算過程如下:
通過唯一標識屬性定位方式定位,唯一標識屬性定位方式的權(quán)重為1,定位結(jié)果復雜度的權(quán)重為1,定位結(jié)果長度的權(quán)重為1,則加權(quán)值為:1+1+1=3;
通過xpath定位方式定位,xpath定位方式的權(quán)重為2,定位結(jié)果復雜度的權(quán)重為1,定位結(jié)果長度的權(quán)重為1,則加權(quán)值為:2+1+1=4;
通過css定位方式定位,css定位方式的權(quán)重為3,定位結(jié)果復雜度的權(quán)重為1,定位結(jié)果長度的權(quán)重為1,則加權(quán)值為:3+1+1=5;
可見通過唯一標識屬性定位方式定位結(jié)果的加權(quán)值最小,即最優(yōu)級定位結(jié)果,xpath定位方式定位結(jié)果和css定位方式定位結(jié)果分別是二級定位結(jié)果和三級定位結(jié)果。
(4)傳輸模塊3將最優(yōu)級定位結(jié)果輸出給需要獲取頁面元素的第三方程序4,若第三方程序4無法定位成功,糾錯重傳模塊5將二級定位結(jié)果輸出給第三方程序,依次類推,即能準確定位步驟(1)確定的頁面元素。
本發(fā)明頁面元素定位多樣化,有效解決定位模式單一,精度不高的問題,同時,解決了定位結(jié)果復雜無法定位的問題,定位失敗后,能自動重新定位,定位頁面元素更為靈活、快速、高效,大大提高了頁面元素定位的效率、靈活性和可靠性,使web自動化測試執(zhí)行起來更加簡單,更易于推廣,便于自動化人員的應用。
在不沖突的情況下,本文中上述實施例及實施例中的特征可以相互結(jié)合。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。