Outline
前回、テスト自動化の中のステップでgmailをgoogle cloudのAPI経由で取得する方法を記載した
今回、IMAPを利用してもっと簡単に取得して、T-DASHテスト自動化で利用する方法を解説する。
IMAPのテストサイト
IMAPが使えるサイトとして5x2.deを用いた。
こちら、ドイツのサイトになりますが、IMAPを利用でき、無料です。
このメールサーバーではIMAPの情報は以下の通りです
パラメータ | 値 |
---|---|
IMAP_SERVER | mail.5x2.de |
IMAP_PORT | 993 |
MAIL_USER | メールアドレス (ex. xxxx@5x2.me) |
技術情報
ImapLibrary2 を用いた
※ImapLibraryにバグがあるため、改修されたものである。
このkeywordは、TEXT MAILとHTML MAILで取得方法が異なります。
今回、取得するメールのフィルターキーワードとして senderを指定して取得します。
T-DASH
カスタム動作
以下設定なようをメール処理IMAP.yamlのファイルで保存する
ACT-CAT-CUSTOM-f3ef5f76-9206-4c08-9847-ecdcbfdebac2:
action_category_name: メール処理IMAP
icon: ''
color: '#2f630e'
custom_data:
file_name: MailIMAP
pip_list:
- robotframework-imaplibrary2
library_list:
- ImapLibrary2
actions:
ACT-CUSTOM-8db3608b-cc10-4009-aeb1-8925be06aaa2:
action_name: IMAPでTEXTメールを取得する
action_type: operation
action_format: sender=「設定値1」のTEXTメールを取得
action_note: ''
action_args:
- value1
action_def:
- - Set Test Variable
- ${IMAP_SERVER}
- imap.example.com
- - Set Test Variable
- ${IMAP_PORT}
- '993'
- - Set Test Variable
- ${MAIL_USER}
- xxxxx@example.com
- - Set Test Variable
- ${MAIL_PASSWORD}
- password
- - ImapLibrary2.Open Mailbox
- host=${IMAP_SERVER}
- user=${MAIL_USER}
- password=${MAIL_PASSWORD}
- port=${IMAP_PORT}
- is_secure=True
- - '${LATEST} = '
- ImapLibrary2.Wait For Email
- sender=${value1}
- - '${text} = '
- ImapLibrary2.Get Email Body
- ${LATEST}
- - Set Suite Variable
- ${share_value}
- '${text} '
- - Log
- ${share_value}
ACT-CUSTOM-255625f3-6009-4e41-984e-4acdef324438:
action_name: IMAPでHTMLメールを取得する
action_type: operation
action_format: sender「設定値1」のHTMLメールを取得する
action_note: ''
action_args:
- value1
action_def:
- - Set Test Variable
- ${IMAP_SERVER}
- imap.example.com
- - Set Test Variable
- ${IMAP_PORT}
- '993'
- - Set Test Variable
- ${MAIL_USER}
- xxxxx@example.com
- - Set Test Variable
- ${MAIL_PASSWORD}
- password
- - ImapLibrary2.Open Mailbox
- host=${IMAP_SERVER}
- user=${MAIL_USER}
- password=${MAIL_PASSWORD}
- port=${IMAP_PORT}
- is_secure=True
- - ${LATEST} =
- ImapLibrary2.Wait For Email
- sender=${value1}
- - '${parts} = '
- ImapLibrary2.Walk Multipart Email
- ${LATEST}
- - FOR
- ${i}
- IN RANGE
- ${parts}
- - ''
- ImapLibrary2.Walk Multipart Email
- ${LATEST}
- - ''
- ${ctype} =
- ImapLibrary2.Get Multipart Content Type
- - ''
- Continue For Loop If
- '''${ctype}'' != ''text/html'''
- - ''
- '${payload} = '
- 'ImapLibrary2.Get Multipart Payload '
- decode=True
- - ''
- Set Suite Variable
- ${share_value}
- ${payload}
- - END
- - Log
- ${share_value}
次に、作成された IMAP.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートする
IMAPでTEXTメールを取得する
IMAPでHTMLメールを取得する
引数として、senderを指定することで、最新のメールを取得し、本文を変数${share_value}に格納します
スクリプト
TEXTメールを取得する
HTMLメールを取得する
実行結果