これらの違いは何ですか
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
どちらをいつ使用しますか?
これらの違いは何ですか
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
どちらをいつ使用しますか?
回答:
これは、私が人々がすべきでないときにClose()を使用するのを見た良い質問です。Selenium Client&WebDriver C#Bindingsのソースコードを調べたところ、次のことがわかりました。
webDriver.Close()
-ドライバーがフォーカスしているブラウザーウィンドウを閉じます webDriver.Quit()
-Dispose()を呼び出す webDriver.Dispose()
すべてのブラウザウィンドウを閉じ、セッションを安全に終了します以下のコードは、ドライバーオブジェクトを破棄し、セッションを終了し、テストが失敗したか成功したかにかかわらず、テスト中に開いたすべてのブラウザーを閉じます。
public IWebDriver Driver;
[SetUp]
public void SetupTest()
{
Driver = WebDriverFactory.GetDriver();
}
[TearDown]
public void TearDown()
{
if (Driver != null)
Driver.Quit();
}
要約すると、プログラムを終了する前に、Quit()またはDispose()が呼び出されていることを確認し、何をしているのかはっきりしない限り、Close()メソッドを使用しないでください。
注意:
仮想マシンのハードドライブ領域が不足している理由に関連する問題を解明しようとしたときに、この質問が見つかりました。例外により、実行ごとにQuit()またはDispose()が呼び出されず、appDataフォルダーがハードドライブをいっぱいにしていたことが判明しました。したがって、Quit()メソッドを正しく使用していましたが、コードに到達できませんでした。まとめ例外セーフパターンを使用するか、IDisposableを実装することにより、すべてのコードパスがアンマネージオブジェクトをクリーンアップすることを確認します
また
、RemoteDriverの場合、Quit()またはDispose()を呼び出すと、Selenium Serverのセッションも閉じます。セッションが閉じられていない場合、そのセッションのログファイルはメモリに残ります。
Quit()
と、リダイレクトはDispose()
Close()
-現在フォーカスされているブラウザまたはページを閉じるために使用されます。
Quit()
-Webドライバーインスタンスをシャットダウンまたは破棄するために使用されます(すべてのウィンドウを閉じます)。
Dispose()
-私はこの方法を知りません。
Quit
およびDispose
メソッドは互いに同義である必要があります。つまり、をQuit
呼び出しますDispose
。
driver.close
およびdriver.quit
は、Selenium WebDriverでブラウザセッションを閉じるための2つの異なる方法です。これらの両方を理解し、各メソッドをいつ使用するかを知ることは、テストの実行において重要です。したがって、私はこれらの方法の両方にいくつかの光を当てようとしました。
driver.close
-このメソッドは、フォーカスが設定されているブラウザウィンドウを閉じます。このメソッドはおなじみの名前ですが、WebDriver
はインターフェースを実装していません。AutoCloseable
driver.quit
–このメソッドは基本的にdriver.dispose
、現在は内部メソッドを呼び出し、次にすべてのブラウザーウィンドウを閉じ、WebDriverセッションを正常に終了します。
driver.dispose
-前に述べたように、WebDriverの内部メソッドであり、別の回答に従ってサイレントにドロップされました-検証が必要です。通常のテストワークフローでは、この方法には実際にはユースケースがありません。ほとんどのユースケースでは、前の方法のどちらでも機能するはずです。
説明の使用例:driver.quit
プログラムを終了するときはいつでも使用する必要があります。開いているすべてのブラウザウィンドウを閉じ、WebDriverセッションを終了します。driver.quit
プログラムの最後にを使用しないと、WebDriverセッションが適切に閉じず、ファイルがメモリから消去されません。これにより、メモリリークエラーが発生する可能性があります。
上記の説明では、との違いを説明しなければならないdriver.close
とdriver.quit
webdriverをのメソッドを。お役に立てれば幸いです。
次のWebサイトには、セレンテストに関するヒントがいくつかあります。リンク
quit()
:このドライバーを終了し、開いていたすべての関連ウィンドウを閉じます。
close()
:現在開いている最後のウィンドウの場合は、ブラウザを終了して、現在のウィンドウを閉じます。
close():-同じドライバーインスタンスで複数のブラウザーウィンドウを開いたとします。ドライバーインスタンスでclose()を呼び出すと、ドライバーインスタンスが指している現在のウィンドウが閉じます。ただし、ドライバインスタンスはメモリに残り、開いている他のブラウザウィンドウを処理するために使用できます。
quit():-ドライバーインスタンスでquit()を呼び出し、1つ以上のブラウザーウィンドウが開いている場合、開いているすべてのブラウザーウィンドウが閉じ、ドライバーインスタンスはガベージコレクションされます。つまり、メモリから削除されます。そのため、このドライバインスタンスを使用して、quit()を呼び出した後に他の操作を実行することはできません。これを行うと、例外がスローされます。
dispose():-WebDriverインスタンスのdisposeメソッドはないと思います。
このセレンの公式java doc リンクにアクセスして参照できます。
close()は、現在フォーカスされているブラウザウィンドウを閉じるwebdriverコマンドです。このメソッドはおなじみの名前ですが、WebDriver
はインターフェースを実装していません。AutoCloseable
自動化プロセス中に、複数のブラウザーウィンドウが開いている場合、close()コマンドは、その時点でフォーカスされている現在のブラウザーウィンドウのみを閉じます。残りのブラウザウィンドウは閉じられません。次のコードを使用して、現在のブラウザウィンドウを閉じることができます。
quit()は、driver.disposeメソッドを呼び出すwebdriverコマンドであり、すべてのブラウザーウィンドウを閉じ、WebDriverセッションを終了します。プログラムの最後でquit()を使用しない場合、WebDriverセッションは適切に閉じられず、ファイルはメモリからクリアされません。これにより、メモリリークエラーが発生する可能性があります。
オートメーションプロセスがブラウザウィンドウを1つだけ開く場合、close()コマンドとquit()コマンドは同じように機能します。オートメーション中に複数のブラウザウィンドウが開かれている場合、どちらの機能も異なります。
上記の参照:ここをクリック
Disposeコマンド Dispose()はQuit()を呼び出す必要があり、そのように見えます。ただし、PhantomJSを手動で閉じるまで後続のアクションがブロックされるという同じ問題もあります。
参照リンク
driver.close()とdriver.quit()の違い
driver.close –フォーカスが設定されているブラウザーウィンドウを閉じます。
driver.quit –基本的にdriver.disposeメソッドを呼び出します。このメソッドはすべてのブラウザウィンドウを閉じ、WebDriverセッションを正常に終了します。
Selenium WebDriver
WebDriver.Close()
このメソッドは、現在開いているウィンドウを閉じるために使用されます。ドライバーがフォーカスしている現在開いているウィンドウを閉じます。
WebDriver.Quit()
このメソッドは、WebDriverのインスタンスを破棄するために使用されます。そのドライバに関連付けられているすべてのブラウザウィンドウを閉じ、安全にセッションを終了します。WebDriver.Quit()はDisposeを呼び出します。
WebDriver.Dispose()
このメソッドは、すべてのブラウザウィンドウを閉じ、セッションを安全に終了します