怎么定位這類型的元素呢?
根據其他屬性定位
如果有其他固定屬性,最先考慮的當然是根據元素的其他屬性來定位,定位方式那么多,何必在這一棵樹上吊死。。
根據相對關系定位
根據其附近的父節點、子節點、兄弟節點定位,關於這方面,微信之前有文章做介紹。
根據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在一個瀏覽器能定位到但在另一個瀏覽器定位不到的問題