無頭模式即將消失!

既然我們引起了您的注意,無頭模式實際上並不會消失,只是在 Selenium 中設定它的便捷方法即將消失

無頭模式是 Firefox 和 Chromium 瀏覽器的執行模式。它允許使用者在無頭模式下執行自動化腳本,意味著瀏覽器視窗將不可見。在大多數 Selenium 的綁定中,有一個便捷的方法可以在設定瀏覽器選項時設定此執行模式。然而,Selenium 4.8.0 將棄用此方法,現在使用者需要透過在設定瀏覽器選項時使用參數來設定它。

Selenium 為何要這樣做?

Chromium 瀏覽器現在有兩種不同的無頭模式(原始模式和 2022 年新增更多功能的模式)。當使用者透過 Selenium 中的便捷方法將 headless 設定為 true 時,它使用的是 Chromium 瀏覽器提供的初始方法。

透過棄用便捷方法(並在 Selenium 4.10.0 中移除它),使用者將完全控制選擇他們想要使用的無頭模式。

有哪兩種無頭模式?

傳統的 --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.programming.tw");
driver.quit();
let driver = await env
  .builder()
  .setChromeOptions(new chrome.Options().headless())
  .build();
await driver.get('https://selenium.programming.tw');
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.programming.tw')
driver.quit
options = ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get('https://selenium.programming.tw')
driver.quit()

之後

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

如果您有任何問題或意見,請透過我們 支援頁面上顯示的所有可用選項與我們聯繫。

關注 SeleniumHQ,隨時關注更新!

測試愉快!

上次修改時間 2023 年 3 月 6 日:連結 Chrome 開發文章 (b3d1ae9f2d0)