[Python] Windows環境でseleniumを動かすまで

# Pythonインストール
[Python公式](https://www.python.org/downloads/)から最新版インストーラをダウンロードしてインストールしてください。参考は[こちら](https://www.javadrive.jp/python/install/index1.html)。

インストールが終わったら、以下のコマンドでバージョン確認します。

```bash:cmd
python -v
```
「コマンドが見つからない」と出ていれば、python.exeファイルのあるフォルダーパスを環境変数に設定し、コマンドプロンプトを再起動して上記コマンドを実行してください。

# パッケージのインストール

```bash:cmd
pip install selenium
# chromeバージョンが94.・・・の場合のドライバをインストール
pip install chromedriver-binary==94.*
```
chromeバージョンの確認方法は[こちら](https://mhtdesign.net/guide/version-confirmation.html)

環境構築はこれだけです。

# スクリプト
新規フォルダーを作成し、以下のファイルを作成してください。

```python:test_selenium.py
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import chromedriver_binary

options = Options()
# linux上で動かすときは次の2つも実行してください。
# options.add_argument('--headless')
# options.add_argument('--no-sandbox')

driver = webdriver.Chrome(options=options)
driver.get('https://example.com')
# アクセス先のURLを出力
print(driver.current_url)

driver.quit()
```
実行してみましょう。

```bash:cmd
python <作成したフォルダ>/test_selenium.py
```
>実行結果
https://example.com

上記のような結果になれば正常に実行できています。

# chromedriver-binaryのバージョンを更新する
Chromeのバージョンって結構な頻度で更新されると思うのですが、それに伴ってドライバのバージョンも更新する必要があるのです。バージョンが古かったりすると、エラーが出ることがあります。

ただ、ドライバのバージョンを更新するにあたり現在使用しているchromeのバージョンを確認する必要があったりしてめんどくさいのでバッチファイル化しておきたいです。

バッチファイルは以下のように作成します。
どこかに専用のフォルダを作成し、そこに置いてください。

```bat:update_driver.bat
@echo off
setlocal
cd %~dp0

@REM %LocalAppData%のところは自身の環境に合わせて設定する必要があります。
dir /B /O-N "%LocalAppData%/Google/Chrome/Application" | findstr "^[0-9]." > "chrome_version.txt"
@REM chromeバージョンのhead部分をテキストファイルに出力
for /f "tokens=1 delims=:." %%a in (chrome_version.txt) do echo %%a> chrome_version_h.txt
@REM テキストファイルからchromeバージョンのheadを変数に入れる
set /p version_head= 0<"chrome_version_h.txt"
pip install chromedriver-binary=="%version_head%.*"
```
**`%LocalAppData%`変数だけは自身の環境に合わせて書き換える必要があります。**これは`C:\Users\<ユーザー名>\AppData\Local`を既定値として持っている環境変数です。

自分の場合、`Google\Chrome\Application`が`C:\Users\<ユーザー名>\AppData\Local`直下にあるので`%LocalAppData%\Google\Chrome\Application`になりますが、環境によってはそうでない場合もあります。

なので自身の環境で`Google\Chrome\Application`がどのフォルダにあるか検索したうえで、そのフォルダパスを既定値として持っている環境変数に書き換えましょう。
**環境変数は[こちら](https://www.tipsfound.com/windows10/11010)を参照してください。**

設定後、以下のコマンドで更新ができるか確認してください。

```bash:cmd
update_driver.bat
```
>
最新のときの実行結果
Requirement already satisfied: chromedriver-binary==94.* in c:\users\<ユーザー名>\appdata\local\programs\python\python39\lib\site-packages (94.0.4606.61.0)

こんな感じの結果が返ってきたら正常です。
これでドライバを随時更新しましょう。

# Selenium
この記事では細かくは説明しませんが、Seleniumの使い方がまとめられているサイトをいくつかご紹介します。

・**よくある操作なら**
　[Python + Selenium で Chrome の自動操作を一通り](https://qiita.com/memakura/items/20a02161fa7e18d8a693)
・**要素の取得方法なら**
　[PythonのSeleniumで特定の要素を指定して取得する](https://www.soudegesu.com/post/python/selenium-element-selector/)
・**Xpathの取得方法なら**
　[ChromeでXPathを取る・検証する](https://qiita.com/ywindish/items/5a992c49387d81df900e)
・**Window切り替えなら**
　[[Python]Seleniumで操作するウィンドウを切り替える２つの方法を紹介](https://tanuhack.com/selenium-change-window/)
・**Frame切り替えなら**
　[[Python] seleniumのフレーム移動(switch_to_frame)](https://hacknote.jp/archives/51263/)
・**ファイルアップロードなら**
　[PythonのSeleniumでファイルアップロードする方法](https://qiita.com/yoshi-kin/items/3341485cb943b3007cb7)
・**困ったときに**
　[Seleniumクイックリファレンス](https://www.seleniumqref.com/api/webdriver_gyaku.html)
・**Selenium4の新機能**
　[【Python】Selenium4の新機能まとめ](https://qiita.com/vZke/items/2ffdefc774e56145e093)


# まとめ
Seleniumの環境構築に困っている方はぜひ試してみてください。