Вопрос-Ответ

DeprecationWarning: executable_path has been deprecated selenium python

Предупреждение об устаревании: executable_path устарел selenium python

Я использую sublime для написания сценариев на python. Следующий код предназначен для автоматической установки драйвера selenium на python с помощью пакета 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())

Как исправить такую ошибку?

Переведено автоматически
Ответ 1

Это сообщение об ошибке...

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

...подразумевает, что ключ executable_path устареет в следующих выпусках.

Это изменение встроено в Selenium 4.0 Beta 1 список изменений, в котором упоминается:


Не рекомендуется использовать все аргументы, кроме Options и Service при создании экземпляра драйвера. (#9125,#9128)



Решение

Поскольку в качестве ключа executable_path устарел, вы должны использовать экземпляр Service() класса вместе с ChromeDriverManager().install() командой, как описано ниже.

Предварительные требования

Убедитесь, что:


  • Selenium обновлен до версии 4.0.0


    pip3 install -U selenium


  • Установлен Webdriver Manager для Python


    pip3 install webdriver-manager



Подробное обсуждение установки Webdriver Manager для Python вы можете найти в ModuleNotFoundError: ошибка отсутствия модуля с именем 'webdriver_manager' даже после установки webdrivermanager


Блок кода, совместимый с 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

Вы можете найти подробное обсуждение установки Webdriver Manager для Python в выпуске Selenium ChromeDriver с использованием Webdriver Manager для 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")

TL; DR

You can find the relevant Bug Report/Pull Request in:

Ответ 2

This works for me

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)

Extending on the accepted answer, the Service class allows to explicitly specify a ChromeDriver executable in the same way as previously using the executable_path parameter. In this way existing code is easily migrated (clearly you need to replace C:\chromedriver.exe above by your path).

Ответ 3

I could figure it out

# 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

UPDATE Nov 2023

For Chrome Version 119.0.6045.124 (Official Build) (64-bit) or newer, there isn't any WebDriver as before. So just add these codes:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.selenium.dev/selenium/web/web-form.html")

I found this deprecation issue is appearing on Selenium, Pip and Python updates. So simply just change :

before:

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)

after:

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)
python selenium