How to fix WebDriver.__init__( ) got an unexpected argument 'executable_path' error in python, I'm learning how to automate using python [duplicate]

How to fix WebDriver.__init__( ) got an unexpected argument 'executable_path' error in python, I'm learning how to automate using python [duplicate]
python
Ethan Jackson

Here is the screenshot of the error

A little backstory: I'm still new in all this coding/programming stuff. I'm now trying to learn how to automate something using python. So I tried automating account creating for Instagram (without any ill intentions ofcourse), and now I've come to this point where I am confused.

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException import random import string import time def generate_random_email(): return ''.join(random.choices(string.ascii_lowercase, k=10)) + '@example.com' def generate_random_username(): return 'user_' + ''.join(random.choices(string.ascii_lowercase + string.digits, k=8)) def generate_random_password(): return ''.join(random.choices(string.ascii_letters + string.digits + '!@#$%^&*', k=12)) def generate_birth_date(): year = random.randint(1980, 2000) month = random.randint(1, 12) day = random.randint(1, 28) return (year, month, day) chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--disable-notifications") chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36") driver = webdriver.Chrome(executable_path='chromedriver', options=chrome_options) wait = WebDriverWait(driver, 15) driver.get('https://www.instagram.com/accounts/emailsignup/') try: cookie_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Allow essential and optional cookies']"))) cookie_button.click() except TimeoutException: print("Cookie acceptance button not found. Proceeding without it.") email = generate_random_email() email_field = wait.until(EC.presence_of_element_located((By.NAME, 'emailOrPhone'))) email_field.send_keys(email) full_name = ' '.join(random.choices(string.ascii_letters.split(), k=2)).title() name_field = driver.find_element(By.NAME, 'fullName') name_field.send_keys(full_name) username = generate_random_username() username_field = driver.find_element(By.NAME, 'username') username_field.send_keys(username) password = generate_random_password() password_field = driver.find_element(By.NAME, 'password') password_field.send_keys(password) year, month, day = generate_birth_date() birthday_fields = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//select[@title='Year:'] | //select[@title='Month:'] | //select[@title='Day:']"))) birthday_fields.send_keys(str(year)) # Year birthday_fields.send_keys(str(month)) # Month (numeric) birthday_fields.send_keys(str(day)) # Day time.sleep(2) submit_button = driver.find_element(By.XPATH, "//button[text()='Sign Up']") submit_button.click() try: error_element = wait.until(EC.visibility_of_element_located((By.ID, 'ssfErrorAlert'))) print("Error during signup:", error_element.text) except TimeoutException: print("Form submitted. Check for verification steps (if any).") input("Press Enter to close the browser...") driver.quit()

Here's the code

Answer

This question has already been answered here.

Basically, Selenium v4.6.0 and onwards, you don't have to pass the executable_path option. Selenium will automatically find the ChromeDriver, if installed.

Quoting the top answer:

If you want to pass in an executable_path, you'll have to use the service arg now.

from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service(executable_path='./chromedriver.exe') options = webdriver.ChromeOptions() driver = webdriver.Chrome(service=service, options=options) # ... driver.quit()

Related Articles