python - 如何使用 Python Selenium 获取多个元素的文本内容?

这是我的代码:

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_elements 时,出现错误“list”对象没有属性“text”。我知道它会返回一个列表,但我只是不知道如何“阅读”它。当我从命令中删除 .text 时,我没有得到任何错误,但是一些奇怪的数据,但我需要类的文本内容。

最佳答案

其实,当你这样做的时候

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")]

https://stackoverflow.com/questions/43926155/

相关文章:

ruby-on-rails - 使用 Chartkick 和 Rails 的多系列折线图

php - Laravel contains() 用于多个值

node.js - config.js 文件的 Typescript 版本

visual-studio-code - VS code终端光标效果

php - WooCommerce 以编程方式获取购物车 ID

c# - 在 SortedSet 上调用 ToArray()/ToList() 是否保证返回排

reactjs - 改变列标题高度

wpf - 在 WPF 中串联静态资源

html - 如何在 Rails 中为 datetime_field_tag 设置默认值

angular - 如何正确检查用户是否在 Angular4 中经过身份验证?