Selenium WebDriver 错误:ChromeDriver 版本不匹配和元素未找到
Selenium WebDriver 错误:ChromeDriver 版本不匹配和元素未找到
在使用 Selenium WebDriver 自动化测试时,可能会遇到各种错误。以下是两个常见的错误示例,并提供相应的解决方案:
1. ChromeDriver 版本不匹配
DevTools listening on ws://127.0.0.1:2265/devtools/browser/3e079511-213b-4203-8699-0faa658c1519
Traceback (most recent call last):
File "c:/Users/Administrator/Desktop/人工智能2103-2021240192-陈鑫/1.py", line 15, in <module>
driver = webdriver.Chrome(options=options)
File "C:\Python3\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 76, in __init__
RemoteWebDriver.__init__(
File "C:\Python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "C:\Python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Python3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 100
Current browser version is 96.0.4664.93 with binary path C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe
**错误原因:**ChromeDriver 版本与 Chrome 浏览器版本不匹配。
解决方案:
- 确保 ChromeDriver 的版本与 Chrome 浏览器的版本相匹配。您可以从 ChromeDriver 下载页面 下载与您的 Chrome 版本对应的 ChromeDriver。
- 将 ChromeDriver 文件放置在系统 PATH 环境变量中,以便 Selenium 能够找到它。
2. 找不到元素
DevTools listening on ws://127.0.0.1:2536/devtools/browser/a8cfd254-c5de-4bb9-a469-46e9aec293e8
[0613/135116.547:INFO:CONSOLE(2)] '鍠滄鐪嬭眴鐡g殑浠g爜锛岃繕鏄彂鐜颁簡浠€涔坆ug锛熶笉濡傚拰鎴戜滑涓€璧蜂负璞嗙摚娣荤爾鍔犵摝鍚э紒
http://jobs.douban.com/#position-zsqd', source: https://img1.doubanio.com/f/shire/4888ee2fda6812f70a064a51c93b84fde8e4a3c2/js/douban.js (2)
[0613/135117.616:INFO:CONSOLE(31)] 'voteSelector .vote-comment', source: https://img1.doubanio.com/misc/mixed_static/380fb9f470e53146.js (31)
[0613/135119.450:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_top_icon content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135119.455:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_top_middle content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135119.520:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_banner_after_intro content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135119.588:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_hovering_video content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135119.791:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_download_middle content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135120.365:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_top_icon content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135120.436:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_banner_after_intro content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135120.504:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_hovering_video content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135120.685:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_top_middle content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135120.846:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_download_middle content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135120.916:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_top_icon content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135120.981:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_banner_after_intro content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135121.074:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_hovering_video content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135121.091:INFO:CONSOLE(7)] 'script loaded: https://shared.ydstatic.com/js/yadk/1.1.2.js', source: https://shared.ydstatic.com/js/yatdk/3.0.0/pcBanner.js (7)
[0613/135121.092:INFO:CONSOLE(7)] 'scripts load finish!', source: https://shared.ydstatic.com/js/yatdk/3.0.0/pcBanner.js (7)
[0613/135121.094:INFO:CONSOLE(7)] 'script loaded: https://shared.ydstatic.com/js/yadk/1.1.2.js', source: https://shared.ydstatic.com/js/yatdk/3.0.0/pcBanner.js (7)
[0613/135121.094:INFO:CONSOLE(7)] 'scripts load finish!', source: https://shared.ydstatic.com/js/yatdk/3.0.0/pcBanner.js (7)
[0613/135121.110:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_top_middle content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135121.114:INFO:CONSOLE(1)] '[Warning]: dale_movie_subject_download_middle content is empty', source: https://img1.doubanio.com/dm1nM2M2aC9mL2FkanMvZjFjNjBmNDRkMWRhYjQyYzFhMGU4ZjMwNDNkNzUyMmI5ZjI1NWUxMi9hZC5yZWxlYXNlLmpz (1)
[0613/135121.756:INFO:CONSOLE(7)] 'script loaded: https://shared.ydstatic.com/js/yadk/1.1.2.js', source: https://shared.ydstatic.com/js/yatdk/3.0.0/pcBanner.js (7)
[0613/135121.756:INFO:CONSOLE(7)] 'scripts load finish!', source: https://shared.ydstatic.com/js/yatdk/3.0.0/pcBanner.js (7)
[0613/135122.235:INFO:CONSOLE(7)] 'script loaded: https://shared.ydstatic.com/js/yadk/1.1.2.js', source: https://shared.ydstatic.com/js/yatdk/3.0.0/pcBanner.js (7)
[0613/135122.236:INFO:CONSOLE(7)] 'scripts load finish!', source: https://shared.ydstatic.com/js/yatdk/3.0.0/pcBanner.js (7)
Traceback (most recent call last):
File "c:/Users/Administrator/Desktop/人工智能2103-2021240192-陈鑫/1.py", line 19, in <module>
button = driver.find_element_by_class_name('more-btn')
File "C:\Python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 564, in find_element_by_class_name
return self.find_element(by=By.CLASS_NAME, value=name)
File "C:\Python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\Python3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Python3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".more-btn"}
(Session info: headless chrome=96.0.4664.93)
什么问题
错误原因:
- 页面加载不完全:元素可能尚未加载完成,导致 Selenium 无法找到它。
- 元素不存在:网页代码中可能根本不存在该元素。
解决方案:
- 使用显式等待:使用 WebDriverWait 和 expected_conditions 来等待元素出现,例如:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10) # 设置等待时间为 10 秒
button = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'more-btn')))
- 检查网页代码:确认页面代码中是否确实存在 class 为 'more-btn' 的元素。
- 使用其他定位器:尝试使用其他定位器,例如 ID 或 Xpath,来定位元素。
总结:
- ChromeDriver 版本不匹配是一个常见的错误,确保 ChromeDriver 的版本与 Chrome 浏览器的版本相匹配。
- 元素未找到可能是页面加载不完全或元素不存在导致的,可以使用显式等待或其他定位器来解决问题。
希望本文能帮助您解决 Selenium WebDriver 的常见错误。
原文地址: https://www.cveoy.top/t/topic/oA1H 著作权归作者所有。请勿转载和采集!