2017-10-25 45 views
0

Google Chromeブラウザの閉じるボタンをクリックしてブラウザウィンドウを閉じる前に、クリーンアップを実行する必要があるという問題に取り組んでいます。Selenium - ブラウザが閉じられたときにクリーンアップを実行する方法

クリーンアップにはのログアウトが含まれています。すべてのクッキーを消去することは選択肢ではありません。残念ながら、シャットダウンフック(Javaに存在するものに類似したもの)のようなものを公開することができるような例は見当たりません。

セレンはクローズ機能をオーバーライドして、クリーンアップを実行して、ユーザーがクローズボタンをクリックするかブラウザーを閉じるとブラウザーを終了できるメカニズムを提供していますか?テストが終了したとき、私はクリーンアップを行うことはできませんいくつかの設計上の理由に短い

。私はハイジャッククローズボタンクリック(手動クリック)できますか?

+0

「クリーンアップ」でどのようなアクションを計画していますか?どのように 'シャットダウンフック'を使うつもりですか? – DebanjanB

+0

更新された質問 –

+0

を参照してください。 'ウェブサイトのログアウト'は 'クリーンアップ'操作の一部ではありません。あなたは 'クリーンアップ 'として何を計画していますか? – DebanjanB

答えて

0

クリーンアップは非常に幅広い説明であり、多くのことを含み、意味する可能性があります。

通常、Seleniumテストを書くときは、各テストまたは各テストスーツの後にアプリケーションの状態をリセットしたいと思っています。

これは通常、afterまたはafterEachの方法で行われます。これらのテストは、一連のテストのたびに、または各テストの後に実行されます。ちょうどあなたがbeforebeforeEachメソッドを介してものを設定することができますように。

ログアウトする方法は、アプリケーションによって異なります。特定のCookie /セッションをクリーンアップするか、ユーザーが手動で行う手順を実行することができます。

短いと幅広い例:

afterEach('Clear up', (done) => { 
    driver 
    .then(() => MyUtils.clearStorage(driver)) 
    .then(() => done()); 
}); 

after((done) => { 
    driver 
    .then(() => driver.quit()) 
    .then(() => done()); 
}); 
+0

いくつかの設計上の理由から、テスト終了時にクリーンアップを実行できません。閉じるボタンのクリックをハイジャックすることはできますか? –

+0

なぜ 'after'フックを使用できないのですか? – jamietelin

0

お使いのブラウザはセレンを使用して閉じている場合は、アプリケーションのログアウトを心配してはいけません。

セレンが公開されているブラウザは、あなたの履歴やCookieを通常のブラウザのように保存しません。したがって、セレンを使用してアプリケーションにログインしてログアウトしていない場合でも、ブラウザを閉じてからセレンを使用してアプリケーションリンクを開いた場合は2回目の試行で、この場合も資格情報を提供する必要があります。

しかし、通常のブラウザでは、ブラウザを閉じてからブラウザを開いてブラウザでアプリケーションのURLをクリックすると、ほとんどの場合、資格情報を入力する必要はなく、自動的にアプリケーションにログインしますこれはセレンでは当てはまりません。

あなたがセレンを使用して作成したデータ/レコードを削除する場合は、この場合、そのようなレコードを削除するコードを記述する必要があります。 Seleniumは作成したレコードを自動的に削除しません。

+0

私はブラウザを読み込むために 'user-data-dir'オプションを使用していますので、クッキーは永続します –

+0

close()メソッドまたはquit()メソッドを使用した場合の問題点と不一致があるかどうかを知りたいですか?あるいは単にそのようなソリューションを強化したいのですか? –

関連する問題