Почему исполняемый файл chromedriver не запускается в PATH даже после использования ChromeDriverManager через Selenium и Python

Я пытаюсь нажать кнопку Launch Earth с помощью этого блока кода.

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Web
from selenium.webdriver.support import expected_conditions as EC
url = 'https://www.google.com/earth/'
driver = webdriver.chrome()
driver.get(url)
wait = WebDriverWait(driver, 10)
launchEarthButton = wait.until(EC.element_to_be_clickable((By.XPATH, '/html/body/header/div/nav[1]/ul[2]/li[2]/a/span/span' ))
launchEarthButton.click()

Тем не менее, я получаю сообщение об ошибке ниже. Что случилось? Для справки, я использую компьютер MacOs. Раньше у меня возникала проблема с неправильным путем, но я решил ее с помощью ChromeDriverManager.

FileNotFoundError                         Traceback (most recent call last)
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/common/service.py in start(self)
     71             cmd.extend(self.command_line_args())
---> 72             self.process = subprocess.Popen(cmd, env=self.env,
     73                                             close_fds=platform.system() != 'Windows',

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text)
    853 
--> 854             self._execute_child(args, executable, preexec_fn, close_fds,
    855                                 pass_fds, cwd, env,

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session)
   1701                         err_msg = os.strerror(errno_num)
-> 1702                     raise child_exception_type(errno_num, err_msg, err_filename)
   1703                 raise child_exception_type(err_msg)

FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver'

During handling of the above exception, another exception occurred:

WebDriverException                        Traceback (most recent call last)
<ipython-input-9-940dd1aefbaf> in <module>
      7 from selenium.webdriver.support import expected_conditions as EC
      8 url = 'https://www.google.com/earth/'
----> 9 driver = webdriver.Chrome()
     10 driver.get(url)
     11 wait = WebDriverWait(driver, 10)

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive)
     71             service_args=service_args,
     72             log_path=service_log_path)
---> 73         self.service.start()
     74 
     75         try:

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/common/service.py in start(self)
     79         except OSError as err:
     80             if err.errno == errno.ENOENT:
---> 81                 raise WebDriverException(
     82                     "'%s' executable needs to be in PATH. %s" % (
     83                         os.path.basename(self.path), self.start_error_message)

WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

person Sean Taylor    schedule 05.07.2020    source источник
comment
Отвечает ли это на ваш вопрос? Сообщение об ошибке: исполняемый файл chromedriver должен быть доступно по пути   -  person Jacques    schedule 05.07.2020
comment
Когда вы используете Mac Os, chromedriver.exe следует упоминать как chromedriver.   -  person Justin Lambert    schedule 06.07.2020


Ответы (1)


Вы были близки. Как вы использовали:

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

кэшированные / загруженные ChromeDriver будет использоваться для инициации нового google-chrome Контекст просмотра.

Поэтому вам нужно удалить второй экземпляр driver = webdriver.Chrome()

person DebanjanB    schedule 05.07.2020
comment
если в случае необходимости другой простой способ будет помещен chromedriver.exe в папку Scripts каталога python - person Dev; 05.07.2020