【Selenium】close()とquit()メソッドの違いをわかりやすく解説
Selenium WebDriverにおけるclose()メソッドとquit()メソッドは、どちらもブラウザを閉じるために使用されますが、その動作には重要な違いがあります。なお、両メソッドとも引数(パラメータ)は不要です。
close()とquit()の違い一覧
| 番号 | close() | quit() |
|---|---|---|
| 1 | 現在フォーカスされているブラウザ(ウィンドウ)のみを閉じます。 | 開いているすべてのブラウザウィンドウを閉じます。 |
| 2 | アクティブなWebDriverインスタンスを1つだけ終了します。 | すべてのアクティブなWebDriverインスタンスを終了し、セッションを完全に破棄します。 |
close()メソッドとは
close()メソッドは、操作対象となっている(フォーカスのある)ブラウザウィンドウだけを閉じるメソッドです。複数のウィンドウやタブが開いている場合でも、他のウィンドウやWebDriverセッションはそのまま維持されます。特定の子ウィンドウだけを閉じて処理を続けたい場合に便利です。
quit()メソッドとは
quit()メソッドは、WebDriverが起動したすべてのブラウザウィンドウを閉じ、関連するドライバーセッションを完全に終了させます。テストの最後には必ずquit()を呼び出してリソースを解放するのが、Seleniumテストにおけるベストプラクティスとされています。
サンプルコード
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import java.util.Set;
import java.util.Iterator;
import org.testng.annotations.Test;
public class WindowHandles {
@Test
public void Browserclose_quit() throws Exception {
System.setProperty("webdriver.chrome.driver", "C:\\Selenium\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.tutorialspoint.com/index.htm");
// 親ウィンドウのハンドルを取得
String currentWindow = driver.getWindowHandle();
// 開いているすべてのウィンドウハンドルを取得
Set<String> allWindows = driver.getWindowHandles();
Iterator<String> i = allWindows.iterator();
while (i.hasNext()) {
String childWindow = i.next();
if (!childWindow.equalsIgnoreCase(currentWindow)) {
driver.switchTo().window(childWindow);
System.out.println("The child window is " + childWindow);
// close()メソッドはフォーカス中の子ウィンドウのみを閉じる
// 親ウィンドウは開いたままになる
driver.close();
} else {
System.out.println("There are no children");
}
}
// quit()はすべてのアクティブなWebDriverインスタンスを終了するため、
// 残っていた親ウィンドウもここで閉じられる
driver.quit();
}
}
コードの解説
このコードでは、まずgetWindowHandle()で親ウィンドウのハンドルを取得し、getWindowHandles()ですべてのウィンドウハンドルを取得しています。その後、子ウィンドウへ切り替えてclose()を呼び出すことで、子ウィンドウのみを閉じ、親ウィンドウは開いたままになります。最後にquit()を呼び出すことで、残りの親ウィンドウも含めてすべてのブラウザが閉じられ、WebDriverセッションが完全に終了します。
-
ビットコインとイーサリアムの違いを徹底解説!投資前に知っておきたい3つのポイント
2017年は間違いなく暗号資産(仮想通貨)の年となりました。その後、価格は下落したものの、特に主要通貨への関心は衰えていません。最も人気のある2つの通貨であるビットコインとイーサリアムは、この年、劇的な価格上昇を見せました。ビットコインは1,000ドル未満から約20,000ドル近くまで、イーサリアムは10ドル未満から1,300ドル超まで急騰しています。暗号資産への投資に関心がある方のために、ここではビットコインとイーサリアムの主な違いについてわかりやすく解説します。 1. ビットコインは第1世代、イーサリアムは第2世代 ビットコインは、一般の人々の注目を集めた最初の主要な暗号資産です。ある
-
Windows 10とWindows 11の違いを徹底比較!アップグレードすべきか判断するポイント
Microsoft(マイクロソフト)は、数々の新機能と改善点を盛り込んだ最新OS「Windows 11」をリリースしました。一方で、これまで数多くのパッチやアップデートが適用されてきたWindows 10は、新しいWindows 11よりも安定したOSと言えます。Microsoftによると、Windows 10のサポートは2025年以降に終了する予定のため、Windows 11へアップグレードするか、Windows 10を使い続けるかを検討する時間は十分にあります。この記事では、Windows 10とWindows 11の性能・機能・改善点を比較し、新しいOSへ移行すべきか、それともWindo