无法使用 Selenium Webdriver。出现两个异常
- 2024-12-05 08:37:00
- admin 原创
- 101
问题描述:
当我尝试使用 Selenium Webdriver 创建对象时出现以下错误。
"seleniumwebdrivercommondriver_finder.py", line 42, in get_path
path = SeleniumManager().driver_location(options) if path is None else path
"seleniumwebdrivercommonselenium_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)
"seleniumwebdriverchromewebdriver.py", line 47, in __init__
self.service.path = DriverFinder.get_path(self.service, self.options)
"seleniumwebdrivercommondriver_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
这是我使用的代码:
from selenium import webdriver
chrome_driver_path = <chrome drive .exe path>
driver = webdriver.Chrome(chrome_driver_path)
解决方案 1:
如果您使用的 Selenium 版本是 v4.6.0 或更高版本(我认为是,因为我SeleniumManger
在错误跟踪中看到过),那么您实际上不必设置driver.exe
路径。Selenium 可以自行处理浏览器和驱动程序。
因此您的代码可以简化如下:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com/")
driver.quit()
一些参考:
Webdriver 管理器的用途
Selenium Manager 简介
解决方案 2:
这是由于 Selenium 4.10.0 中的变化:
https ://github.com/SeleniumHQ/selenium/commit/9f5801c82fb3be3d5850707c46c3f8176e3ccd8e
请注意,第一个参数不再是executable_path
,并且desired_capabilities
已被删除,但现在有另一种方式来传入它。有关如何在使用 Selenium 4.10.0(或更新版本)时传入所需功能的文档,请参阅升级到 Selenium 4 。
此外,如果您想设置executable_path
,可以通过传入service
,但这不再是必要的,因为包含了 selenium 管理器。
以下是包含您需要的一切的代码片段:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service()
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# ...
driver.quit()
解决方案 3:
我得到了以下同样的错误:
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.common.exceptions.NoSuchDriverException:消息:无法找到或获取 chrome 驱动程序;有关此错误的文档,请访问: https: //www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
这是我的代码:
# "tests/test_1.py"
from django.test import LiveServerTestCase
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
class TestBrowser1(LiveServerTestCase):
def test_example(self):
service = Service(executable_path='./chromedriver')
driver = webdriver.Chrome(service=service)
driver.get(("%s%s" % (self.live_server_url, "/admin/")))
assert "Log in | Django site admin" in driver.title
因此,我下载chromedriver.exe
并将其设置到如下所示的根目录django-project
,然后错误就解决了:
django-project
|-core
| |-settings.py
| └-urls.py
|-my_app1
|-my_app2
|-tests
| |-__init__.py
| └-test_1.py
└-chromedriver.exe # Here
解决方案 4:
您使用的 Selenium 版本是 v4.6 或更高版本。我在笔记本电脑上运行了正确的代码,但当我在另一台笔记本电脑上运行相同的代码时,出现了错误。我意识到它安装了 selenium v4.16 。我安装了 3.141.0 版本的 selenium,它运行正常。
pip install selenium==3.141.0
Installing collected packages: selenium
Attempting uninstall: selenium
Found existing installation: selenium 4.16.0
Uninstalling selenium-4.16.0:
Successfully uninstalled selenium-4.16.0
Successfully installed selenium-3.141.0
解决方案 5:
我用过time.sleep
完整代码片段:
from selenium import webdriver
import time
website = "website"
path = r'path'
driver = webdriver.Chrome( )
driver.get(website)
time.sleep(100)
driver.quit()
这对我来说很有效,你可以根据需要添加任意时间
解决方案 6:
如果您使用的是最新版本的 Selenium 4.25 和 Python 3.12。请阅读您要使用的库的文档。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com/")
time.sleep(15)
driver.close()
driver.quit()
解决方案 7:
如果你使用 anaconda/conda,你可以直接从 conda 安装
conda install selenium
这对我来说是工作
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件