定位元素find_element()和find_elements()的区别

  • Post author:
  • Post category:其他


for li in liList:
    upTags = li.find_element_by_class_name("up")
    #上面一行中find_element应该加‘s’为find_elements
    if upTags:
        # 获取歌曲名和演唱者名字
        title = li.find_element_by_class_name('song-title ')

今天在进行定位编程时,一直报NoSuchElementException的错:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class name","selector":"up"}

这次亏吃的不小,花费了很多时间去排查。实在没办法就照着原型一个字母追查看哪里不一样,发现唯一不同是少了‘s’。然后在网上查找他们俩的区别。

  • find_element()只会查找页面符合条件的第一个节点,并返回;但是定位不到元素则会报错。
  • find_elements()查找多个元素并且返回一个列表,列表里的元素全是WebElement节点对象;当定位不到元素时不会报错,会返回一个空列表。
  • 如果想要获取相关内容(只对find_element()有效,列表对象没有这个属性) 使用 .text。
  • 如果想要获取相关属性的值(如href对应的链接等,只对find_element()有效,列表对象没有这个属性):使用 .get_attribute(“href”)。

总结:当返回有可能是空值或者查找多个元素时使用find_elements()。



版权声明:本文为weixin_42256585原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。