0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

メールチェック面倒だから自動化しちゃえ

Posted at

はい、どうもパニック障害怠惰エンジニアです。
ということで、作成途中なのですが今回はCypressとTypeScriptを使って、なんちゃってメールチェック自動化していきます。
いやー、いちいちログインを手動でして、アドレスとか目視確認したくないですわ。
でも、ほっておくとフォルダに貯まって後で仕分け面倒、でも自動振り分けするまでもないアドレスからだし・・・。
というのが面倒だった。

起動用バッチ(タスクスケジューラーにでも登録してね)

EmailCheck.bat
@echo off
chcp 65001

echo "メールの最新状態をチェックします"
REM ほかの関係のないメールのみの場合は削除します、対象のアドレスが付いたメールがある場合は削除せずに残します

REM cypress起動してGUIテストの間のみ表示
cd "ファイルパス"
npx cypress run --headed --spec "テストファイルパス"

msg %username% /W "メールボックス内のチェック作業終了しました。"
pause

メールチェック用のロジック

mailChecker.ts
describe("mail checker", () => {
  //定数呼び出し
  before(function () {
    cy.fixture('test').then(function (testdata) {
        this.testdata = testdata
    })
  })
  // テストケース:メール件名で検索
  it("mail check", function() {
    // ログイン処理
    cy.visit(this.testdata.url,'utf8');
    cy.get('email要素').type(this.testdata.mail,'utf8');
    cy.get("password要素").type(this.testdata.pass,'utf8');
    cy.get("input").contains("ログインする").click();
    //ログ出力
    cy.log('Login successful')
    //遷移後読み込み待機
    cy.wait(8000);
    //メールの件名を確認
    cy.get("メールの受信欄要素").then(($p) => {
    //var よりもletを使おう
      let name , time = "";
      // 対象の件名にあった場合 true false返る
      cy.wait(8000);
      if ($p.text().includes("メールアドレス名(部分一致)") === true) {
        cy.log('True')
        // 部分的に一致するが、削除してもいいアドレス用の処理(例えば会社の全体メールを指定)
        if($p.text().includes("メールアドレス名(削除してもいい文字列があるアドレス名)") === true){
          cy.log('削除していいよ')
          // メール削除
          cy.get('すべてのメール選択にチェック要素').click({ multiple: true })
          cy.get('削除ボタン要素').click()
          // 処理終了するために返す
          return
        }
        // 通常処理(確認したい人のメールアドレス)
        cy.log('確認したいメールあるよ')
        cy.get('要素').should(($div) => {
          time = $div.text()
          //差出人の名前と時間をローカルフォルダのjsonに記載しておく
        cy.writeFile("ローカルパス/jsonファイル",  { name:name,time:time }, 'utf8')
         })
        
      } else if($p.text().includes("アドレス") === false) {
        cy.log('ないよ')
        // 対象のメールがない場合
        // メール削除
        cy.get('すべてのメール選択にチェック要素').click({ multiple: true })
        cy.get('削除ボタン要素').click()

      } else {
        // 何か後で作るかも
      }
      return
    });
  });
});

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?