SeleniumでのXPath参照、ファイルダウンロード、確認ダイアログ操作を解説

PythonでSeleniumを使う場合の、XPath参照、ファイルダウンロード、確認ダイアログ操作を解説します。

## Selenium導入

下記コマンドでSeleniumを導入します。  

```text
pip install selenium
```

(参考) [Selenium Pythonのインストール](https://www.seleniumqref.com/introduction/python/Python_Sele_Ins.html)

## Chrome Driver ダウンロード

<img src="https://websa12.z11.web.core.windows.net/image-data/202409/20240916/1726458459594.png" alt="image" width="70%"/>  
まず、Chromeのバージョンを確認します。(バージョンはヘルプ-Google Chromeについてから確認できます。)  
本記事記載時点ではバージョン`128`でした。  

下記サイトからバージョンの一致する**chrome driver**をダウンロードします。  
[Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/)

<img src="https://websa12.z11.web.core.windows.net/image-data/202409/20240916/1726458946779.png" alt="image" width="70%"/>
URLをコピーしてブラウザへ貼り付けるとダウンロードできます。  

<img src="https://websa12.z11.web.core.windows.net/image-data/202409/20240916/1726459078287.png" alt="image" width="70%"/>
圧縮ファイルに含まれる**chromedriver.exe**をパスの通ったフォルダ（C:\windows\system32 等）へ配置します。  

## Seleniumの起動とURL参照

```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.alert import Alert

driver = webdriver.Chrome()
driver.get("https://www.seleniumqref.com/index.html")
```

## Xpath参照

Seleniumでリンクをクリックしたり、ボタンを押したりして自動操作を実現する際、対象の要素を特定するのに**XPath**参照を使うと便利です。  

<img src="https://websa12.z11.web.core.windows.net/image-data/202409/20240916/1726460112680.png" alt="image" width="70%"/>  
👆まず、F12を押して開発者ツールを起動します。  

<img src="https://websa12.z11.web.core.windows.net/image-data/202409/20240916/1726460319447.png" alt="image" width="70%"/>  
👆要素セレクターをクリックします。  

<img src="https://websa12.z11.web.core.windows.net/image-data/202409/20240916/1726460565021.png" alt="image" width="70%"/>  
👆操作したい要素を選択します。  

<img src="https://websa12.z11.web.core.windows.net/image-data/202409/20240916/1726460831549.png" alt="image" width="70%"/>
👆開発ツールの要素のソースコードがハイライトされるので、右クリックメニューから「Copy」-「Copy XPath」を選択します。  

```text
//*[@id="main"]/div[4]/ul/li[1]/a
```

👆こんな文字列がコピーできます。これがXPathです。  

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

driver = webdriver.Chrome()
driver.get('https://www.seleniumqref.com/index.html')

driver.find_element(By.XPATH,'//*[@id="main"]/div[4]/ul/li[1]/a').click()
```

👆取得したXPathを使ってこんな感じで操作を自動化できます。  

## ファイルダウンロード

Seleniumでファイルダウンロードを自動化するサンプルコードを紹介します。  

```python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

download_dir = r"C:\home\files\download_csv"
chrome_options = Options()
chrome_options.add_experimental_option("prefs", {
    "download.default_directory": download_dir,
    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
    "safebrowsing.enabled": True,
    "useAutomationExtension" : False
})
driver = webdriver.Chrome(options=chrome_options)

driver.get('https://...some site url')

driver.find_element(By.XPATH,"//span[text()='明細ダウンロード']").click()
```

## 確認ダイアログ操作

<img src="https://websa12.z11.web.core.windows.net/image-data/202409/20240916/1726465055334.png" alt="image" width="70%"/>  
👆こんな感じの確認ダイアログをSeleniumで操作するサンプルコードを紹介します。  

```python
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get('https://...some site url')

driver.find_element(By.XPATH,"//span[text()='明細ダウンロード']").click()
Alert(driver).accept()

```

## 👇関連記事

- [アニメーションアバターの導入方法](https://docs.saurus12.com/tips/animated_avatar)

## 本記事へのリンク

<img src="https://websa12.z11.web.core.windows.net/image-data/202409/20240916/1726457155734.png" alt="image" width="30%"/>

[https://docs.saurus12.com/python/selenium](https://docs.saurus12.com/python/selenium)

## 👇参考URL

- [Seleniumクイックリファレンス](https://www.seleniumqref.com/index.html)

[keywords]  
Python Selenium XPath ファイルダウンロード 確認ダイアログ

[SeleniumでのXPath参照、ファイルダウンロード、確認ダイアログ操作を解説](https://docs.saurus12.com/python/selenium)

更新日:2024年09月16日