[英]Identify css selector string vs XPath string
我正在為html編寫一個小型查詢模塊(在js中),我想提供一個通用的query(selector)
函數,該函數同時支持css選擇器和XPath選擇器作為字符串參數。
無論如何進行每種選擇,這里的問題都是如何確定給定的字符串是xpath還是css選擇器。 我們可以假設函數是這樣的:
function query(selector){
selectorKind = identifySelectorKind(selector); // I want to know how to code this particular function
if(selectorKind==="css") return queryCss(selector);
if(selectorKind==="xPath") return queryXPath(selector); //Assume both functions exists and work
}
我的第一種方法(鑒於我對xPath查詢的了解有限)是通過檢查第一個字符是否為/
來識別查詢類型(這里我假設所有相關的xPath查詢都以/
開頭)
因此, identifySelectorKind
會像這樣:
function identifySelectorKind(selector){
if (selector[0] === "/") return "xPath";
else return "css";
}
注意,我不需要驗證css和xpath選擇器,我只需要一種明確的方法來區分它們。 這種邏輯就足夠了嗎? (換句話說,所有xPath選擇器都以/
開頭,而沒有css選擇器以相同的方式開頭嗎?),如果不是,是否有更好的方法或我可能想知道的一些注意事項?
不一定。 例如, *
是有效的xpath和有效的css選擇器,但它與每個元素中的一組不同元素匹配。
如果您完全確定XPath選擇器將始終以/
開頭,那么可以。 請注意,XPath選擇器不必以/
開頭,但是如果您總是從根目錄中選擇,則可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.