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

 

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

根據其餘屬性定位
若是有其餘固定屬性,最早考慮的固然是根據元素的其餘屬性來定位,定位方式那麼多,何須在這一棵樹上吊死。。

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

根據DOM順序index定位
這個很簡單,找到該元素在主文檔或某級父節點中的index,而後根據index可輕鬆定位,不過這種方式可能不夠穩定,若是能夠,仍是用其餘的方法定位更加合適。

根據部分元素屬性定位
xpath中提供了三個很是好的方法來爲咱們定位部分屬性值:瀏覽器

 

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

我這裏用到的是:element

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
it

 

PS:各類瀏覽器對xpath的支持狀況不同,像IE就差點,因此有時候會出現xpath在一個瀏覽器能定位到但在另外一個瀏覽器定位不到的問題io

相關文章
相關標籤/搜索