[請益] 怎樣的XPath語法可以較快找到element

作者: FacetheFaith (Yes Man)   2018-05-08 11:04:44
請教版上大大
有一樹狀結構如下:
<div id='wd-Inbox-mainpage'>
<div>
<div>
<ul data-automation-id='inbox_item_list'>
要用XPath來定位到該ul元素,目前有以下幾種寫法都可行
1. .//ul[@data-automation-id='inbox_item_list']
. 2. .//*[@data-automation-id='inbox_item_list']
3. .//*[@id='wd-Inbox-mainpage']/div[1]/div[1]/ul
4. .//*[@id='wd-Inbox-mainpage']/div[1]/div[1]/ul[@data-automation-id=
'inbox_item_list']
請問哪種方法能最快找到該元素?
另外使用.//或//對搜尋速度會有影響嗎,哪個較快找到?
作者: vi000246 (Vi)   2018-05-08 11:40:00
在chrome的F12 直接按右鍵複製xpath的最快你可以寫個計時器 算算撈一萬次兩種寫法的差別
作者: ian90911 (xopowo)   2018-05-08 12:04:00
原來chrome f12可以直接抓xpath 學到一招了
作者: alog (A肉哥)   2018-05-08 12:24:00
其實 element 沒有量其實還好 最終還是要看 library 的實作/搜尋方式跟特性要找就找 ul 跟 data-automation-id 那個就可以了除非你找的 element 有特別的規則 例如抓要在特定的階層底下這個東西 其他的忽略否則應該要將xpath簡化 但回到一開始講的元素沒破千破萬應該是還好 那個算多少次都一樣
作者: FacetheFaith (Yes Man)   2018-05-08 12:34:00
Chrome抓到的XPath是//*[@id='wd-Inbox-mainpage']/div[1]/div[1]/ul,所以用這個比較好嗎
作者: TitanEric (泰坦)   2018-05-08 12:38:00
個人覺得xpath不好懂 我都用selector
作者: alog (A肉哥)   2018-05-08 13:00:00
Google 那個是方便抓 不會有特別優化只有element 帶有id 才會特別優化 因為 id 搜尋底層會有比較快的優化處理
作者: FacetheFaith (Yes Man)   2018-05-08 13:18:00
那id跟data-automation-id哪個比較快?後者是怎麼產生的?
作者: alog (A肉哥)   2018-05-08 13:18:00
id 但是你要找的資料是 帶有data-automation-id 的ul所以東西簡單處理就好
作者: FacetheFaith (Yes Man)   2018-05-08 13:21:00
所以會建議選1嗎
作者: alog (A肉哥)   2018-05-08 13:22:00
嗯 因為你找的類型似乎沒有這麼強調階層之間的關係
作者: thekensg (小猜)   2018-05-08 19:31:00
是關工作版屁事啊
作者: ripple0129 (perry tsai)   2018-05-10 00:52:00
頁面是有這麼多DOM需要考量到效能啊@@其實這個想一下也知道,第一個比對,id通常只有一個所以可以快速且正確定位效能一定是最快的

Links booklink

Contact Us: admin [ a t ] ucptt.com