Python で Selenium を使用して要素を検索する

Manav Narula 2023年6月21日
  1. Python で Selenium を使用して要素を検索する
  2. find_elements_by_name() 関数を使用して、Python で Selenium を使用して要素を検索する
  3. find_elements_by_id() 関数を使用して Python で Selenium の要素を検索する
  4. find_elements_by_xpath() 関数を使用して、Python で Selenium を使用して要素を検索する
  5. find_elements_by_link_text() 関数を使用して、Python で Selenium を使用して要素を検索する
  6. find_elements_by_partial_link_text() 関数を使用して、Python で Selenium を使用して要素を検索する
  7. find_elements_by_tag_name() 関数を使用して、Python で Selenium を使用して要素を検索する
  8. find_elements_by_class_name() 関数を使用して、Python で Selenium を使用して要素を検索する
  9. find_elements_by_css_selector() 関数を使用して、Python で Selenium を使用して要素を検索する
  10. find_elements() 関数を使用して Python で Selenium の要素を検索する
  11. まとめ
Python で Selenium を使用して要素を検索する

Python の selenium パッケージは、Web ブラウザーでの自動化に使用されます。 ほとんどすべての主要なブラウザーと互換性があります。 ブラウザ上でいくつかのタスクを自動化するスクリプトを Python で書くことができます。

このチュートリアルでは、Python でセレンを使用して Web ページ内の要素を検索するさまざまな方法を示します。

Python で Selenium を使用して要素を検索する

要素は Web ページの基本的な構成要素であり、その構造を定義するために使用されます。 セレンのさまざまな機能を使用して元素を見つけることができます。

これらの関数は、namexpathid などのさまざまな属性を使用して要素を検索するために使用されます。 メソッドを使用して、以下の HTML ドキュメントから要素を取得します。

<html>
 <body>
  <p class="content">Some text</p>
  <a href="link.html"> Link_text </a>
  <form id="some_form">
   <input name="email" type="text" />
   <input name="pass" type="password" />
  </form>
</body>
</html>

いずれの場合も一致しない場合は、NoSuchElementException 例外が発生することに注意してください。 それらはすべて、一致が見つかった要素のリストを返します。

これらの方法については、以下で説明します。

find_elements_by_name() 関数を使用して、Python で Selenium を使用して要素を検索する

Web ページのさまざまな要素には、name 属性が割り当てられています。 find_elements_by_name() 関数を使用して、name 属性の値に一致する要素のリストを取得できます。

以下のコードを参照してください。

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_name("email")

上記のコードを理解しましょう。

  1. 最初に webdriver クラスをインポートして、自動化用のブラウザーを作成します。 この例では、Google Chrome ブラウザーに chromedriver.exe を使用します。
  2. get() 関数を使用して、要素を取得する Web サイトを取得します。
  3. 要素のリストを取得するには、find_element_by_name() 関数を使用し、関数内で name 属性の値を指定します。

コードは、以下で説明するすべてのメソッドで同じままであることに注意してください。 要素を取得する関数 (この場合は find_element_by_name()) のみが変更されます。

find_elements_by_id() 関数を使用して Python で Selenium の要素を検索する

id 属性は、Web ページで見つかった要素のリストを返すこともできます。 これには、find_elements_by_id() 関数を使用できます。

例えば、

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_id("some_form")

find_elements_by_xpath() 関数を使用して、Python で Selenium を使用して要素を検索する

xpath を使用したパス式を使用して、ドキュメントからノードを取得できます。 xpath を使用して要素を検索するには、find_elements_by_xpath() 関数を使用できます。

関数内にパス式を指定しています。

例えば、

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_xpath("/html/body/form[1]")

ドキュメントには、他の Web ページにリダイレクトできる要素があります。 これは、anchor タグを使用して実現されます。

find_elements_by_link_text() 関数を使用すると、リンク テキストを使用して要素を取得できます。

以下のコードを参照してください。

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_link_text("Link_text")

この機能は前のものと似ています。 違いは、リンクの部分テキストに一致する要素を返すことです。

例えば、

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_partial_link_text("Link_")

上記の例では、部分的なリンク テキストを使用するだけで要素を取得できたことがわかります。

find_elements_by_tag_name() 関数を使用して、Python で Selenium を使用して要素を検索する

HTML ドキュメントのすべての要素にはタグ名があります。 タグ名を使用して要素を検索するには、Python で find_element_by_tag_name() を使用できます。

以下のコードを参照してください。

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_tag_name("form")

find_elements_by_class_name() 関数を使用して、Python で Selenium を使用して要素を検索する

find_elements_by_class_name() 関数を使用して、Web ページの特定の class 属性に一致する要素を取得できます。

以下のコードを参照してください。

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_class_name("content")

find_elements_by_css_selector() 関数を使用して、Python で Selenium を使用して要素を検索する

CSS セレクター構文を使用して、HTML 要素のスタイルを設定できます。 CSS セレクター構文は、find_elements_by_css_selector() 関数で要素を見つけるためにも使用できます。

次の例を参照してください。

from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_element_by_css_selector("p.content")

find_elements() 関数を使用して Python で Selenium の要素を検索する

find_elements() 関数は、HTML ドキュメントから要素を取得できるプライベート メソッドです。 これは、これまでに説明したすべての方法の集大成のようなものです。

以前のすべての属性をパラメーターとして使用して、要素を見つけることができます。

例えば、

from selenium.webdriver.common.by import By
from selenium import webdriver

driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.get("https://www.sample.org/")
e = driver.find_elements(By.NAME, "email")

上記の例では、前に行ったように name 属性を使用して要素を検索します。

まとめ

Python でセレンを使用して、さまざまな属性に基づいて要素を検索するさまざまな方法について説明しました。 すべての属性にはそれぞれの機能があります。

プライベート メソッド find_elements を使用して、さまざまな属性をパラメーターとして提供することもできます。 もう 1つ注意すべき点は、この記事のメソッドは、一致する可能性のあるすべての要素のリストを返すことです。

要素を 1つだけ見つける必要がある場合は、説明した各関数の elementelements に置き換えることができます。 たとえば、find_elementsfind_element になります。

著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python Selenium