警告: Execute_path 已被废弃的 selenium python

我正在使用升华来编写 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())

如何修复这样的错误?

301596 次浏览

我能想出来的

# 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')

如果您正在使用任何 IDE,如 PyCharm,安装该 IDE 的网络驱动程序管理器软件包,如何安装硒软件包

您可以创建 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 类还实现了 Capability 接口,允许您指定其他不是 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);

我发现 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)

这对我有用

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
ser = Service("C:\\chromedriver.exe")
op = webdriver.ChromeOptions()
s = webdriver.Chrome(service=ser, options=op)

此错误消息..。

DeprecationWarning: executable_path has been deprecated, please pass in a Service object

... 意味着 钥匙 executable_path将在即将发布的版本中弃用。

这一变化是与 硒4.0 Beta 1 更改日志内联的,其中提到:

在驱动程序实例化中,除 OptionsService参数外,不推荐使用其他所有参数


解决方案

使用 作为 钥匙 executable_path是不推荐的,您必须使用 Service()类的一个实例以及下面讨论的 ChromeDriverManager().install()命令。

先决条件

确保:

  • Selenium 升级为 < em > v4.0.0

    pip3 install -U selenium
    
  • 安装了 Python 的 WebDriver Manager

    pip3 install webdriver-manager
    

您可以找到关于在 ModuleNotFoundError: 即使在安装 webdrivermanager 之后,也没有名为“ webDriver _ manager”的模块错误中安装 Python 网络驱动程序管理器的详细讨论

与 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:\Users\Admin\.wdm\drivers\chromedriver\win32\96.0.4664.45\chromedriver.exe] found in cache

您可以找到关于在 使用 Python WebDriver Manager 的 Selenium ChromeDriver 问题中安装 Python 网络驱动程序管理器的详细讨论


如果您想传递 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")

DR

你可在以下连结找到相关的错误报告/请求:

Chrome 自动安装最简单的选项:

from selenium import webdriver
import chromedriver_autoinstaller
from selenium.webdriver.chrome.service import Service


chromedriver_autoinstaller.install()
driver = webdriver.Chrome(service=Service())

以上所有的答案都是关于 Chrome 的,加上了 火狐

安装:

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

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service_obj = Service("WebDrivers_path\chromedriver.exe")
driver = webdriver.Chrome(service=service_obj)
driver.get("https://www.google.com")

查看 Service 对象 给你中的新定义。

我的解决办法

from selenium.webdriver.chrome.service import Service


chrome_executable = Service(executable_path='chromedriver.exe', log_path='NUL')
driver = webdriver.Chrome(service=chrome_executable)