使用Selenium实现网站搜索时无结果且报AttributeError错误求助
问题分析与修正方案
核心错误点
- 变量赋值错误:你代码里
search = driver.find_element(...).click()这一行,click()方法的返回值是None,所以search变量实际是None,后续调用search.send_keys()必然触发AttributeError。 - 元素定位错误:你试图给搜索按钮调用
send_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.common.keys import Keys # 点击搜索图标按钮,触发输入框显示 WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/nav/form/button"))).click() # 等待搜索输入框加载并可交互,定位输入框元素 search_input = WebDriverWait(driver, 20).until( EC.visibility_of_element_located((By.XPATH, "/html/body/nav/form/input")) ) # 输入搜索词并回车 search_input.send_keys("Anthony Albanese") search_input.send_keys(Keys.ENTER)
补充说明
- 尽量避免使用绝对XPATH(
/html/body/...),可以换成更稳定的相对定位,比如根据元素的name、placeholder或class属性,这样页面结构小改动时代码不会失效。 - 不要依赖
time.sleep(),用WebDriverWait的显式等待更可靠,它会在元素满足条件时立即执行,无需固定等待时间。
内容的提问来源于stack exchange,提问作者snoozy
相关产品推荐
相关产品推荐

