playwright 中使用 xpath 定位元素遇到的奇怪問題

Ellison發表於2024-06-22

表示式 1:
//main/div/div/div[2]/div[2]/div[3]/table/tbody/tr/td/div[@class='cell']/span[contains(text(),'測試勿動!!!!')]/../../../td[6]/div/div/button[2]
表示式 2:
//main/div/div/div[2]/div[2]/div[5]/div[2]/table/tbody/tr[descendant-or-self::*//text()[contains(., '測試勿動!!!!')]]/td[6]/div/div/button[2]

不同的表示式,在除錯視窗都可以定位到唯一的元素"釋出"按鈕。
但是放到指令碼里執行,發現只有第二種能成功,第一種會卡住。

=======================================================
剛開始以為是表示式/span[contains(text(),'測試勿動!!!!')]/../../../td[6]
和 /span[contains(text(),'測試勿動!!!!')]/../../../td[6] 寫法不同,浪費了很長時間。
經過排查及不停的嘗試,最終發現是元件在視窗縮放的時候,會再加一層操作介面。
表示式 1 剛好是在下邊的那一層,表示式 2 是上邊的那一層。
所以造成指令碼執行點選底下那一層點選不了,會卡住。
遇到這種情況只能一個一個試嗎?大佬們有沒有好的建議

相關文章