怎么定位这类型的元素呢?
根据其余属性定位
若是有其余固定属性,最早考虑的固然是根据元素的其余属性来定位,定位方式那么多,何须在这一棵树上吊死。。
根据相对关系定位
根据其附近的父节点、子节点、兄弟节点定位,关于这方面,微信以前有文章作介绍。
根据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,不然返回falseit
PS:各类浏览器对xpath的支持状况不同,像IE就差点,因此有时候会出现xpath在一个浏览器能定位到但在另外一个浏览器定位不到的问题io