如何使用pythonselenium获取多个元素的文本内容?

2024-10-01 15:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

def textfinder():
    try:
        textfinder1 = driver.find_elements_by_class_name("m-b-none").text
    except NoSuchElementException:
        pass
        print("no such element")
    print(textfinder1)

它只在我使用find_元素时有效,当我使用find_elements时,它会给我错误“list”对象没有属性“text”。我知道它返回列表,我只是不知道如何“读”它。当我从命令中删除.text时,我没有得到错误,但是有一些奇怪的数据,但是我需要类的文本内容。在


Tags: 代码textnamenonebydefdriver错误
3条回答

事实上,当你这么做的时候

text = driver.find_element_by_class_name("m-b-none").text

您将得到第一个匹配的元素,由于Selenium,这个元素拥有一个名为text的属性。当你这样做的时候

^{pr2}$

它将匹配所有相应的元素。假定matched_elements是一个列表,并且这个列表是python原生的(例如,它不是一个Selenium修改的对象,它具有text作为属性),那么您必须对其进行迭代,并迭代地获得每个元素的文本。具体如下:

texts = []
for matched_element in matched_elements:
    text = matched_element.text
    texts.append(text)
    print(text)

或者,如果你想让你的代码尽可能保持不变,你可以用一行代码

texts = [el.text for el in driver.find_elements_by_class_name("m-b-none")]

方法find_elements_by_class_name返回一个列表,因此您应该执行以下操作:

text = ''
textfinder1 = driver.find_elements_by_class_name("m-b-none")
for i in textfinder1:
  text += i.text + '\n' #or whatever the way you want to concatenate your text
print(text)

您需要像引用列表中的元素一样引用每个元素。像这样:

textfinder1 = driver.find_elements_by_class_name("m-b-none")

for elements in textfinder1:
    print elements.text 

相关问题 更多 >

    热门问题