selenium定位动态元素的2种情况

1.定位动态的id或class的元素

某个xpath元素(id后面的数字为变动的):

  //*[@id="el-popover-6271"]/div[1]/div/div[1]/div/div/div[2]/div/div
  //*[@id="el-popover-3090"]/div[1]/div/div[1]/div/div/div[2]/div/div
  //*[@id="el-popover-7101"]/div[1]/div/div[1]/div/div/div[2]/div/div
可以写为:("//*[contains(@id,"el-popover")]/div[1]/div/div[1]/div/div/div[2]/div/div")

在这个id里面,el-popover这个是不会变的,只要返回这个就可以了,[contains(@id,"el-popover")]为id里面包含字符串el-popover,返回true

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

driver.find_element_by_xpath ("//div[starts-with(@id, 'auto-id')]")

driver.find_element_by_xpath ("//div[ends-with(@id, 'auto-id)]")

#contains(a, b) 如果a中含有字符串b,则返回true,否则返回false

#starts-with(a, b)如果a是以字符串b开头,返回true,否则返回false

#ends-with(a, b)如果a是以字符串b结尾,返回true,否则返回false

 

2.定位某个元素时,元素的xpath里面的div[x] 发生变化 (x为变化的数字),可以使用last()函数

 

posted @ 2020-12-26 15:12  划水小王子  阅读(815)  评论(0编辑  收藏  举报