我如何轉換的XPath像需要JavaScript或jQuery庫與XPath轉換爲可選擇的CSS3格式的jQuery
/html/body/div[3]/ul/li[1]/a[5]
html > body > div[3] > ul > li[1] > a[5]
我相信,指數不與CSS3選擇器支持....所以如何應對這個 ?
我如何轉換的XPath像需要JavaScript或jQuery庫與XPath轉換爲可選擇的CSS3格式的jQuery
/html/body/div[3]/ul/li[1]/a[5]
html > body > div[3] > ul > li[1] > a[5]
我相信,指數不與CSS3選擇器支持....所以如何應對這個 ?
如果你發現Sizzle/jQuery不能應用你的CSS3選擇器,那麼最好使用XPath plugin,它是jQuery原始版本的一部分(然後由於很少人實際使用它而被刪除)。
瀏覽器中的XPath實現往往比CSS引擎多得多faster。同樣有JS解析&將XPath表達式轉換爲CSS3,然後將jQuery插入瀏覽器可以實現的東西(通常是帶有一點JS幫助的CSS2.1選擇器)將比在執行XPath時慢012%,瀏覽器。
不僅如此,還有些事情是XPath可以做到的,CSS不能。例如:
//h3[class="blog-title"]/../../div[class="blog-entry"]//input[fn:floor(value) > 3]
這對於XPath執行來說並不過於複雜,但對於CSS來說不可能 - 僅僅移動DOM並執行一個函數作爲表達式的一部分不能(據我所知)完成,即使在CSS3中。
IE中的xpath實現非常非常慢。甚至可怕的IE6慢這就是爲什麼大多數傾向於使用基於正則表達式的CSS選擇器等喜歡嘶嘶聲或最新的是qwery。 的指數選擇在CSS使用選擇:nth-child(n)
a[5] = :nth-child(5)
如果它與0或1開始,那麼它也可能是4
此外,如果有中不同類型的孩子我不記得你選擇的父母,你可以使用:nth-of-type()
,它只選擇給定的類型。在你的情況下:
a:nth-of-type(5)
Selenium 1的CSS定位引擎從CSSQuery移動到Sizzle,jQuery的CSS選擇器庫。 所以,你可以轉換
div[3]/ul/li[1]/a[5]
到
css=div:nth(3)>ul>li:nth(1)>a:nth(5)
和
//h3[class="blog-title"]/../../div[class="blog-entry"]//input[@value=3]
可以轉換爲
css=h3.blog-title:parent(div.blog-entry) input[value=3]
然而//input[@value>3]
可以不是B e可能或者是棘手的 欲瞭解更多信息,請訪問:https://github.com/jquery/sizzle/wiki/Sizzle-Home
是的,它支持http://www.w3.org/TR/css3-selectors/#nth-child-pseudo –