【忘備録】AmazonLinux2にseleniumを導入し、GUIで操作する。

## 概要

### 内容
- EC2をデスクトップ化して、seleniumを導入する

### メリット
- EC2環境で、seleniumの挙動をGUIで確認できる。
    - 他の記事では、headressで起動しないとできないと記載されていたが、この方法を使えばGUIで挙動を確認できる

### 参考資料
https://qiita.com/hitomatagi/items/e63dd8c4b879de156628
https://qiita.com/onorioriori/items/4fa271daa3621e8f6fd9
https://qiita.com/natsu_san/items/e8b17306385d5ab72969

### 作業工程

## AmazonLinux2にデスクトップ環境を作成する
- こちらを参照
    - https://qiita.com/shunsuke-nashiki/items/cc16746a6ce6a9f82ed1

## Python3を導入する

MATE上部にあるAplication→System Tools→Mate Terminalを起動

- yumを最新の状態にする

```
$ sudo yum -y update
$ sudo yum -y install gcc openssl-devel bzip2-devel libffi-devel
```

- Pythonをダウンロードする
    - バージョンは問わない。今回は3.8.1

```
$ wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
$ tar xzf Python-3.8.1.tgz
```

- Python3をインストールする。

```
$ cd Python-3.8.1
$ sudo ./configure --enable-optimizations
$ sudo make altinstall
```

- インストールされているか確認する

```
$ python3.8 --version
Python 3.8.1
$ pip3.8 --version
pip 19.2.3 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
```

- PATHを差し替える
    - rootからもPython3.8を使えるようにパスを通しシンボリックリンクをはっておく

```
$ sudo visudo
(Before)
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
(After)
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
```

- シンボリックリンクを作成する

```
$ sudo ln -s /usr/local/bin/python3.8 /usr/local/bin/python3
$ sudo ln -s /usr/local/bin/pip3.8 /usr/local/bin/pip3
```

## seleniumを導入する

- Google Chromeをインストール

```
$ curl https://intoli.com/install-google-chrome.sh | bash
```


- GConf2のインストール
    - ChromeDriverを実行する時はGConf2がないと動作しない。
        - yum install GConf2を行っても「No package GConf2 available.」となるので、
リポジトリを追加する。

```
$ sudo vim /etc/yum.repos.d/centos.repo
```

```:centos.repo
[CentOS-base]
name=CentOS-6 - Base
mirrorlist=http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#released updates
[CentOS-updates]
name=CentOS-6 - Updates
mirrorlist=http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=updates
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[CentOS-extras]
name=CentOS-6 - Extras
mirrorlist=http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=extras
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
```
-  これでインストールができるようになる。

```
$ sudo yum -y install GConf2
```

- Google Chromeのバージョンを確認

```
$ google-chrome-stable -version
Google Chrome 84.0.4147.135 
```

- 上記のバージョンに合わせたKeyを[こちら](https://chromedriver.storage.googleapis.com/)に合わせて導入

```
$ wget https://chromedriver.storage.googleapis.com/{chromeのバージョン番号}/chromedriver_linux64.zip
```

- 解凍してchromedriverを移動

```
$ unzip chromedriver_linux64.zip
$ sudo mv chromedriver /usr/local/bin/
```

- そのままでは文字化けするため、google-notoをインストール

```
sudo yum install google-noto* -y
```

- seleniumを導入

```
$ sudo pip3 install selenium
```

- seleniumをテスト起動

```python3:test.py

# Library
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# Options
options = Options()
options.add_argument('--disable-extensions')
options.add_argument('--proxy-server="direct://"')
options.add_argument('--proxy-bypass-list=*')
options.add_argument('--start-maximized')

# Chrome
driver = webdriver.Chrome(options=options)
driver.get('https://www.google.co.jp/')

```

- 日本語が文字化けせずに、表示されれば成功
![スクリーンショット 2020-09-06 16.38.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/692922/2a4742b6-6bf6-bf5a-459a-c8651ba139a1.png)