XPath和CSS Selector是最為常見的兩種元素定位方式。在Selenium中,我們通常使用xpath語法來定位元素。但是,在某些情況下,CSS定位更為簡單靈活。為了讓大家能夠更好地理解和學習,我們來介紹一下如何將xpath轉(zhuǎn)換為css selector。
首先需要了解的是,xpath和css selector有些元素的匹配模式是一模一樣的。如下所示:
XPath://html/body/div[2]/ul/li[3] CSS Selector:html >body >div:nth-child(2) >ul >li:nth-child(3)
這兩種方式都可以匹配到同一個元素,即文檔中第二個div中的ul中第三個li元素。
但是,css selector也有自己特有的匹配方式。比如說,我們可以使用css selector來定位某個元素的父節(jié)點或兄弟節(jié)點,而這是xpath無法實現(xiàn)的。下面是一些示例。
XPath://div[@id='wrapper']/div[2]/a[1]/img CSS Selector:div#wrapper >div:nth-child(2) >a:first-of-type >img
上面的代碼中,我們使用了css selector的first-of-type偽類來匹配第一個a元素。同時,我們也可以使用nth-of-type、nth-last-of-type等偽類來定位某個元素,這是xpath無法做到的。
另外,css selector也有自己的奇技淫巧。比如說,如果要匹配某個元素的屬性值中包含某個字符串的情況,可以使用*=符號來實現(xiàn)。
XPath://input[contains(@name,'q')] CSS Selector:input[name*='q']
最后,我們需要注意一點:在Selenium中,由于css selector匹配更快、更簡單,因此我們建議在能夠使用css selector的情況下盡量避免使用xpath。但是,在某些情況下(比如說查找某個表格中的某一行),xpath可能更為方便。因此,我們需要根據(jù)具體情況來選擇使用哪種方式。