はじめに
この間までSharePointやらPowerAppsやらFlowをやっておりましたが
現在Automation Anywhere EnterpriseというRPAツールを使用して業務自動化をしており、
Webサービスへのログイン部分どう作ったかタスクロジック部分の技術共有です。
(別に大した機構ではないんだけど、そもそも他にあまり情報がないよね)
他のエンジニアがどうしてるのかめっちゃ知りたいので
AAEじゃなくても自動化やってる方、お気軽にコメントしてください。
※10/24:TaskとMetabotを実際のコードに差し替え。(.txtで書きだしたもの)
ログイン部分は個別化するべき
- なんで?
- ログインページが変わったときに、全部のタスクを直すの大変。(コード置換使えないから)
- 今はmetabotなんだけど、taskにした方がいいか悩み中。
- metabotだと、taskをテンプレート化したときに、Credential情報が死んでxmlタグが入力フィールドに入ってしまう。引数設定しなおしになる。そのMetabotLogic使うタスクが1つだったら、別にそのままでもいいんですが。
- ログインページが変わったときに、全部のタスクを直すの大変。(コード置換使えないから)
タスクとメタボットのコード
ログイン部分
1 If Window Does Not Exist ("ログイン後のWindowName - Internet Explorer") Then (Wait up to 10 seconds - for Window not to exist)
2 Comment: ログインしていなかったら、MetabotのLoginロジックをRunさせてサイトにログイン
3 Loop While $LoginStatus$ Not Equal To(<>) "Success" AND $Counter$ Less Than(<) "6"
4 Comment: Loginロジックへ引数としてLoginID,Passwordを渡す。直打ちではなく、ControlRoomのCredentialsに登録してある情報を渡す。
5 Comment: LoginロジックがLoginStatusを戻り値として返す。(Success or Fail)
6 Comment: Loop条件:LoginStatusがSuccessではない(1週目はnull,2週目以降はFail)andループ回数(Counter)が6未満
7 Run Logic "Login" from MetaBot "My MetaBots\Login_MetaBot.mbot"
8 End Loop
9 End If
中のMetabot(仮に、Login_metabot)の、該当ページログインロジック
1 Comment: ログインページを開き、ControlRoomにあるCredencials情報をLoginIDとPasswordに代入することで、該当サイトにログインする。
2 Comment: I/Oは、I:LoginID,Password O:LoginStatus
3 Begin Error Handling; Action: Continue; Options: Variable Assignment, Logic Status: Fail
4 Comment: エラーが起きたらLoginStatusにFailを返す
5 Launch Website "Site URL(サイトURL入れる)"
6 Comment: EdgeでLaunchWebsiteできないか試してみたが、Edgeが起動したもののIEにオーバーライドしてIEでLaunchした。既定のブラウザがIEになっているのが原因かと。
7 Object Cloning: Set Text of TextBox "user.id" in window 'WindowName - Internet Explorer'; Value:"$LoginID$"; Source: Window; Play Type: Object
8 Object Cloning: Set Text of TextBox "user.password" in window 'WindowName - Internet Explorer'; Value:"$Password$"; Source: Window; Play Type: Object
9 Object Cloning: Click On PushButton "Submit" in window 'WindowName - Internet Explorer'; Click Type: Click; Source: Window; Play Type: Object
10 If Window Exists ("WindowName - Internet Explorer") Then (Wait up to 10 seconds - for Window to exist)
11 Comment: ログイン出来たらSuccess,できなかったらLoginStatusにFailを代入
12 Variable Operation: Success To $LoginStatus$
13 Else
14 Variable Operation: Fail To $LoginStatus$
15 End If
16 End Error Handling
17 If $LoginStatus$ Equal To (=) "Fail" Then
18 Comment: LoginStatusがFailの時、IEをTaskKill(呼び出し元TaskでこのMetabotの再試行をする際、ログインページが2枚になると不具合出る)
19 Open: "TASKKILL /F /T /IM iexplore.exe"
20 End If