Seleniumで操作の自動化を始めたが、データを取得したり入力したりする要素をうまく選択できないという悩みを抱えている方が多いのではないでしょうか。この記事ではSleniumを用いて操作を自動化する時の要素を選ぶコツをお伝えいたします。
前提となる環境
- Python3.7
- Selenium
おすすめの要素の取得方法
IDが分かる場合
まず最初に考えるのはIDがあるかないかということです。IDがある場合にはIDを使って要素の特定を行いましょう。
driver.find_element_by_id #特定のIDを持つ要素を取得(例:<button id ="submit"></button>)
こちらのように要素にIDが付与されている場合は、driver.get_element_by_idを利用しましょう。
classが分かる場合
IDが付与されていない場合は、classの利用を検討してみましょう。ただし、classの場合は同じクラスが複数箇所で使われている場合が多いので、気をつけましょう。
driver.find_element_by_class_name #特定のclassを持つ要素を取得 => 最初の一つを取得
driver.find_elements_by_class_name #特定のclassを持つ要素を取得 => 全ての要素をリストとして取得
こちらのコードから分かるようにclassを取得する際には2通りの方法があります。
一つ目はdriver.get_element_by_class_nameを使う方法です。こちらは複数の要素が該当する場合に、最初の要素のみを返すメソッドです。最初の要素を選択する場合に使います。
二つ目はdriver.get_elements_by_class_nameを使う方法です。こちらは複数の要素が該当する場合に全ての要素をリストにして返すメソッドです。2番目以降の要素を使う場合はこちらのメソッドを利用しましょう
xpathを使用する方法
Idやclassで要素を特定するのが難しい場合には最終手段としてxpathを使うことができます。コードの例にあるようにplaceholderや要素中のテキスト、親要素などから柔軟に要素を取得することができるのでほとんどの場合はここまでやれば要素を選択することができます。
driver.find_element_by_xpath #特定のxpathに該当する要素を取得 => 最初の一つを取得
driver.find_elements_by_xpath #特定のxpathに該当する要素を取得 => 全ての要素をリストとして取得
まとめ
今回はseleniumを使った要素の取得に関して解説させていただきました。取得する要素に応じて適切な取得方法を使用することで効率的に操作を自動化することができます。是非この記事を参考にして効率良く要素の取得を行ってはいかがでしょうか。