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

Selenium运行时触发InvalidArgumentException错误的解决求助

解决Selenium的InvalidArgumentException(无效定位器)错误

你的问题出在元素定位写法错误上:driver.find_element("_yb_nuzqf")这种调用方式不符合Selenium的API要求,直接触发了"invalid locator"(无效定位器)错误。

错误根源

Selenium的find_element方法必须明确指定定位策略(比如通过ID、CSS选择器、XPATH等)和对应的定位值。你只传了定位值,没告诉Selenium用什么规则去找元素,所以被判定为无效参数。

修正方案

有两种常用的修正写法:

方法1:导入By类,明确指定定位策略

先导入By类,通过By.ID指定以元素ID为定位依据:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By  # 新增导入By类
import time

path = r"C:\...\chromedriver.exe"
driver = webdriver.Chrome(path)

driver.get('https://www.yahoo.com')

# 修正:指定定位策略为ID
search = driver.find_element(By.ID, "_yb_nuzqf")
search.send_keys("test")
search.send_keys(Keys.RETURN)

time.sleep(5)
driver.quit()

方法2:使用Selenium 4+支持的关键字参数写法

如果你的Selenium版本是4.0及以上,可直接用关键字参数指定定位方式,代码更简洁:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

path = r"C:\...\chromedriver.exe"
driver = webdriver.Chrome(path)

driver.get('https://www.yahoo.com')

# 修正:用id关键字参数指定定位值
search = driver.find_element(id="_yb_nuzqf")
search.send_keys("test")
search.send_keys(Keys.RETURN)

time.sleep(5)
driver.quit()

额外提示

如果修正后仍找不到元素,大概率是页面未加载完成。建议用显式等待替代固定时长的time.sleep,提升稳定性:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素加载完成,最多等待10秒
search = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "_yb_nuzqf"))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:35:27