无头模式即将淘汰!

既然我们引起了您的注意,无头模式实际上并不会消失,只是 Selenium 中设置它的便捷方法会消失

无头模式是 Firefox 和基于 Chromium 的浏览器的执行模式。它允许用户在无头模式下运行自动化脚本,这意味着浏览器窗口将不可见。在大多数 Selenium 的绑定中,都有一个便捷方法来在设置浏览器选项时设置此执行模式。但是,Selenium 4.8.0 将弃用此方法,现在用户需要在设置浏览器选项时通过参数来设置它。

为什么 Selenium 要这样做?

基于 Chromium 的浏览器现在有两种不同的无头模式(原始模式和 2022 年添加了更多功能的模式)。当用户通过 Selenium 中的便捷方法将无头模式设置为 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://seleniumcn.cn");
driver.quit();
let driver = await env
  .builder()
  .setChromeOptions(new chrome.Options().headless())
  .build();
await driver.get('https://seleniumcn.cn');
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://seleniumcn.cn')
driver.quit
options = ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get('https://seleniumcn.cn')
driver.quit()

之后

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

如果您有任何问题或意见,请通过我们的 支持页面上显示的任何可用选项联系我们。

请关注 SeleniumHQ,获取最新动态!

祝您测试愉快!

上次修改时间:2023 年 3 月 6 日:链接 Chrome 开发文章 (b3d1ae9f2d0)