備忘用 Chrome+ChromeDriver+selenium+pythonの環境構築

# 経緯
元々社内でVBAからIEのオートパイロットで特定のWebページを取り込んでDBに保存するような処理を書いてました。
数年はそれで大丈夫だったのですが、昨年末にWindows7の保守期間が切れ、Windows10にアップデートを行った後からVBAでのIEのオートパイロットの挙動がを使用とすると色々と制限が掛かってものすごくやりづらくなってしまいました。(セキュリティのダイアログとか凄く特殊)。
一番の原因は、VBAで掴んだIEのオブジェクトがすぐに行方不明になり「オブジェクトが見つかりません」とかなって、立ち往生してしまったのがきっかけです。
ほんと意味がわかりません。
なので、VBAで今更苦労してやるのであれば、全部書き直す気で別の手法でやった方が楽かもしれないと今更ながらChromeとseleniumでオートパイロットしてみようと思いました。
ちなみに私はpythonにも余りなじみがありません(爆)
でもさすがに少しくらい書けないと恥ずかしいですよね・・。

# 参考記事
以下の記事を参考に、自分用にメモってます。ほとんど同じ部分もあります。
ご了承下さいm(_ _)m
[Python + Selenium で Chrome の自動操作を一通り](https://qiita.com/memakura/items/20a02161fa7e18d8a693)

# Chromeのインストール
https://www.google.co.jp/chrome/ からインストールします。

# ChromeDriverの設置
ChromeDriverを設置しますが、インストールしたChromeのバージョン毎にモジュールが違うので、まずはChromeのバージョンを[Chromeメニュー]→[ヘルプ]→[Google Chromeについて]で、確認しておきます。
<img width="833" alt="Chromeバージョン.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/882babfd-cb6e-ef50-1f12-c0af9181c337.png">

[Chrome Driverのページ](https://chromedriver.chromium.org/downloads)に行き、上で確認したバージョン用のChrome Driverのダウンロードページに行きます。
<img width="760" alt="chromedriverページ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/144c40e3-a9fc-3232-54db-0de6122f1e2e.png">
ここでは「ChromeDriver 81.0.4044.69」になります。

ダウンロードのページでは各プラットフォーム用のモジュールがあるので、自分の環境に合ったものをダウンロードします。
<img width="575" alt="chromedriverページ_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/0384c55a-c51c-2087-f199-0c738c3ca345.png">
私はWindowsなので、「chromedriver_win32.zip」でした。

ダウンロードしてきたzipはwindows用であれば解凍するとchromedriver.exeが出てくるので、それを任意のフォルダに置きます。
余り深い階層のフォルダに置くと、プログラムでパスを記述する時に長くなって嫌なので、私の場合は超簡単にC:\app\chromedriver\の下に置きました。
<img width="556" alt="chromedriver_設置.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/635e00cb-80a8-9424-6711-788d3be397c6.png">
この状態で次はpythonをインストールします。
# pythonのインストール

[pythonのwebページ](https://www.python.org/)に行って、pythonをダウンロードします。
<img width="901" alt="python1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/cb681821-181e-3ec3-413e-53f03047a11b.png">
赤線部分のリンクから、最新バージョンのページへ移動します。
そのページの下の方に「Files」という項目があるので、Windowsは32bit番の場合は、「Windows x86～」、64bit版は「Windows x86-64～」をダウンロードします。赤丸はそれぞれの自己実行形式のインストーラー版になります。
インストーラーが嫌いな人はzip版もありますのでそのあたりはお好きにどうぞ。
<img width="897" alt="python2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/34374704-c1c9-15ac-99b4-c55d406ccb07.png">
インストーラー版の方で説明を続けますが、インストーラーを実行すると、以下のような画面になるので、コマンドラインからコマンドを実行する時のために「Add Python 3.8 to PATH」にチェックを入れてパスを通すようにしておきます。
<img width="498" alt="python3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/108848ff-c62d-aba5-cd2f-34c61c78250b.png">
その後、「Install Now」をクリックし、インストールを開始します。

インストール中
<img width="500" alt="python4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/8443f609-2283-d315-8dcb-78283c546bf9.png">

以下の画面がでたらインストール終了です。
<img width="498" alt="python5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/4175d1cf-2c7f-d0a4-51d5-1d9247f41b5b.png">

# seleniumのインストール
seleniumのインストールはpipで行います。

```
C:\Users\hoge> pip install selenium
Collecting selenium
  Downloading https://files.pythonhosted.org/packages/80/d6/4294f0b4bce4de0abf13e17190289f9d0613b0a44e5dd6a7f5ca98459853/selenium-3.141.0-py2.py3-none-any.whl (904kB)
    100% |████████████████████████████████| 911kB 6.0MB/s
Collecting urllib3 (from selenium)
  Downloading https://files.pythonhosted.org/packages/e1/e5/df302e8017440f111c11cc41a6b432838672f5a70aa29227bf58149dc72f/urllib3-1.25.9-py2.py3-none-any.whl (126kB)
    100% |████████████████████████████████| 133kB 7.9MB/s
Installing collected packages: urllib3, selenium
Successfully installed selenium-3.141.0 urllib3-1.25.9
You are using pip version 19.0.2, however version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
C:\Users\hoge>
```
最初にインストールした直後にやると、pipをアップグレードしろみたいなメッセージが出たので、ついでに書かれている通りpipのアップグレードをやっときました。

```
C:\Users\hoge> python -m pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 5.4MB/s
Installing collected packages: pip
  Found existing installation: pip 19.0.2
    Uninstalling pip-19.0.2:
      Successfully uninstalled pip-19.0.2
Successfully installed pip-20.0.2
C:\Users\hoge>
```

これで、インストール関係は大体終わりです。

# Chrome Driverのパスを通しておく
[コンピュータ]→[右クリックメニュー]→[プロパティ]で、コントロールパネルのシステムのウィンドウを表示させ、左側の「システムの詳細設定」をクリック
<img width="595" alt="system.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/6059dcaa-f4e2-1983-0dde-9fab54eb5ada.png">

システムのプロパティ画面が表示されるので「環境変数」をクリック
<img width="340" alt="system_property.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/fba509a5-c841-9083-9662-0119968f3176.png">

環境変数のウィンドウが出るので、画面下部のシステム環境変数の「Path」の部分をくりっくして選択し、下の「編集」ボタンをクリック
<img width="441" alt="env_val.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/288ca044-6edf-a77f-479f-f8be819948b1.png">

環境変数ウィンドウが出るので「新規」ボタンをクリック
<img width="376" alt="env_val_edit.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/bced02ba-ec71-904d-afc3-3dc8ad1f391f.png">

一番下の所に入力項目が追加されるので、「C:\app\chromedriver」を入力、確定します。
<img width="376" alt="env_val_add.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93880/e6268dbc-e7df-cb90-04cf-d60484b26847.png">
最後に「OK」ボタンをクリック。あとは各画面を閉じていって終了です。

以降で表示されるコマンドプロンプト画面ではchromedriver.exeへのパス通った状態になります。

# Chromeのオートパイロットのテスト
Chromeのウィンドウを出さずにやる非headlessモードというのもあるのですが、わかりづらいので、まずは一番単純なテストでChromeのウィンドウを出して、閉じるというのをやります。

```python:autopilot1.py
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.google.com/')
time.sleep(5)
driver.quit()
```
これは、Googleのページを開いて5秒後に閉じて終了するだけのプログラムですが、上記のプログラムをautopilot.pyという名前で保存し、コマンドプロンプトでそのautopilot.pyのあるパスで以下を入力します。

```
C:\Users\hoge> python autopilot.py
```

これで、Chromeが開き、Googleのサイトが開き、5秒後にChromeが閉じれば成功です。

最低限の準備はこれで終了です。