ホームページ >バックエンド開発 >Python チュートリアル >Selenium Get Element Text:Invisible Textの問題に対処する方法は?
目に見えないテキスト。HTMLソースに存在するが、CSSスタイリングまたはJavaScript操作のために視覚的に表示されないテキストは、セレニウムのgetText()
方法に重要な課題をもたらします。 このメソッドは、要素の可視テキストコンテンツのみを取得します。 これを処理するには、視覚的なレンダリングをバイパスし、基礎となるテキストに直接アクセスする戦略を使用する必要があります。 1つの主なアプローチは、Selenium内でJavaScript実行を使用することです。 JavaScriptコードを注入することにより、視認性に関係なく完全なテキストが含まれることが多い要素のtextContent
>またはinnerText
プロパティに直接アクセスできます。 たとえば、PythonおよびSeleniumを使用してください:
<code class="python">from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() # Or your preferred browser driver.get("your_website_url") element = driver.find_element(By.ID, "myElement") # Replace with your element locator # Using JavaScriptExecutor to get the text content text = driver.execute_script("return arguments[0].textContent;", element) print(text) driver.quit()</code>
このコードスニペットは、execute_script
メソッドを使用してJavaScriptを実行し、指定された要素のtextContent
を使用して、ページが完全にレンダリングされる前にテキストにアクセスする未熟な試みを防ぐことができます。WebDriverWait
およびdisplay: none;
プロパティは、これらの操作に関係なく、基礎となるテキストにアクセスする方法を提供します。 ただし、visibility: hidden;
とtextContent
の選択は重要です。 innerText
非表示の子要素内のテキストを含むすべてのテキストコンテンツを返します。 textContent
通常、テキストはユーザーに表示されるテキストのみを返しますが、その動作はブラウザ間でわずかに異なる場合があります。innerText
textContent
Javaとセレンを使用した使用の使用を示す別の例を示します。 すべてのテキストが必要かどうか、または視覚的に提示されたテキストのみに基づいてあなたのニーズに最適なプロパティ(innerText
または
getText()
によって返されます。 解決策は、上記のようにJavaScriptの実行を使用することです。getText()
が呼び出されたときに完全にロードされない場合があります。 テキストを取得しようとする前に要素が存在して表示されていることをWebDriverWait
を使用して明示的な待機を実装します。getText()
ajaxコールまたはJavaScriptの更新によりテキストが頻繁に変更された場合、StaleElementReferenceException
title
、alt
)、getAttribute()
メソッドを使用して属性値を取得します。 これには、多くの場合、JavaScriptの実行がShadow DOMをトラバースし、目的の要素とそのテキストコンテンツにアクセスします。以上がSelenium Get Element Text:Invisible Textの問題に対処する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。