Selenium学习(三)----Selenium定位动态id等元素

今天再给大家分享一个定位不到元素的原因——动态id。

没有打开新页面、没有alert、没有frame、加了等待时间,但是还是定位不到元素?很有可能是你要定位的元素的属性是动态的,即每次打开页面,这个元素的id或者class等元素属性是动态生成的。代码执行时,元素的属性已经与之前不同,用之前的属性值去定位自然是定位不到的,会抛出NoSuchElementException。
如下:

<input id=“auto-id-1560324840386”…>

怎么定位这类型的元素呢?
根据部分元素属性定位,xpath中提供了三个非常好的方法来为我们定位部分属性值:

driver.findElement(By.xpath("//input [contains(@id, ‘auto’)]"))
driver.findElement(By.xpath("//input [starts-with(@id,‘auto’)]")
driver.findElement(By.xpath("//input [ends-with(@id, ‘auto’)]")


注意:html中的id前可能是input,div等,然后定位的代码要和html代码一致,input就写input,div就写div

这个需要结尾是“auto”
contains(a, b) 如果a中含有字符串b,则返回true,否则返回false
starts-with(a, b) 如果a是以字符串b开头,返回true,否则返回false
ends-with(a, b) 如果a是以字符串b结尾,返回true,否则返回false




参考资料:https://www.cnblogs.com/fighter007/p/8432972.html

猜你喜欢

转载自blog.csdn.net/qq_36800800/article/details/91557316