PowerShellでSelenium3.0.1を導入する

# 0. 動機
PowerShellでSelenium入れてちょっとした操作をしたいなと思ったこと。PowerAutomate for Desktop(PAD)おとなしく使ってもいいんですが、実行速度ちょっと遅いし、実行中に他の作業しにくかったりするのでPowerShellでできないかなと思って調べました。

PowerShellからSelenium使ってEdge動かす、というのはネットで調べても私みたいな初心者にはいまいち纏まった内容が見つからなかったのでここにメモしておきます。自分なりにやってみたのでもしおかしいところあれば教えてください。

※なおSeleniumを使って何をするか、は自己責任でお願いします。

* 10/7追記
    * 結果としてSelenium 3.0.1のインストールは失敗したのですが、4.0.0 Preview-3で成功したのでご興味あれば下記記事参考下さい。

https://qiita.com/_Sasaki_/items/91224e038ae565fb1a83


# 1. Windowsのエディション
* Windows 10 EnterPrise

# 手順1: Seleniumのインストール
* 管理者権限でPowerShellを起動し下記コマンドを実行
```PowerShell
Install-Module -Name Selenium
```

* 実行後は下記のような画面が表示されると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343332/e26382bb-fa08-8f87-338d-385439933396.png)

<br>

# 手順2: MSEdge WebDriverのインストール
* 自身の利用するブラウザ(Edge)のバージョンを確認する
    * ブラウザを開いて右上のメニューから「設定」を開く
    * 「Microsoft Edgeについて」を選択
    * 「バージョン情報」を確認(赤線部がポイント)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343332/c331f74a-c6f5-97af-ff96-66b652a87a85.png)
    * 下記リンク先から確認したバージョンと同じWebDriverをダウンロードしZipファイルを展開
        * https://developer.microsoft.com/ja-jp/microsoft-edge/tools/webdriver/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343332/46b27856-4c3d-9191-4daf-cc04068bae8d.png)
    * 手順1で落としたSelenium内 (パスは多分C:\...\Selenium\3.0.1\assembliesの中)のmsedgedriver.exeと入れ替えておく (バージョンが合っていない可能性を排除するため)

<br>

# 手順3: MicrosoftWebDriver.exeのインストール
* Get-CommandでSeleniumのFunctionが表示されるのも確認したのでこれで動くだろ、と思い早速"$driver = Start-SeEdge"を実行したら下記のエラーが発生。MicrosoftWebDriver.exeというものが必要だとわかったので色々調べて落としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343332/4e89cd5e-9c85-8cad-ac05-afe083db42ba.png)

* MicrosoftWebDriverは管理者権限でPowerShellを起動し下記コマンドを実行すると落とせます
```PowerShell
DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0
```

* 実行後、目当てのMicrosoftWebDriver.exeは下記パスに保存されます。
    * 64 bitの場合
        * C:\\Windows\\SysWOW64\\MicrosoftWebDriver.exe
    * 32 bitの場合
        * C:\\Windows\\System32\\MicrosoftWebDriver.exe

* この後もう一度"$driver = Start-SeEdge"を実行すると下記のエラーが出たので、エラーで示されているパスにMicrosoftWebDriver.exeをコピペしました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343332/aaae97bb-bf13-47bf-0311-40788f12158e.png)




# 手順4: プロキシの設定 (10/2更新、未解決)
* これでようやく動くだろ、と思って"$driver = Start-SeEdge"を実行したら下記のエラーが発生。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343332/2851056c-f182-51c8-70a5-c32a07e367a1.png)

* この対策を調べるとドンピシャのQiita記事を確認。見る限り環境変数NO_PROXYを設定し値をlocalhostにすればよいと理解したのでそれでトライ。
    * https://qiita.com/taito-ITO/items/9f766db5b782b809716d
    * なおlocalhostをプロキシを通さないでやることがどういうことか、については下記3サイトが参考になりました。Seleniumにおけるやり取りは全てLocal PC内で行われており、PowerShell > Selenium Webdriver > MSEdgeDriver > Browser (Edge)という順で命令がブラウザに行くようになっているようですが、途中HTTP通信を利用する関係で本来行く必要が無いのにPROXYに通信信号が渡ってしまいそれによりアクセスブロックされるから、環境変数NO_PROXYにlocalhostを入れることでlocalhostへのアクセスの場合にはプロキシを通らなくなる、と理解しました。
        * https://nine-num-98.blogspot.com/2022/06/selenium-01.html?_sm_au_=iVVfSfsvMTVPTTkFskK46Kt3JNWfW
        * https://codor.co.jp/django/localhost
        * https://qiita.com/Chanmoro/items/9a3c86bb465c1cce738a
    
* これで終わる…と思いきや未だ下記エラーが。接続しているのは127.0.0.1って記載があるのになぜ…　また余裕あるときに少し勉強したらこの記事更新します。なんとなくSelenium動かすまであと少しだと思うんですがまだみたいです。
    * Edge DriverとWindowsのバージョン(?)が合ってないのかもですが、Edge Driverのバージョンって177.0.2045.47にしてるという理解なので、Edge Driverの横の10.0.19041.3324は何の数字なのかちょっとよくわからない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3343332/7445d85f-cd1b-0f79-91e1-dcacba523e6e.png)


* 10/7追記
    * Seleniumのバージョン変えて実行したら成功したのですが、ご興味あれば下記記事参考下さい。

https://qiita.com/_Sasaki_/items/91224e038ae565fb1a83




# おわりに

* 基本自分用メモですがどこかの誰かの役に立てば幸いです。

* でもPower Automate for Desktopは最初からWeb操作できる各種アクションがありますし、セレクタも設定できるし、勉強時間も少なくて済むので、初心者がWeb操作したいってなったらおとなしくPower Automate for Desktopやっとくといいのかな、と思いました。実行速度遅かったり、動作中他のPC操作しにくい、というデメリットありますが。

* もし知見のある方でコメントある方いれば是非よろしくお願いします。