DeprecationWarning:executable_path 已被弃用 selenium python
- 2024-12-06 08:40:00
- admin 原创
- 91
问题描述:
我正在使用 sublime 编写 python 脚本。以下代码用于 python 中的 selenium 使用 webdriver_manager 包自动安装驱动程序
# pip install webdriver-manager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
#s=Service(path)
#driver=webdriver.Chrome(service=s)
driver.get('https://www.google.com')
driver.find_element(By.NAME, 'q').send_keys('Yasser Khalil')
代码运行正常,但我收到了这样的警告
Demo.py:7: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(ChromeDriverManager().install())
这样的bug该如何修复呢?
解决方案 1:
此错误信息...
DeprecationWarning: executable_path has been deprecated, please pass in a Service object
...意味着该密钥 executable_path
将在即将发布的版本中被弃用。
此更改与Selenium 4.0 Beta 1 更改日志一致,其中提到:
弃用驱动程序实例中的所有但
Options
和Service
参数。(#9125,#9128)
解决方案
和硒4由于该密钥 executable_path
已被弃用,您必须使用该类的实例Service()
以及ChromeDriverManager().install()
命令,如下所述。
先决条件
确保:
Selenium升级至v4.0.0
pip3 install -U selenium
Python 版 Webdriver 管理器已安装
pip3 install webdriver-manager
您可以在ModuleNotFoundError: 即使安装了 webdrivermanager 后也没有名为“webdriver_manager”的模块错误中找到有关为 Python安装 Webdriver Manager 的详细讨论
Selenium v4 兼容代码块
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://www.google.com")
控制台输出:
[WDM] - ====== WebDriver manager ======
[WDM] - Current google-chrome version is 96.0.4664
[WDM] - Get LATEST driver version for 96.0.4664
[WDM] - Driver [C:UsersAdmin.wdmdriverschromedriverwin3296.0.4664.45chromedriver.exe] found in cache
您可以在Selenium ChromeDriver 问题中找到有关安装Python 版 Webdriver Manager 的详细讨论,该问题使用适用于 Python 的 Webdriver Manager
如果您想传递Options()
对象,可以使用:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
options = Options()
options.add_argument("start-maximized")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get("https://www.google.com")
TL; DR
您可以在以下位置找到相关的 Bug 报告/Pull Request:
错误报告:弃用驱动程序实例中除选项和服务参数之外的所有参数
拉取请求:弃用驱动程序实例中除选项和服务参数之外的所有参数
解决方案 2:
这对我有用
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service(r"C:chromedriver.exe")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
在已接受的答案的基础上进行扩展,Service 类允许以与以前使用 executable_path 参数相同的方式显式指定 ChromeDriver 可执行文件。这样可以轻松迁移现有代码(显然您需要C:chromedriver.exe
用您的路径替换上面的代码)。
解决方案 3:
我能弄清楚
# pip install webdriver-manager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
s=Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=s)
driver.maximize_window()
driver.get('https://www.google.com')
driver.find_element(By.NAME, 'q').send_keys('Yasser Khalil')
解决方案 4:
2023 年 11 月更新
对于 Chrome 版本 119.0.6045.124 (Official Build) (64 位) 或更新版本,与以前一样没有任何WebDriver。因此只需添加以下代码:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.selenium.dev/selenium/web/web-form.html")
我发现这个弃用问题出现在 Selenium、Pip 和 Python 更新中。因此只需更改:
前:
from selenium import webdriver
chrome_driver_path = 'C:/Users/Morteza/Documents/Dev/chromedriver.exe'
driver = webdriver.Chrome(executable_path=chrome_driver_path)
url = "https://www.google.com"
driver.get(url)
后:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
s=Service('C:/Users/Morteza/Documents/Dev/chromedriver.exe')
browser = webdriver.Chrome(service=s)
url='https://www.google.com'
browser.get(url)
解决方案 5:
以上所有答案均指 Chrome,添加Firefox的答案
安装:
pip install webdriver-manager
代码:
from selenium.webdriver.firefox.service import Service
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(service=Service(executable_path=GeckoDriverManager().install()))
参考:https ://github.com/SergeyPirogov/webdriver_manager/issues/262#issuecomment-955197860
解决方案 6:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service_obj = Service("WebDrivers_pathchromedriver.exe")
driver = webdriver.Chrome(service=service_obj)
driver.get("https://www.google.com")
解决方案 7:
看看这里服务对象中的新定义。
我的解决方案
from selenium.webdriver.chrome.service import Service
chrome_executable = Service(executable_path='chromedriver.exe', log_path='NUL')
driver = webdriver.Chrome(service=chrome_executable)
解决方案 8:
Chrome 自动安装程序的最简单选项:
from selenium import webdriver
import chromedriver_autoinstaller
from selenium.webdriver.chrome.service import Service
chromedriver_autoinstaller.install()
driver = webdriver.Chrome(service=Service())
解决方案 9:
对于使用 Selenium 或更高版本的用户v4.6.0
:
无需driver.exe
再设置路径,也不需要外部库(如)webdriber-manager
。Selenium 的内置工具(称为)Selenium Manager
将处理浏览器驱动程序。
不需要以下代码:
driver = webdriver.Chrome(ChromeDriverManager().install())
# Or
s = Service('C:/Users/Downloads/chromedriver/chromedriver.exe')
driver = webdriver.Chrome(service=s)
# Or
driver = webdriver.Chrome('/path/to/chromedriver')
代码可以简单到:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com")
参考:
https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location/
Selenium Manager 简介
解决方案 10:
如果你正在使用任何 IDE,比如 PyCharm,请安装该 IDE 的 webdriver-manager 包,就像安装 selenium 包一样
解决方案 11:
您可以创建 ChromeOptions 的实例,它具有设置 ChromeDriver 特定功能的便捷方法。然后,您可以将 ChromeOptions 对象传递到 ChromeDriver 构造函数中:
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
自 Selenium 版本 3.6.0 起,Java 中的 ChromeOptions 类还实现了 Capabilities 接口,允许您指定非特定于 ChromeDriver 的其他 WebDriver 功能。
ChromeOptions options = new ChromeOptions();
// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);
// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件