问题描述
正如问题所暗示的那样,为什么下面的错误代码不起作用,但正确的代码会起作用?
它们本质上不是一回事吗?我环顾四周,看到了解释python本机列表有效但在这种情况下selenium创建的对象列表不起作用的帖子
但我并没有真正理解它的本质,请任何人用简单的英语为新手程序员进一步详细说明
mainText = driver.find_elements_by_css_selector(
'div.post_content.clearfix > p').text
print(mainContentDetail)
列表没有属性文本
正确的代码:
mainText = driver.find_elements_by_css_selector(
'div.post_content.clearfix > p')
for mainContentDetail in mainText:
print(mainContentDetail.text)
解决方法
当您在下面使用时,您会尝试使用 css 选择器与 div.post_content.clearfix > p 匹配的元素列表。
driver.find_elements_by_css_selector(
'div.post_content.clearfix > p')
当你在下面写的时候,你试图从多个元素中获取文本。但是 text 方法可以获取与单个元素关联的文本。当您尝试使用 text 方法从多个元素获取 Text 时,它会引发错误。
driver.find_elements_by_css_selector(
'div.post_content.clearfix > p').text
在下面的代码中,您将列表元素添加到名为 mainText 的列表中,并且您正在遍历 mainText 列表中的每个元素,然后使用 text 方法从每个元素中获取文本。因此它有效。
mainText = driver.find_elements_by_css_selector(
'div.post_content.clearfix > p')
for mainContentDetail in mainText:
print(mainContentDetail.text)