2016-09-22 9 views
0

私は奇妙なシナリオを持っています:生成されたパスワードを分度器で確認する方法は?

私の自動化では、私はユーザーを作成する必要があります。作成時に、パスワードが生成され、彼/彼女の電子メールIDに送信されます。彼/彼女の電子メールでパスワードを取得する方法を自動化するにはどうすればいいですか(注:新しいウィンドウを開いて自分の電子メールにアクセスし、その資格情報を入力し、送信されたパスワードを持つ特定のメールを開き、)、私のアプリケーションに戻って、彼/彼女のユーザ名とパスワードでログインしてください。電子メールのためにかなり混乱儀式

そしてまた、私は別のタブ(supposinglyそれは角度アプリではありません)、 に切り替えて、彼の電子メールのユーザー名とパスワードを入力するためのアクションを実行することができますどのように)

+0

私の質問が更新されました。実際にブラウザで電子メールを開く必要がある理由がわからない場合、メールリスナーはメールが使用するimapサーバーに接続しています。まったく同じことです。とにかく、それをやらなければならない場合、電子メールページはHTMLで構造化されるので、通常は電子メールを解析するように要素ロケータを使用できますが、安定した方法で一貫してトラバースするのは非常に難しいでしょう。 – Gunderson

+0

実際に私はこれらのmailCatcherとmailTrapについて知りませんでした..問題が発生した後、あなたはソリューションの儀式を知ることになります:P –

答えて

1

、あなたはmail-listenerというパッケージを使用できます。あなたはthis answerの指示に従うことができます。私はそれを自分でやりました。セットアップは比較的簡単でした。その後、解析された電子メールからパスワードを取得することができます。

そして限り、他のタブに切り替えるなど、あなたがgetAllWindowHandles()を使用することができ、このような何か:

browser.getAllWindowHandles().then(function (handles) { 
    newWindowHandle = handles[1]; 
    browser.switchTo().window(newWindowHandle).then(function() { 
     // do stuff 
    }); 
}); 

それは非アンギュラページですので、あなたがbrowser.ignoreSynchronization = trueを設定する必要があります。これは、ウィンドウハンドルを切り替えるときに関数内で行うことができます。または、そのステップの直前に行うこともできます。テストフローを制御するには、Expected Conditionsを使用する必要があります。 は分度器を経由して新しいタブを自分で開くには、executeScript()を使用することができます:あなたは非アンギュラページと対話する必要がある必要な要素、すなわち:

var EC = protractor.ExpectedConditions;  
var el = element(by.id('loginForm')); 
browser.wait(EC.visibilityOf(el)); 
// do stuff 

編集して下さい。すなわち

browser.executeScript("window.open('http://www.google.com')"); 

編集2: メールリスナーを設定するため、リンクされた質問に提供されているコードはusernamepassword、およびhostの例外を除いて、私のためにかなり多くのコピー/貼り付けました。ユーザー名/パスワードは、ログインしようとしているのと同じユーザーになります。ホストの場合、メールサーバーによって異なります。あなたは、 "imap host for microsoft exchange(またはあなたが使用しているサーバ)をグーグルで探す"か、その電子メールサーバの設定に行くことでそれを見つけることができます。

私が実際にこの機能に追加したコードは、問題を特定するのに役立つエラーのログと、接続できない理由だけです。あなたの設定ファイルのonPrepare()機能でこれを置くことができます。

mailListener.on("error", function(err){ 
    console.log(err); 
}); 
+0

私はあなたが与えたメールリスナーリンクで与えられた指示に従いました。 。コード内で何が起きているのか説明できますか?私は同じメールリスナーコードを実行しようとしましたが、動作していません –

+0

@ダニー私は少し私の答えを更新しました。答えはたくさんありますが、 'mail-listener'パッケージはコードの大部分を扱い、すべての電子メールサーバはimapまたはsmtpを使用します。このパッケージはUIなしで実際の電子メールサーバーに接続するだけで、実際のユーザーが電子メールにアクセスするのと同じサーバーです。したがって、このコードは実際には資格情報といくつかの設定オプション(検索フィルタ、受信ボックスを開くなど)を渡すだけですが、ヘルパーは実際にメールを解析する責任があります。 – Gunderson

0

検索とunserstandingの多くの後、それは郵送をテストするために、あなたのSMTPサーバーを模擬し、そのサーバーにメールを送信する必要があることが判明しますアプリケーションの機能生活を楽にするために、mailCatcher、mailLisetnerのようないくつかのソフトウェアがあります。

しかし、私の好みはmailHogです。セットアップ(実際には.exeをダウンロードすること)は非常に簡単で、アプリケーションにメールを送信させることができます。 (mailCatcher、インストールに本当に忙しい)インストールや、(mailListenerのような)コーディングを必要としません。

MailHog、そうです!

関連する問題