JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【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セッションが完全に終了します。

  1. ビットコインとイーサリアムの違いを徹底解説!投資前に知っておきたい3つのポイント

    2017年は間違いなく暗号資産(仮想通貨)の年となりました。その後、価格は下落したものの、特に主要通貨への関心は衰えていません。最も人気のある2つの通貨であるビットコインとイーサリアムは、この年、劇的な価格上昇を見せました。ビットコインは1,000ドル未満から約20,000ドル近くまで、イーサリアムは10ドル未満から1,300ドル超まで急騰しています。暗号資産への投資に関心がある方のために、ここではビットコインとイーサリアムの主な違いについてわかりやすく解説します。 1. ビットコインは第1世代、イーサリアムは第2世代 ビットコインは、一般の人々の注目を集めた最初の主要な暗号資産です。ある

  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