、あなたは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: メールリスナーを設定するため、リンクされた質問に提供されているコードはusername
、password
、およびhost
の例外を除いて、私のためにかなり多くのコピー/貼り付けました。ユーザー名/パスワードは、ログインしようとしているのと同じユーザーになります。ホストの場合、メールサーバーによって異なります。あなたは、 "imap host for microsoft exchange(またはあなたが使用しているサーバ)をグーグルで探す"か、その電子メールサーバの設定に行くことでそれを見つけることができます。
私が実際にこの機能に追加したコードは、問題を特定するのに役立つエラーのログと、接続できない理由だけです。あなたの設定ファイルのonPrepare()
機能でこれを置くことができます。
mailListener.on("error", function(err){
console.log(err);
});
私の質問が更新されました。実際にブラウザで電子メールを開く必要がある理由がわからない場合、メールリスナーはメールが使用するimapサーバーに接続しています。まったく同じことです。とにかく、それをやらなければならない場合、電子メールページはHTMLで構造化されるので、通常は電子メールを解析するように要素ロケータを使用できますが、安定した方法で一貫してトラバースするのは非常に難しいでしょう。 – Gunderson
実際に私はこれらのmailCatcherとmailTrapについて知りませんでした..問題が発生した後、あなたはソリューションの儀式を知ることになります:P –