这是我的代码:
def textfinder():
try:
textfinder1 = driver.find_elements_by_class_name("m-b-none").text
except NoSuchElementException:
pass
print("no such element")
print(textfinder1)
仅当我使用find_element时才有效,当我使用find_element s 时,它会给我错误" list"对象没有属性" text"。我明白它返回列表,我只是不知道如何"阅读"它。当我从命令中删除.text时,我没有收到任何错误,但有些奇怪的数据,但我需要该类的文本内容。
答案 0 :(得分:3)
实际上,当你这样做时
text = driver.find_element_by_class_name("m-b-none").text
您将获得匹配的第一个元素,并且由于Selenium,此元素拥有一个名称为text
的属性。当你做
matched_elements = driver.find_elements_by_class_name("m-b-none")
^
它将匹配所有相应的元素。鉴于matched_elements
是一个列表,并且该列表是一个python本地列表(例如,它不是一个具有text
作为属性的Selenium修改对象),您将不得不在它上面,迭代地获取每个元素的文本。如下
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")]
答案 1 :(得分:1)
您需要像列表中的元素一样引用每个元素。像这样:
textfinder1 = driver.find_elements_by_class_name("m-b-none")
for elements in textfinder1:
print elements.text
答案 2 :(得分:1)
方法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)