Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python Selenium】要素の親要素を取得する方法

 

pythonseleniumで要素の取得をする場合は、find_element、またはfind_elementsで取得できます。

find_elementの場合は、たとえば以下のようになります。

 

element = driver.find_element(By.NAME, "tagname")

 

このようにして取得した要素elementから1階層上の要素(親要素)を取得したいような場合があるかと思います。

そのような場合にはxpathを使用して以下のようにします。

 

element.find_element(By.XPATH, "..")

 

同様に、2階層上の要素を取得するような場合には以下のようにします。

 

element.find_element(By.XPATH, "../..")

 

 

以下にChromeの場合の例を載せておきます。

 

以下の例の中では、os.getcwd()はカレントディレクトリを表しています。

 

実行する場合には、chromedriver.exeを同じディレクトリ内(カレントディレクトリ)に入れた状態で実行してください。

 

from selenium import webdriver
selenium.webdriver.common.by import By
from selenium.webdriver.chrome import service as fs
import os

path_driver = os.getcwd()+'\chromedriver.exe'
# ドライバー指定でChromeブラウザを開く
chrome_service = fs.Service(executable_path=path_driver)
driver = webdriver.Chrome(service=chrome_service)

driver.get('https://**********.***/')
#子要素の名前を「abcdef」とした場合の指定例 child_element = driver.find_element(By.NAME, "abcdef")

#1階層上の親要素を指定して要素取得
parent_element = element.find_element(By.XPATH, "..")

# タブを閉じる driver.close() driver.quit()

 

同様にEdgeの場合は以下になります。

5~8行目のWebドライバーの設定の箇所が違うだけです。

 

from selenium import webdriver
selenium.webdriver.common.by import By
from selenium.webdriver.chrome import service as fs
import os

path_driver = os.getcwd()+'\msedgedriver.exe'
# ドライバー指定でEdgeブラウザを開く
edge_service = fs.Service(executable_path=path_driver)
driver = webdriver.Edge(service=edge_service)  

driver.get('https://**********.***/')
#子要素の名前を「abcdef」とした場合の指定例
child_element = driver.find_element(By.NAME, "abcdef")

#1階層上の親要素を指定して要素取得
parent_element = element.find_element(By.XPATH, "..")

# タブを閉じる driver.close() driver.quit()

 

上記例では、

 

4行目までで必要なライブラリのインポートを行っています。

 

5~8行目はChrome用またはEdge用のドライバー設定となります。

 

このdriverを使用して、9行目でdriver.getの後にオープンしたいURLを指定することで画面を開いています。

 

その後、11行目で要素の名前が「abcdef」という子要素を探索して「child_element」に設定しています。

 

13行目で1階層上の親要素を指定して要素取得し「parent_element」に設定しています。

 

15、16行目で開いたウインドウを閉じて終了させています。

 

 

以上がSeleniumで、ある要素の親要素を取得する方法になります。