朋友突然发消息过来,问怎么定位动态元素;一时不知道怎么回答,也让我意识到很多人可能也遇到同样的问题。
动态元素构成一般是属性里拼接数字,随着网页的刷新,数字不断的变化;如果这时候用 Xpath 定位,那么浏览器一定找不到该元素。
数字变化导致元素变化方法一:xpath使用
contains(a,b) 如果 a 中含有字符串 b,则返回 True,反之 False
starts-with(a,b) 如果 a 中以字符串 b 开头,则返回 True,反之 False
ends-with(a,b) 如果 a 中以字符串 b 结尾,则返回 True,反之 False
如:<div id = "but_1234">aaaaaa.<div>
driver.find_element_by_xpath("//div[contains(@id,"but")]")
driver.find_element_by_xpath("//div[starts-with(@id,"but")]")
方法二:DOM索引
由于只有 dom 定位器才会使用以"document" 开始的定位表达式。
document.getElementById("定位元素” )[ index]
document.getElementByName("定位元素")[ index]
document,forms["名称/ index" ]( index )
参考:
网友评论