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()函数

原文地址:https://www.cnblogs.com/dingxinwen/p/14192929.html