ChromeDriver与Selenium Python报错求助:无法确定加载状态
问题描述
我在用Selenium开发Python项目时遇到以下错误:
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status
from unknown error: unexpected command response
(Session info: chrome=103.0.5060.114)
我的Chrome版本是103,ChromeDriver版本也匹配为103,相关代码如下:
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.chrome.service import Service player = input("Which player: ").lower() PATH = "/Users/makfadel/Desktop/Desktop-items/chromedriver 2" #driver = webdriver.Chrome(PATH) s = Service(PATH) browser = webdriver.Chrome(service=s) browser.get("https://www.basketball-reference.com/leagues/NBA_2022_per_game.html") search = browser.find_element(By.XPATH, "//*[@id='header']/div[3]/form/div/div/input[2]") search.send_keys(player) search.send_keys(Keys.RETURN) try: element = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='players']/div[1]/div[1]/strong/a"))) element.click() name = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='meta']/div[2]/h1/span"))) print() print(name.text) print() szn = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='info']/div[4]/div[1]/div/p[1]/strong")) ) games = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='info']/div[4]/div[2]/div[1]/p[1]")) ) ppgame = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='info']/div[4]/div[2]/div[2]/p[1]")) ) rebounds = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='info']/div[4]/div[2]/div[3]/p[1]")) ) assists = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='info']/div[4]/div[2]/div[4]/p[1]")) ) fg = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='info']/div[4]/div[3]/div[1]/p[1]")) ) fg3 = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='info']/div[4]/div[3]/div[2]/p[1]")) ) ft = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[@id='info']/div[4]/div[3]/div[3]/p[1]")) ) print(f"Season: {szn}") print(f"Games played: {games.text}") print(f"Points per game: {ppgame.text}") print(f"Rebounds per game: {rebounds.text}") print(f"Assists per game: {assists.text}") print(f"Field goal percentage: {fg.text}%") print(f"Field goal from 3 percentage: {fg3.text}%") print(f"Free throw percentage: {ft.text}%") except Exception: print(f"No player named {player}") finally: browser.quit()
解决方案
这个错误多是ChromeDriver与Chrome的会话通信异常导致的,可尝试以下修复方式:
添加ChromeOptions参数
给浏览器实例禁用沙箱、GPU加速等可能引发冲突的选项:from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-gpu") options.add_argument("--remote-debugging-port=9222") # 初始化浏览器时传入options browser = webdriver.Chrome(service=s, options=options)检查ChromeDriver权限
确保ChromeDriver文件有可执行权限,在终端运行:chmod +x "/Users/makfadel/Desktop/Desktop-items/chromedriver 2"优化页面等待逻辑
点击搜索结果后,页面跳转需更稳定的等待,可将presence_of_element_located替换为element_to_be_clickable,同时增加页面加载完成的等待:# 在browser.get之后添加 browser.implicitly_wait(5) # 或显式等待页面加载完成 WebDriverWait(browser, 10).until(lambda d: d.execute_script('return document.readyState') == 'complete')重新下载ChromeDriver
即使版本号匹配,也可能存在文件损坏情况,重新下载对应103.0.5060.114版本的ChromeDriver替换现有文件。修改ChromeDriver路径
当前路径包含空格(chromedriver 2)可能导致识别问题,建议重命名为chromedriver并修改PATH:PATH = "/Users/makfadel/Desktop/Desktop-items/chromedriver"
内容的提问来源于stack exchange,提问作者PyMak
相关产品推荐
相关产品推荐

