web-dev-qa-db-ja.com

Selenium for Pythonの同じクラスを持つ複数の要素からテキストを取得しますか?

JavaScriptで読み込まれたコンテンツを含むページからデータを取得しようとしています。たとえば、必要なコンテンツは次の形式です。

_<span class="class">text</span>
...
<span class="class">more text</span>
_

find_element_by_xpath(//span[@class="class"]').text関数を使用しましたが、指定されたクラスの最初のインスタンスのみを返しました。基本的に、_[text, more text]_などのリストが必要です。find_elements_by_xpath()関数を見つけましたが、最後に_.text_を指定すると、エラー_exceptions.AttributeError: 'list' object has no attribute 'text'_が発生します。

16
user3685742

_find_element_by_xpath_は、text属性を持つ1つの要素を返します。

find_elements_by_xpath()は、一致するすべての要素(リスト)を返すため、ループして各要素のtext属性を取得する必要があります。

_all_spans = driver.find_elements_by_xpath("//span[@class='class']")
for span in all_spans:
    print span.text
_

find_elements_by_xpath(xpath)の詳細については、Selenium Python API docs here を参照してください。

32
Yi Zeng

これはアイテムのリストを返します:

all_spans = driver.find_elements_by_xpath("//span[@class='class']")
for span in all_spans:
    print span.text
0
jaz