Python Selenium: h1 要素を検索しましたが、空のテキスト文字列が返されます 質問する

Python Selenium: h1 要素を検索しましたが、空のテキスト文字列が返されます 質問する

このヘッダーのテキストを取得しようとしていますページ:

ここに画像の説明を入力してください

iShares FTSE MIB UCITS ETF EUR (分配型)

タグは次のようになります。

<h1 class="product-title" title="iShares FTSE MIB UCITS ETF EUR (Dist)"> iShares FTSE MIB UCITS ETF EUR (Dist) </h1>

私は次のxPathを使用しています:

xp_name = ".//*[@class[contains(normalize-space(.), 'product-title')]]"

.textSelenium WebDriver for Python経由で取得:

new_name = driver.find_element_by_xpath(xp_name).text

ドライバーは xpath を見つけますが、印刷するとnew_name、macOS ターミナルは空の文字列のみを印刷します。""

その理由は何でしょうか?

ここに画像の説明を入力してください


注: 他の xpath の代替方法もいくつか試しましたが、同じ結果が得られました。たとえば、次のようになります。

xp_name = ".//*[@id='fundHeader']//h1"

ベストアンサー1

問題は、h1全く同じ外側の要素が2つあることですHTML。最初の要素は非表示ですが、2番目の要素は非表示ではありません。

print(len(driver.find_elements_by_xpath('//h1[@class="product-title "]')))

textプロパティを使用すると、テキストを取得できます見えるだけ要素の属性はtextContentテキストの取得も可能にします隠されたもの

置き換えてみる

new_name = driver.find_element_by_xpath(xp_name).text

new_name = driver.find_element_by_xpath(xp_name).get_attribute('textContent')

または、単に 2 番目の (表示される) ヘッダーを処理します。

driver.find_elements_by_xpath('//h1[@class="product-title "]')[1].text

おすすめ記事