Deb*_*anB 14 python selenium headless selenium-chromedriver selenium-webdriver
我正在尝试在无头模式下使用Selenium 4.8.0 Python 客户端执行一个基本程序:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
options = Options()
options.headless = True
s = Service('C:\\BrowserDrivers\\chromedriver.exe')
driver = webdriver.Chrome(service=s, options=options)
driver.get('https://www.google.com/')
driver.quit()
Run Code Online (Sandbox Code Playgroud)
具有以下配置:
尽管程序成功执行,但出现 DeprecationWarning 似乎为:
DeprecationWarning: headless property is deprecated, instead use add_argument('--headless') or add_argument('--headless=new')
Run Code Online (Sandbox Code Playgroud)
谁能解释 DeprecationWarning 和所需的更改?
Bri*_*ian 22
该headless属性的弃用是在 Selenium 博客文章Headless is Going Away!中宣布的。(存档)2023年1月29日。总结及修改建议如下:
\n\n无头者即将消失!
\nHeadless 是基于 Firefox 和 Chromium 的浏览器的一种执行模式。它允许用户在无头模式下运行自动化脚本,这意味着浏览器窗口\xe2\x80\x99不可见。在大多数 Selenium\xe2\x80\x99s 绑定中,有一个方便的方法可以在设置浏览器选项时设置此执行模式。但是,Selenium 4.8.0将弃用[原文如此]此方法,现在用户需要在设置浏览器选项时通过参数来设置它。
\n[...]
\n从现在开始我该如何设置无头模式?
\n简而言之,用户可以通过浏览器选项中的参数添加他们想要使用的无头模式。
\n前
\nRun Code Online (Sandbox Code Playgroud)\noptions = ChromeOptions()\noptions.headless = True\ndriver = webdriver.Chrome(options=options)\ndriver.get(\'http://selenium.dev\')\ndriver.quit()\n后
\nRun Code Online (Sandbox Code Playgroud)\noptions = ChromeOptions()\noptions.add_argument("--headless=new")\ndriver = webdriver.Chrome(options=options)\ndriver.get(\'http://selenium.dev\')\ndriver.quit()\n
请参阅完整的博客文章,了解实施此更改的更多背景信息。
\n测试自动化开发人员已经使用Headless Chrome和Firefox Headless相当一段时间了,在无头模式下执行自动化脚本,在这种模式下浏览器窗口不可见。这是传统的无头模式,现在变成了旧的无头模式。
使用的片段是:
爪哇:
ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
WebDriver driver = new ChromeDriver(options);
driver.get("https://selenium.dev");
driver.quit();
Run Code Online (Sandbox Code Playgroud)
Python:
options = ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)
driver.get('http://selenium.dev')
driver.quit()
Run Code Online (Sandbox Code Playgroud)
JavaScript:
let driver = await env
.builder()
.setChromeOptions(new chrome.Options().headless())
.build();
await driver.get('https://selenium.dev');
await driver.quit();
Run Code Online (Sandbox Code Playgroud)
根据这个Selenium 博客,通过使用无值或有值的开关,这种旧的无头模式仍然可用。这种方便但已弃用的方法将在Selenium 4.10.0中删除--headlessold
最近 Chromium 团队发布了 Native Headless 模式,现在正式称为新的 Headless模式。此功能已登陆:
通过以下方式得到适当支持:
新语法需要--headless=new作为参数传递,而我们仅--headless在使用 Chrome 自 v96 到 v108 时传递。
示例代码片段:
爪哇:
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless=new");
WebDriver driver = new ChromeDriver(options);
driver.get("https://selenium.dev);
driver.quit();
Run Code Online (Sandbox Code Playgroud)
Python:
options = ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
driver.get('http://selenium.dev')
driver.quit()
Run Code Online (Sandbox Code Playgroud)
JavaScript:
let driver = await env
.builder()
.setChromeOptions(options.addArguments('--headless=new'))
.build();
await driver.get('https://selenium.dev');
await driver.quit();
Run Code Online (Sandbox Code Playgroud)
CSharp:
var options = new ChromeOptions();
options.AddArgument("--headless=new");
var driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("https://selenium.dev");
driver.Quit();
Run Code Online (Sandbox Code Playgroud)
红宝石:
options = Selenium::WebDriver::Options.chrome(args: ['--headless=new'])
driver = Selenium::WebDriver.for :chrome, options: options
driver.get('https://selenium.dev')
driver.quit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18525 次 |
| 最近记录: |