Selenium如何定位動態id的元素?


 

怎么定位這類型的元素呢?

根據其他屬性定位
如果有其他固定屬性,最先考慮的當然是根據元素的其他屬性來定位,定位方式那么多,何必在這一棵樹上吊死。。

根據相對關系定位
根據其附近的父節點、子節點、兄弟節點定位,關於這方面,微信之前有文章做介紹。

根據DOM順序index定位
這個很簡單,找到該元素在主文檔或某級父節點中的index,然后根據index可輕松定位,不過這種方式可能不夠穩定,如果可以,還是用其他的方法定位更加合適。

根據部分元素屬性定位
xpath中提供了三個非常好的方法來為我們定位部分屬性值:

 

driver.find_element_by_xpath
("//div[contains(@id, 'btn-attention')]")

我這里用到的是:

driver.find_element_by_xpath

("//div[starts-with(@id, 'btn-attention')]")

 

driver.find_element_by_xpath
("//div[ends-with(@id, 'btn-attention')]")
# 這個需要結尾是‘btn-attention’
contains(a, b) 如果a中含有字符串b,則返回true,否則返回false
starts-with(a, b) 如果a是以字符串b開頭,返回true,否則返回false
ends-with(a, b) 如果a是以字符串b結尾,返回true,否則返回false

 

PS:各種瀏覽器對xpath的支持情況不一樣,像IE就差點,所以有時候會出現xpath在一個瀏覽器能定位到但在另一個瀏覽器定位不到的問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM