[發(fā)明專利]一種XML路徑表達(dá)式提取方法及裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201310524422.4 | 申請(qǐng)日: | 2013-10-30 |
| 公開(kāi)(公告)號(hào): | CN103605675B | 公開(kāi)(公告)日: | 2017-02-15 |
| 發(fā)明(設(shè)計(jì))人: | 劉佳 | 申請(qǐng)(專利權(quán))人: | 北京京東尚科信息技術(shù)有限公司;北京京東世紀(jì)貿(mào)易有限公司 |
| 主分類號(hào): | G06F17/30 | 分類號(hào): | G06F17/30;G06F9/46 |
| 代理公司: | 北京邦信陽(yáng)專利商標(biāo)代理有限公司11012 | 代理人: | 王昭林,金璽 |
| 地址: | 100080 北京*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 xml 路徑 表達(dá)式 提取 方法 裝置 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及XML相關(guān)技術(shù)領(lǐng)域,特別是一種XML路徑表達(dá)式提取方法及裝置。
背景技術(shù)
XPath是一門(mén)在XML文檔中查找信息的語(yǔ)言。XPath可用來(lái)在XML文檔中對(duì)元素節(jié)點(diǎn)和屬性進(jìn)行遍歷。XPath使用XML路徑表達(dá)式來(lái)選取XML文檔中的節(jié)點(diǎn)或者節(jié)點(diǎn)集。這些XML路徑表達(dá)式和我們?cè)诔R?guī)的電腦文件系統(tǒng)中看到的表達(dá)式非常相似。
在網(wǎng)頁(yè)自動(dòng)化測(cè)試中,常用xpath的方式進(jìn)行元素節(jié)點(diǎn)定位,然后再對(duì)定位到的元素節(jié)點(diǎn)進(jìn)行操作。比如通過(guò)xpath定位到某按鈕,然后自動(dòng)化再觸發(fā)點(diǎn)擊該按鈕;又比如通過(guò)xpath定位到某文本框,然后自動(dòng)化再對(duì)該文本框賦值。
現(xiàn)有獲得XML路徑表達(dá)式的方法是從指定元素節(jié)點(diǎn)開(kāi)始,獲得當(dāng)前節(jié)點(diǎn)的tag名稱,以及當(dāng)前元素節(jié)點(diǎn)是否有兄弟節(jié)點(diǎn),再逐層向上查找,直到遇到網(wǎng)頁(yè)xml的根節(jié)點(diǎn)或者包含id屬性的節(jié)點(diǎn)為止,再依次拼接起來(lái)。
比如一個(gè)只包含百度、京東、淘寶三個(gè)鏈接的簡(jiǎn)單網(wǎng)頁(yè),網(wǎng)頁(yè)的源代碼如下:
如果要定位京東鏈接的元素節(jié)點(diǎn),則當(dāng)前通用的XML路徑表達(dá)式提取方法是從京東鏈接這個(gè)節(jié)點(diǎn)開(kāi)始,標(biāo)簽名稱即tag名稱為a,有一個(gè)兄弟節(jié)點(diǎn)(百度鏈接),再往上找到包含id屬性的p節(jié)點(diǎn),發(fā)現(xiàn)包含id屬性,查找結(jié)束,節(jié)點(diǎn)的xpath表達(dá)式為//*[@id=lj]/a[2],其中[2]代表第2個(gè)子節(jié)點(diǎn)。又如要定位淘寶鏈接這個(gè)元素節(jié)點(diǎn),該節(jié)點(diǎn)沒(méi)有兄弟節(jié)點(diǎn),從該節(jié)點(diǎn)往上一直到根節(jié)點(diǎn),依次找到tag名稱為a,p,body,html的節(jié)點(diǎn),其中p節(jié)點(diǎn)之前有一個(gè)兄弟節(jié)點(diǎn),沒(méi)有遇到包含id屬性的節(jié)點(diǎn),所以淘寶鏈接這個(gè)元素節(jié)點(diǎn)的XML路徑表達(dá)式為/html/body/p[2]/a。
然而,現(xiàn)有技術(shù)提取元素節(jié)點(diǎn)的XML路徑表達(dá)式通常不夠穩(wěn)定,網(wǎng)頁(yè)布局發(fā)生小的變化時(shí),原有的XML路徑表達(dá)式很可能就會(huì)失效,利用此失效的XML路徑表達(dá)式也就找不到該元素節(jié)點(diǎn)或者找到錯(cuò)誤的元素節(jié)點(diǎn)。
比如上述例子的網(wǎng)頁(yè)鏈接調(diào)換了順序,由百度、京東、淘寶調(diào)整為淘寶、京東、百度,調(diào)整之后的網(wǎng)頁(yè)源碼如下:
則之前表示京東鏈接的XML路徑表達(dá)式://*[@id=lj]/a[2],會(huì)錯(cuò)誤地定位到百度;之前表示淘寶鏈接的XML路徑表達(dá)式:/html/body/p[2]/a,會(huì)錯(cuò)誤地定位到京東鏈接。
發(fā)明內(nèi)容
基于此,有必要針對(duì)現(xiàn)有技術(shù)的XML路徑表達(dá)式提取不穩(wěn)定,在網(wǎng)頁(yè)發(fā)生微小變化時(shí)會(huì)找不到元素節(jié)點(diǎn)或者找到錯(cuò)誤的元素節(jié)點(diǎn)的技術(shù)問(wèn)題,提供一種XML路徑表達(dá)式提取方法及裝置。
一種XML路徑表達(dá)式提取方法,包括:
步驟1,設(shè)定多個(gè)具有層級(jí)關(guān)系的限制條件,初始化最低層級(jí)的限制條件為當(dāng)前限制條件,且所述最低層級(jí)的限制條件對(duì)待標(biāo)識(shí)元素節(jié)點(diǎn)的標(biāo)識(shí)方式最嚴(yán)格;
步驟2,在當(dāng)前限制條件下提取待標(biāo)識(shí)元素節(jié)點(diǎn)的XML路徑表達(dá)式;
步驟3,根據(jù)所述XML路徑表達(dá)式進(jìn)行定位,且:
如果所述XML路徑表達(dá)式唯一定位到所述待標(biāo)識(shí)元素節(jié)點(diǎn),則所述XML路徑表達(dá)式提取結(jié)束;
否則如果所述XML路徑表達(dá)式定位到超過(guò)一個(gè)元素節(jié)點(diǎn),則選擇當(dāng)前限制條件上一級(jí)的限制條件為當(dāng)前限制條件,并執(zhí)行步驟2。
一種XML路徑表達(dá)式提取裝置,包括:
限制條件設(shè)置模塊,用于設(shè)定多個(gè)具有層級(jí)關(guān)系的限制條件,初始化最低層級(jí)的限制條件為當(dāng)前限制條件,且所述最低層級(jí)的限制條件對(duì)待標(biāo)識(shí)元素節(jié)點(diǎn)的標(biāo)識(shí)方式最嚴(yán)格;
路徑提取模塊,用于在當(dāng)前限制條件下提取待標(biāo)識(shí)元素節(jié)點(diǎn)的XML路徑表達(dá)式;
元素節(jié)點(diǎn)定位模塊,用于根據(jù)所述XML路徑表達(dá)式進(jìn)行定位,且:
如果所述XML路徑表達(dá)式唯一定位到所述待標(biāo)識(shí)元素節(jié)點(diǎn),則所述XML路徑表達(dá)式提取結(jié)束;
否則如果所述XML路徑定位到超過(guò)一個(gè)元素節(jié)點(diǎn),則選擇當(dāng)前限制條件上一級(jí)的限制條件為當(dāng)前限制條件,并執(zhí)行路徑提取模塊。
本發(fā)明通過(guò)設(shè)定多個(gè)具有層級(jí)關(guān)系的限制條件,盡量采用最嚴(yán)格的XML路徑表達(dá)式,只有當(dāng)前限制條件下無(wú)法唯一定位元素節(jié)點(diǎn)時(shí),才采用更為寬松的上一級(jí)XML路徑表達(dá)式。由于采用了盡可能嚴(yán)格的XML路徑表達(dá)式,因此減少了網(wǎng)頁(yè)發(fā)生微小變化時(shí),XML路徑表達(dá)式失效的可能性。
附圖說(shuō)明
圖1為本發(fā)明一種XML路徑表達(dá)式提取方法的工作流程圖;
圖2為本發(fā)明一種XML路徑表達(dá)式提取方法的步驟2的具體工作流程圖;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京京東尚科信息技術(shù)有限公司;北京京東世紀(jì)貿(mào)易有限公司,未經(jīng)北京京東尚科信息技術(shù)有限公司;北京京東世紀(jì)貿(mào)易有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310524422.4/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F17-00 特別適用于特定功能的數(shù)字計(jì)算設(shè)備或數(shù)據(jù)處理設(shè)備或數(shù)據(jù)處理方法
G06F17-10 .復(fù)雜數(shù)學(xué)運(yùn)算的
G06F17-20 .處理自然語(yǔ)言數(shù)據(jù)的
G06F17-30 .信息檢索;及其數(shù)據(jù)庫(kù)結(jié)構(gòu)
G06F17-40 .數(shù)據(jù)的獲取和記錄
G06F17-50 .計(jì)算機(jī)輔助設(shè)計(jì)
- Java中的XML類型
- 數(shù)據(jù)庫(kù)中XML模式的原地演進(jìn)
- 在標(biāo)記語(yǔ)言環(huán)境中使用可撤消命令來(lái)編輯文檔的文檔處理和管理方法
- XML文檔管理系統(tǒng)及其方法與XML文檔訪問(wèn)控制方法
- 用于處理用于在XML數(shù)據(jù)庫(kù)中存儲(chǔ)的非XML文檔的方法和系統(tǒng)
- 一種XML元數(shù)據(jù)對(duì)象化解析方法及系統(tǒng)
- 一種XML信息獲取方法和系統(tǒng)
- 將XML文檔自動(dòng)轉(zhuǎn)化為OML文檔的轉(zhuǎn)換方法及裝置
- XML數(shù)據(jù)的處理方法和裝置
- 一種XML注入漏洞檢測(cè)與防御方法
- 路徑搜索系統(tǒng)、路徑搜索終端和路徑搜索方法
- 路徑計(jì)算方法、路徑計(jì)算單元及路徑計(jì)算系統(tǒng)
- 路徑顯示裝置、路徑顯示方法、路徑顯示程序及路徑顯示系統(tǒng)
- 路徑引導(dǎo)裝置、路徑引導(dǎo)方法及路徑引導(dǎo)程序
- 路徑搜索系統(tǒng)、路徑搜索方法及路徑搜索程序
- 路徑引導(dǎo)裝置、路徑引導(dǎo)方法以及路徑引導(dǎo)程序
- 路徑搜索系統(tǒng)、路徑搜索方法以及路徑搜索程序
- 路徑搜索裝置、路徑搜索系統(tǒng)及路徑搜索方法
- 路徑輸出方法、路徑輸出系統(tǒng)和路徑輸出程序
- 路徑評(píng)價(jià)裝置、路徑評(píng)價(jià)系統(tǒng)、路徑評(píng)價(jià)方法以及路徑評(píng)價(jià)程序
- 一種正則表達(dá)式匹配方法及裝置
- 一種對(duì)多個(gè)相關(guān)謂詞進(jìn)行合并的方法
- 表達(dá)式處理方法、裝置、設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 一種智能表達(dá)式解析平臺(tái)及方法
- 一種復(fù)合表達(dá)式解析方法及系統(tǒng)
- 一種表達(dá)式的解析處理方法及裝置
- 定制生成表達(dá)式方法及裝置
- 日志中關(guān)鍵信息提取方法、裝置、終端及存儲(chǔ)介質(zhì)
- 一種基于特征線法的組合幾何中子輸運(yùn)處理方法及裝置
- 一種基于向量化執(zhí)行引擎的數(shù)據(jù)庫(kù)表達(dá)式計(jì)算的復(fù)用方法





