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