摘要:在這里我們是用來(lái)標(biāo)識(shí)頁(yè)面元素控件的唯一性至于什么是,可以自行。有它算出的功能打開(kāi)一個(gè)網(wǎng)頁(yè),,在彈出的小窗口中選中一個(gè)標(biāo)簽,右鍵,看到了吧點(diǎn)下然后粘貼下就知道這元素的標(biāo)簽的多少了瀏覽器中通過(guò)獲取和根據(jù)獲取元素
XPath在這里我們是用XPath來(lái)標(biāo)識(shí)頁(yè)面元素、控件的唯一性
至于什么是XPath,可以自行g(shù)oogle。chrome有它算出XPath的功能!打開(kāi)一個(gè)網(wǎng)頁(yè),F(xiàn)12,在彈出的小窗口中選中一個(gè)標(biāo)簽,右鍵,看到“copy XPath”了吧!點(diǎn)下然后粘貼下就知道這元素的標(biāo)簽的XPath多少了
Javascript get XPath and find element by XPathChrome瀏覽器中通過(guò)js獲取xpath和根據(jù)xpath獲取元素
export default { getXPath(elm){ let allNodes = document.getElementsByTagName("*") for(var segs = []; elm && elm.nodeType == 1; elm = elm.parentNode){ if(elm.hasAttribute("id")){ let uniqueIdCount = 0 for(var n=0;n < allNodes.length;n++){ if (allNodes[n].hasAttribute("id") && allNodes[n].id == elm.id) uniqueIdCount++; if (uniqueIdCount > 1) break; } if(uniqueIdCount == 1){ segs.unshift("http://*[@id="" + elm.getAttribute("id") + ""]"); return segs.join("/"); }else{ return false } }else{ for(var i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling){ if (sib.localName == elm.localName) i++; } if(i == 1){ if(elm.nextElementSibling){ if(elm.nextElementSibling.localName != elm.localName){ segs.unshift(elm.localName.toLowerCase()) }else{ segs.unshift(elm.localName.toLowerCase() + "[" + i + "]"); } }else{ segs.unshift(elm.localName.toLowerCase()) } }else{ segs.unshift(elm.localName.toLowerCase() + "[" + i + "]"); } } } return segs.length ? "/" + segs.join("/") : null }, getElem(path){ try{ var evaluator = new XPathEvaluator(); var result = evaluator.evaluate(path, document.documentElement, null,XPathResult.FIRST_ORDERED_NODE_TYPE, null); return result.singleNodeValue || ""; }catch(e){ return "" } } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82546.html
摘要:全稱應(yīng)用性能管理監(jiān)控后面我會(huì)通過(guò)一系列的文章來(lái)介紹的原理框架設(shè)計(jì)與實(shí)現(xiàn)等等。在應(yīng)用構(gòu)建期間,通過(guò)修改字節(jié)碼的方式來(lái)進(jìn)行字節(jié)碼插樁就是實(shí)現(xiàn)自動(dòng)化的方案之一。 showImg(https://segmentfault.com/img/bVbbRX6?w=1995&h=1273); 歡迎關(guān)注微信公眾號(hào):BaronTalk,獲取更多精彩好文! 一. 前言 性能問(wèn)題是導(dǎo)致 App 用戶流失的罪魁...
摘要:反向代理無(wú)痕埋點(diǎn)前言本項(xiàng)目純屬個(gè)人練習(xí)項(xiàng)目,數(shù)據(jù)并非真實(shí),如有雷同,純屬巧合。 Node.js(v6.9.1) + express(4.X) + vue(2.0) + vuex + mysql(5.7.18) + (NUXT)SSR + nginx反向代理 + 無(wú)痕埋點(diǎn) 前言 https://github.com/github1586...*本項(xiàng)目純屬個(gè)人練習(xí)項(xiàng)目,數(shù)據(jù)并非真實(shí),如有雷...
摘要:反向代理無(wú)痕埋點(diǎn)前言本項(xiàng)目純屬個(gè)人練習(xí)項(xiàng)目,數(shù)據(jù)并非真實(shí),如有雷同,純屬巧合。 Node.js(v6.9.1) + express(4.X) + vue(2.0) + vuex + mysql(5.7.18) + (NUXT)SSR + nginx反向代理 + 無(wú)痕埋點(diǎn) 前言 https://github.com/github1586...*本項(xiàng)目純屬個(gè)人練習(xí)項(xiàng)目,數(shù)據(jù)并非真實(shí),如有雷...
獲取用戶的交互習(xí)慣及喜好,進(jìn)一步提升轉(zhuǎn)化率,可以在之前的埋點(diǎn)方案實(shí)現(xiàn)中,都是在具體的按鈕或者圖片被點(diǎn)擊或者被曝光時(shí)主動(dòng)通過(guò)事件去上報(bào)埋點(diǎn)。但這種方法適合在埋點(diǎn)比較少時(shí)還行的項(xiàng)目,遇見(jiàn)項(xiàng)目中需要大量埋點(diǎn)時(shí),添加的代碼就太多了,就會(huì)埋點(diǎn)邏輯與業(yè)務(wù)邏輯的高耦合。 由此需要換種方式。我先給大家普及下埋點(diǎn)上報(bào)方式都有哪些? 手動(dòng)埋點(diǎn) 可視化埋點(diǎn) 無(wú)痕埋點(diǎn) 手動(dòng)埋點(diǎn),顧名思義就是純手動(dòng)寫(xiě)代碼,調(diào)...
摘要:博客地址使用模塊化工具打包自己開(kāi)發(fā)的庫(kù)文章中有提到,當(dāng)時(shí)需要寫(xiě)一個(gè),監(jiān)控小程序的后臺(tái)接口調(diào)用和頁(yè)面報(bào)錯(cuò),今天就來(lái)說(shuō)下實(shí)現(xiàn)原理吧原理之前也做過(guò)瀏覽器端的數(shù)據(jù)埋點(diǎn)上報(bào),其實(shí)原理大同小異通過(guò)劫持原始方法,獲取需要上報(bào)的數(shù)據(jù),最后再執(zhí)行原始方法,這 博客地址 《使用模塊化工具打包自己開(kāi)發(fā)的JS庫(kù)》文章中有提到,當(dāng)時(shí)需要寫(xiě)一個(gè)SDK,監(jiān)控小程序的后臺(tái)接口調(diào)用和頁(yè)面報(bào)錯(cuò),今天就來(lái)說(shuō)下實(shí)現(xiàn)原理吧! ...
閱讀 1572·2021-10-14 09:42
閱讀 3815·2021-09-07 09:59
閱讀 1292·2019-08-30 15:55
閱讀 572·2019-08-30 11:17
閱讀 3337·2019-08-29 16:06
閱讀 500·2019-08-29 14:06
閱讀 3123·2019-08-28 18:14
閱讀 3642·2019-08-26 13:55