Python+Selenium脚本报错:cannot find Chrome binary问题求助
解决Chrome Binary找不到的错误及代码优化
核心错误原因
你遇到的cannot find Chrome binary错误,是因为代码中设置了ChromeOptions但没有将其传入浏览器实例,还重复初始化了两次Chrome浏览器,导致配置没有生效。
分步修复及优化
1. 正确配置Chrome浏览器实例
- 只初始化一次浏览器,将
ChromeOptions和Service一起传入webdriver.Chrome - 确保
binary_location指向你的Chrome.exe实际路径,executable_path指向chromedriver.exe路径
2. 修复元素定位错误
find_element_by_class_name("bg-disabled")前面必须指定浏览器实例(比如browser.),否则会报NameError- 绝对XPath(
/html/body/...)非常不稳定,建议根据页面结构改用相对定位,比如结合日期文本或父元素定位
3. 优化禁用日期的判断逻辑
is_enabled()方法不一定适用于通过CSS class标记的禁用元素,直接检查元素是否包含bg-disabled类更可靠
修正后的完整代码
import datetime from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By # 配置Chrome选项和服务 options = webdriver.ChromeOptions() options.binary_location = r"C:\Users\Admin\AppData\Local\Google\Chrome\Application\chrome.exe" driver_service = Service(executable_path=r"C:\Users\Admin\Desktop\Test\chromedriver.exe") # 初始化浏览器(仅一次) browser = webdriver.Chrome(service=driver_service, options=options) url = "你的目标URL" browser.get(url) def next_7_dates(): today = datetime.datetime.today() date_list = [] for x in range(0,7): new_date = today + datetime.timedelta(days=x) date_list.append(new_date.strftime('%Y-%m-%d')) return date_list # 获取未来7天日期并检查每个日期的状态 target_dates = next_7_dates() available = False for date_str in target_dates: try: # 假设日期元素的文本是YYYY-MM-DD格式,用相对XPath定位 date_element = browser.find_element(By.XPATH, f"//*[text()='{date_str}']") # 检查元素是否包含禁用类 if "bg-disabled" not in date_element.get_attribute("class"): print(f"日期 {date_str} 可预约") available = True except: print(f"未找到日期 {date_str} 的元素") if not available: print("未来7天无可用预约") # 关闭浏览器 browser.quit()
额外提示
- 确保chromedriver的版本和你的Chrome浏览器版本完全匹配,版本不兼容也会导致各种异常
- 建议使用WebDriverWait显式等待元素加载,避免因页面未加载完成导致的元素找不到错误
内容的提问来源于stack exchange,提问作者NewToC0ding01
相关产品推荐
相关产品推荐

