python selenium selenium-chromedriver headless google-chrome-headless

python - selenium.common.exceptions.WebDriverException: Mensaje: el ejecutable ''chromedriver'' debe estar en error PATH con Chrome sin cabeza



selenium-chromedriver headless (1)

cuando ejecuto mi script, recibí este error

Traceback (most recent call last): File "C:/Users/ishaq/AppData/Local/Programs/Python/Python36/lib/site-packages/selenium/webdriver/common/service.py", line 74, in start stdout=self.log_file, stderr=self.log_file) File "C:/Users/ishaq/AppData/Local/Programs/Python/Python36/lib/subprocess.py", line 707, in __init__ restore_signals, start_new_session) File "C:/Users/ishaq/AppData/Local/Programs/Python/Python36/lib/subprocess.py", line 992, in _execute_child startupinfo) FileNotFoundError: [WinError 2] The system cannot find the file specified During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:/Users/ishaq/AppData/Local/Programs/Python/Python36/headless.py", line 9, in <module> driver = webdriver.Chrome(executable_path=os.path.abspath("chromedriver"), chrome_options=chrome_options) File "C:/Users/ishaq/AppData/Local/Programs/Python/Python36/lib/site-packages/selenium/webdriver/chrome/webdriver.py", line 62, in __init__ self.service.start() File "C:/Users/ishaq/AppData/Local/Programs/Python/Python36/lib/site-packages/selenium/webdriver/common/service.py", line 81, in start os.path.basename(self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Message: ''chromedriver'' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

aqui esta mi guion

import os from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.binary_location = r''C:/Users/ishaq/Desktop/chrome/chromedriver.exe'' driver = webdriver.Chrome(executable_path=os.path.abspath("chromedriver"), chrome_options=chrome_options) driver.get("http://www.duo.com") magnifying_glass = driver.find_element_by_id("js-open-icon") if magnifying_glass.is_displayed(): magnifying_glass.click() else: menu_button = driver.find_element_by_css_selector(".menu-trigger.local") menu_button.click() search_field = driver.find_element_by_id("site-search") search_field.clear() search_field.send_keys("Olabode") search_field.send_keys(Keys.RETURN) assert "Looking Back at Android Security in 2016" in driver.page_source driver.close()


Si analizamos los registros, parece que el problema principal está en el start os.path.basename(self.path) y el mensaje de error posterior selenium.common.exceptions.WebDriverException: Message: ''chromedriver'' executable needs to be in PATH .

Entonces, está claro por el error que el cliente Python no pudo localizar el binario chromedriver .

Tienes que ocuparte de un par de puntos aquí:

  1. chrome_options.binary_location : el parámetro configura el chrome.exe no el chromedriver.exe
  2. os.path.abspath("chromedriver") recogerá la ruta del archivo de chromedriver pero no chromedriver.exe al final.
  3. Aquí está el código de muestra en mi Windows 8 para iniciar Chrome en Headless Mode :

    from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--headless") driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r''C:/Utility/BrowserDrivers/chromedriver.exe'') driver.get("http://www.duo.com") print("Chrome Browser Initialized in Headless Mode") driver.quit() print("Driver Exited")