Unable to use Selenium Webdriver. Getting two exceptions
Не удается использовать Selenium Webdriver. Получаем два исключения
Я получаю следующую ошибку при попытке создать объект с помощью Selenium Webdriver.
"\selenium\webdriver\common\driver_finder.py", line 42, in get_path path = SeleniumManager().driver_location(options) if path is None else path
"\selenium\webdriver\common\selenium_manager.py", line 74, in driver_location browser = options.capabilities["browserName"]
AttributeError: 'str' object has no attribute 'capabilities'
During handling of the above exception, another exception occurred:
Traceback (most recent call last): "\selenium_webdriver_webscraping.py", line 4, in <module> driver = webdriver.Chrome(chrome_driver_path) "\selenium\webdriver\chrome\webdriver.py", line 47, in __init__ self.service.path = DriverFinder.get_path(self.service, self.options) "\selenium\webdriver\common\driver_finder.py", line 44, in get_path raise NoSuchDriverException(f"Unable to obtain {service.path} using Selenium Manager; {err}") selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain chromedriver using Selenium Manager; 'str' object has no attribute 'capabilities'; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
Если используемая вами версия Selenium - v4.6.0 или выше (что, я думаю, так, как я вижу SeleniumManger в трассировке ошибок), то вам действительно не нужно задавать driver.exe путь. Selenium может обрабатывать браузер и драйверы самостоятельно.
Обратите внимание, что первого аргумента больше нет executable_path, и он desired_capabilities был удален, но теперь есть другой способ его передачи. Смотрите Обновление до Selenium 4 для получения документации о том, как передать желаемые возможности при использовании Selenium 4.10.0 (или новее).
Кроме того, если вы хотите установить executable_path, его можно передать через service, но в этом больше нет необходимости, поскольку selenium manager включен.
Вот фрагмент кода со всем необходимым:
from selenium import webdriver from selenium.webdriver.chrome.service import Service
AttributeError: объект 'str' не имеет атрибута 'capabilities'
Потому что я установил путь chromedriver.exe к webdriver.Chrome(), как показано ниже:
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver.exe')
Итак, я удалил путь из webdriver.Chrome(), как показано ниже, после чего ошибка была устранена. * Это рекомендуется, и вы можете увидеть ответы на мой вопрос о том, какая версия драйвера Chrome webdriver.Chrome() получает:
from selenium import webdriver
driver = webdriver.Chrome()
Или, я установил путь к Service() и установил его в webdriver.Chrome(), как показано ниже, тогда ошибка была устранена:
from selenium.webdriver.chrome.service import Service from selenium import webdriver
service = Service(executable_path='./chromedriver.exe') driver = webdriver.Chrome(service=service)
И я получил ту же ошибку ниже, потому что я не загружал и не устанавливал chromedriver.exe в django-project:
Версия Selenium, которую вы используете, - v4.6 или выше. Я запускаю правильный код на своем ноутбуке, но когда я запускаю тот же код на другом ноутбуке, появляется ошибка. Я понял, что был установлен selenium версии 4.16 . Я устанавливаю selenium версии 3.141.0, и это работает отлично.