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 版权协议,转载请附上原文出处链接和本声明。