Resolving DeprecationWarning: executable_path has been deprecated in Selenium Python

Nov 16, 2025 · Programming · 17 views · 7.8

Keywords: Selenium | Python | DeprecationWarning | Service Object | Webdriver Manager

Abstract: This article provides a comprehensive analysis of the deprecation of executable_path parameter in Selenium 4.0 and presents detailed solutions. Through comparison of old and new code implementations, it explains the usage of Service objects and offers complete code examples with migration guidelines. The integration of Webdriver Manager is also discussed to help developers smoothly transition to the new Selenium version.

Problem Background and Warning Analysis

When using Selenium for Python automation testing, many developers encounter the DeprecationWarning: executable_path has been deprecated, please pass in a Service object warning message. This warning indicates that in Selenium 4.0, the traditional executable_path parameter has been marked as deprecated and requires migration to the new Service object for browser driver management.

Architectural Changes in Selenium 4.0

According to the Selenium 4.0 Beta 1 changelog, the development team decided to deprecate all driver instantiation parameters except for Options and Service. This change aims to provide a cleaner, more consistent API design while improving code maintainability and extensibility.

Solution Implementation

To resolve this deprecation warning, follow these steps:

Environment Preparation

First, ensure proper version of dependencies are installed:

pip3 install -U selenium
pip3 install webdriver-manager

This will install the latest Selenium 4.0 version and Webdriver Manager tool.

Core Code Migration

The original code implementation:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

Needs to be modified to use the Service object:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

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

Complete Example Code

Here's a complete Google search automation example:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By

# Create Service object and install ChromeDriver
service = Service(ChromeDriverManager().install())

# Instantiate browser driver
driver = webdriver.Chrome(service=service)

# Browser operations
driver.maximize_window()
driver.get("https://www.google.com")

# Find search box and input content
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Yasser Khalil")

Advanced Configuration Options

In real projects, browser options configuration is often required. The following example shows how to combine Options and Service:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# Configure browser options
options = Options()
options.add_argument("start-maximized")
options.add_argument("--disable-blink-features=AutomationControlled")

# Create Service object
service = Service(ChromeDriverManager().install())

# Instantiate browser driver with options
driver = webdriver.Chrome(service=service, options=options)
driver.get("https://www.google.com")

Webdriver Manager Working Principle

Webdriver Manager automatically detects the browser version installed on the system and downloads the matching driver. When executing ChromeDriverManager().install(), it will:

Alternative Approach: Manual Driver Path Specification

For developers who prefer not to use Webdriver Manager, the driver path can be specified directly:

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

service = Service(r"C:\path\to\chromedriver.exe")
driver = webdriver.Chrome(service=service)

Compatibility Considerations

Although the new Service API is the recommended approach, Selenium will continue to support the old executable_path parameter for backward compatibility in the short term. However, it's advised to migrate to the new API as soon as possible to avoid compatibility issues in future versions.

Best Practice Recommendations

When migrating to the new API, it's recommended to:

Conclusion

The Service object introduced in Selenium 4.0 provides a more elegant approach to driver management. By adopting the new API, developers can write more robust and maintainable automation test code. The integration with Webdriver Manager further simplifies the driver management process, making cross-platform deployment more convenient.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.