T-DASHでセッション状態を維持してブラウザ起動してみた

# この記事について
T-DASH標準のブラウザ操作キーワードでは毎回セッション情報をクリアして起動する。
ワンタイムパスワードやreCAPTCHAの回避が大変なのでうまい方法がないか調査した結果を記載しています。

# もともとの回避方法

起動直後に秒待機入れて手動でワンタイムパスワードを回避。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/65b828d2-23f1-82da-4ed6-e48cf208e027.png)


　　**うん。手間（笑）**
# セッション情報の保持ができないか調べる

素敵な記事を発見。

https://rabbitfoot.xyz/selenium-chrome-profile/

chromeDriverに`Chromeのプロファイル情報のパス`を設定すればセッション情報が引き継げる様子。
```
chromeDriver.AddArgument("user-data-dir=" & PROFILE_PATH)
```

# RobotFrameworkでのchromeDriver設定方法を調べる

T-DASHでは`RobotFramework`を使用したカスタム動作の作成が可能な為、調べてみる。
書き方がわからないので`robotframework user-data-dir`でググる。すると書き方発見。
```
Open Chrome Using Create WebDriver Keyword
    ${options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys,selenium.webdriver
    Call Method    ${options}    add_argument    --allow-running-insecure-content
    Call Method    ${options}    add_argument    --disable-web-security
    Call Method    ${options}    add_argument    --user-data-dir\=/Users/myName/AppData/Local/Google/Chrome/User Data
    Create WebDriver    Chrome    chrome_options=${options}
    Go To    https://stackoverflow.com
```
引用
https://stackoverflow.com/questions/38226102/robot-framework-cannot-open-chrome-from-existing-chrome-profile


# カスタム動作を作ってみる

1. `+新規カテゴリ作成`ボタン押下して任意の値を入れて作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/70d52c87-2505-dd43-0f83-1c6d0679c51e.png)

2. `+カスタム動作を追加`ボタンを押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/db4d3ea6-bf0c-f0d7-0b23-5b6a7cfef825.png)

3. `動作名`と`フォーマット`を任意で記載


フォーマットは手順になる。
設定値にURL入れて汎用的に使用したいので`「設定値」`をフォーマットに含める

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/44dc5b5f-bcf9-bd73-0893-aa73d33203ea.png)


4.必要そうなやつだけコピペ

${value}＝「設定値」
```
${options}=	 Evaluate	sys.modules['selenium.webdriver'].ChromeOptions()	sys,selenium.webdriver
Call Method	${options}	add_argument	--user-data-dir\=/Users/myName/AppData/Local/Google/Chrome/User Data
Create WebDriver	Chrome	chrome_options=${options}	
Go To	${value}		
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/6dea41e5-8d34-78ee-8dbe-ec56f49d60bb.png)

5.`--user-data-dir`を書き換える

`chrome://version/`とChromeで検索するとプロフィール パスが表示されるのでコピペ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/7d892695-52a3-53b1-3fd7-7470dee4fc95.png)


```--user-data-dir\=/Users/myName/AppData/Local/Google/Chrome/User Data```
↓置き換え
```--user-data-dir\=C:\\Users\\[USERNAME]\\AppData\\Local\\Google\\Chrome\\User Data```

・User Dataまでのパスを記載する
・WindowsPCの場合は`\\`区切り
・MacPCの場合は`/`区切り

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/69149041-6271-e98f-ed42-a983422b92c4.png)




6.```SeleniumLibrary```を追加する

`Create WebDriver`というキーワードはSeleniumLibraryを使用している為、追加が必要。
SeleniumLibrary自体はT-DASH標準ライブラリらしく、```pip install```自体は不要だった

https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/004ba304-3e72-1d04-9964-abbc146b2138.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/57098dd6-563e-19a8-2c86-3de370bf9eb2.png)

7.```保存```ボタンを押下する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/306a1cac-7bf3-3cad-4bde-b7a99eb56c9e.png)


8.作成したカスタム動作をテスト手順で使用する
　Qiita公開用にGithubでログイン状態が継続されるか確認する形にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/7cc3a706-7f98-6c4b-aa46-e07e828413b8.png)

9.テスト実行するとログインセッション状態を維持してChromeブラウザが起動されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/0a45761c-c646-3d05-3f97-74ecfce47df5.png)


# 注意事項
## 注意点①
Chromeのプロファイル情報を基に起動するため、Chromeを起動しているとテスト実行時にエラーになります。
T-DASHをEdgeで開いて実行お願いします。

実行時に下記エラーが発生する場合はバックグラウンドでChromeのプロセスが残っていて動かない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/760eb33e-7418-b458-fbb4-384df13839e8.png)

タスクマネージャーよりバックグラウンドのChromeプロセスを終了させていってください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742767/474b19f9-ba4f-e8f9-be7f-bd9b72072e83.png)


# 使用した環境・バージョン
OS : Windows10 64bit
ブラウザ：Chrome 103.0.5060.134
T-DASH： 1.3.000


# 参考URL
https://rabbitfoot.xyz/selenium-chrome-profile/

https://stackoverflow.com/questions/38226102/robot-framework-cannot-open-chrome-from-existing-chrome-profile