chromedriver не может быть найден в PATH или при явном предоставлении в webdriver.Chrome () - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь использовать chromedriver с Selenium в Windows 10, но получаю следующую ошибку:

Traceback (most recent call last):
  File "scrape.py", line 4, in <module>
    driver = webdriver.Chrome()
  File "C:\Python37\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
    self.service.start()
  File "C:\Python37\lib\site-packages\selenium\webdriver\common\service.py", line 83, 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

И вот мой тестовый скрипт:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

Я пробовал многовещи.Я подробно опишу ниже.

Я попытался добавить путь к chromedriver в PATH.Изображение здесь:

enter image description here

Это прекрасно работает, потому что я могу запустить chromedriver из командной строки:

C:\Users\KraftWurk>chromedriver
Starting ChromeDriver 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

Но все же,когда я запускаю свои скрипты, я получаю сообщение об ошибке, что chromedriver должно быть в PATH ... это так, поэтому не уверен, что там происходит.

Я прочитал следующее: Python SeleniumChrome Webdriver

Я попытался указать путь в соответствии с предложением, используя:

driver = webdriver.Chrome(executable_path=r"C:\drivers\chromedriver.exe")

Я все еще получаю то же предупреждение.

Я не совсемуверен, что происходит.Я использую Python 3.7 на Windows 10. Selenium 3.141.0 и Chromedriver 74.0.3729.6

1 Ответ

0 голосов
/ 07 апреля 2019

Чтобы устранить множество ручных работ и проблем несовместимости, я бы посоветовал вам перейти на WebDriverManager, поскольку он автоматически загружает необходимый двоичный файл, и нам не нужно задавать какой-либо путь.

Он поддерживает такие браузеры, как Chrome,Firefox, PhantomJS, Microsoft Edge или Internet Explorer.

Как мы используем это в нашем проекте?

Требуется только установка для установки этого пакета с использованием 'pip'.

pip install webdriver_manager

Вот и все!У нас все готово.Просто импортируйте этот модуль в ваш проект Python и начните его использовать.

Для Chrome:

from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver 
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
driver.get("http://www.google.com/") 
print driver.title
driver.quit() 

Для Firefox:

from webdriver_manager.firefox import GeckoDriverManager 
from selenium import webdriver
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
driver.get("http://www.google.com/") 
print driver.title 
driver.quit()

Для Edge:

from webdriver_manager.microsoft import EdgeDriverManager
from selenium import webdriver
driver = webdriver.Edge(executable_path=EdgeDriverManager().install()) 
driver.get("http://www.google.com/") 
print driver.title 
driver.quit() 

Для IE:

from webdriver_manager.microsoft import IEDriverManager
from selenium import webdriver 
driver = webdriver.Ie(executable_path=IEDriverManager().install())   
driver.get("http://www.google.com/") 
print driver.title 
driver.quit()

webdriver_manager по умолчанию пытается загрузитьпоследняя версия данного бинарного драйвера.Чтобы использовать конкретную версию драйвера, передайте версию драйвера, как показано ниже.

webdriver.Chrome(executable_path=ChromeDriverManager("2.42").install())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...