You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium操作失败及find_element_by_id报错问题求助

问题原因与解决方案

核心报错原因

  1. executable_path参数已弃用:Selenium 4.x版本不再支持直接将ChromeDriver路径作为参数传入webdriver.Chrome(),必须通过Service对象传递驱动路径。
  2. 旧元素定位方法被移除:find_element_by_id这类以find_element_by_*开头的方法在Selenium 4.x中已被移除,需改用find_element()配合By类进行元素定位。

具体修复步骤

1. 导入必要的新增模块

需要导入Service(来自selenium.webdriver.chrome.service)和By(来自selenium.webdriver.common.by),如果用显式等待还需导入WebDriverWait和expected_conditions。

2. 替换驱动初始化方式

用Service对象封装ChromeDriver路径,再传给webdriver.Chrome()。

3. 替换元素定位方法

将所有find_element_by_id("xxx")替换为find_element(By.ID, "xxx")。

4. 用显式等待替代time.sleep()(推荐)

显式等待能在元素加载完成后立即执行操作,比固定延迟更可靠,避免因页面加载慢导致的元素找不到问题。

修改后的完整代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化Chrome驱动
service = Service('/Users/User/Desktop/it_projects/python-google-automation/Neuer Ordner/chromedriver')
driver = webdriver.Chrome(service=service)

# 打开目标网站
driver.get('https://www.nike.com/de/?cp=58194921917_search_%7cnike%7c10594878138%7c107792850434%7ce%7cc%7cDE%7cpure%7c452291007809&ds_rl=1252249&gclid=EAIaIQobChMIod-_o8jD-QIVE4XVCh1-FggsEAAYASAAEgJSYfD_BwE&gclsrc=aw.ds')

try:
    # 处理Cookie弹窗:等待"更多信息"按钮可点击并点击
    evade_cookie = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'hf_cookie_text_moreInformation'))
    )
    evade_cookie.click()
    
    # 等待"完成"按钮可点击并点击
    select_cookie = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'hf_cookie_label_done'))
    )
    select_cookie.click()
    
    # 搜索运动鞋:等待搜索框可点击后输入内容并提交
    search = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'VisualSearchInput'))
    )
    search.send_keys('Nike Dunk Low')
    search.send_keys(Keys.RETURN)
finally:
    # 可选:操作完成后关闭浏览器,注释掉可保留窗口查看结果
    # driver.quit()
    pass

额外说明

  • 显式等待的超时时间(示例中为10秒)可根据网站实际加载速度调整。
  • 如果仍出现元素定位失败,建议通过浏览器开发者工具(F12)重新确认元素ID是否有变化(网站可能动态更新DOM结构)。

内容的提问来源于stack exchange,提问作者Sami Ceidre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:54:14