ヘッドレスはなくなるのか?

さて、注目を集めたところで、ヘッドレスが実際になくなるわけではありません。Selenium で設定するための便利なメソッドがなくなるだけです。

ヘッドレスは、Firefox および Chromium ベースのブラウザの実行モードです。ユーザーはヘッドレスモードで自動化されたスクリプトを実行できます。つまり、ブラウザウィンドウは表示されません。Selenium のほとんどのバインディングには、ブラウザオプションを設定する際にこの実行モードを設定する便利なメソッドがあります。ただし、Selenium 4.8.0 ではこのメソッドが非推奨となり、ユーザーはブラウザオプションを設定する際に引数を通して設定する必要があります。

Selenium はなぜこれを行っているのですか?

Chromium ベースのブラウザには、現在 2 つの異なるヘッドレスモード (元のモードと、2022 年に追加された機能が強化されたモード) があります。ユーザーが Selenium の便利なメソッドを使用して headless を true に設定すると、Chromium ベースのブラウザによって提供される初期メソッドが使用されます。

便利なメソッドを非推奨 (および Selenium 4.10.0 で削除) にすることにより、ユーザーは使用するヘッドレスモードを完全に制御できるようになります。

2 つのヘッドレスモードとは?

従来の --headless と、バージョン 96 以降、Chrome には、ユーザーがブラウザの全機能 (拡張機能の実行も含む) を利用できる新しいヘッドレスモードが搭載されています。バージョン 96 から 108 の間は --headless=chrome でしたが、バージョン 109 以降は --headless=new です。

--headless=new を使用すると、Selenium でヘッドレスを使用する際のエクスペリエンスが向上するはずです。

詳細な説明をしてくれた Michael Mintz に感謝します!

新しいヘッドレスモードの詳細については、公式 Chrome ブログをご覧ください

今後、ヘッドレスモードはどのように設定すればよいですか?

要するに、ユーザーはブラウザオプションの引数を通して、使用したいヘッドレスモードを追加できます。

以前

ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
WebDriver driver = new ChromeDriver(options);
driver.get("https://selenium.dokyumento.jp");
driver.quit();
let driver = await env
  .builder()
  .setChromeOptions(new chrome.Options().headless())
  .build();
await driver.get('https://selenium.dokyumento.jp');
await driver.quit();
// C# did not have a convenience method
options = Selenium::WebDriver::Chrome::Options.new
options.headless!
driver = Selenium::WebDriver.for :chrome, options: options
driver.get('https://selenium.dokyumento.jp')
driver.quit
options = ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get('https://selenium.dokyumento.jp')
driver.quit()

以後

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless=new");
WebDriver driver = new ChromeDriver(options);
driver.get("https://selenium.dokyumento.jp");
driver.quit();
let driver = await env
  .builder()
  .setChromeOptions(options.addArguments('--headless=new'))
  .build();
await driver.get('https://selenium.dokyumento.jp');
await driver.quit();
var options = new ChromeOptions();
options.AddArgument("--headless=new");
var driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("https://selenium.dokyumento.jp");
driver.Quit();
options = Selenium::WebDriver::Options.chrome(args: ['--headless=new'])
driver = Selenium::WebDriver.for :chrome, options: options
driver.get('https://selenium.dokyumento.jp')
driver.quit
options = ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
driver.get('https://selenium.dokyumento.jp')
driver.quit()

ご質問やコメントがある場合は、サポートページに記載されている利用可能なオプションからお問い合わせください。

SeleniumHQ をフォローして、最新情報を入手してください!

ハッピーテスティング!

最終更新日:2023年3月6日: Chrome dev post (b3d1ae9f2d0) へのリンク