使用Python Selenium选择Zalando网站下拉菜单鞋码失效问题咨询
Zalando鞋码选择代码失效原因及解决方案
Select函数失效核心原因
Selenium内置的Select类仅支持处理HTML原生<select>标签渲染的下拉菜单,Zalando站点的鞋码选择器是前端自定义的<div>/<button>标签实现的交互组件,没有使用原生select标签,所以Select类完全不适用。
你代码中存在的其他问题
find_elements_by_tag_name方法的入参应为HTML标签名(比如div、button),你传入的是CSS类名组合,属于方法调用错误,无法匹配到任何元素- 使用的绝对路径Xpath稳定性极差,站点前端结构稍有更新就会定位失败
- 没有添加页面加载等待逻辑,很容易出现元素未渲染完成就执行查找操作的异常
- 最后一行的
click没有加括号,只是获取了方法引用没有实际执行点击操作
正确实现代码
from selenium import webdriver from selenium.webdriver.chrome.options import Options from fake_useragent import UserAgent from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By options = Options() ua = UserAgent() userAgent = ua.random options.add_argument(f'user-agent={userAgent}') # 如需后台运行可开启无头模式 # options.add_argument('--headless=new') driver = webdriver.Chrome(options=options) driver.get("https://www.zalando.it/nike-sportswear-air-force-1-07-lv8-sneakers-basse-whiteblackwolf-grey-ni112o0m9-a11.html") # 显式等待10秒,直到鞋码选择区域加载完成 wait = WebDriverWait(driver, 10) size_area = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div[data-testid="size-picker"]'))) # 定位所有可选的鞋码按钮,排除售罄不可选的选项 size_buttons = size_area.find_elements(By.CSS_SELECTOR, 'button[aria-disabled="false"]') # 替换为你需要选择的鞋码 target_size = "42" for btn in size_buttons: if btn.text.strip() == target_size: btn.click() print(f"已成功选择鞋码{target_size}") break
内容的提问来源于stack exchange,提问作者Luigi V.
相关产品推荐
相关产品推荐

