You need to enable JavaScript to run this app. Python Selenium设亚马逊购物车数量999查库存遇报错求助
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium设亚马逊购物车数量999查库存遇报错求助

Selenium操作亚马逊购物车数量选择的问题修复

报错与运行失效的核心原因

  • 操作逻辑错误:代码中将存储XPath路径的纯字符串变量,直接当成可交互的Selenium页面元素对象调用方法,没有通过find_element()方法将路径对应的真实页面元素加载为WebElement实例,因此字符串对象不存在send_keys方法,触发对应的属性报错
  • 语法书写错误:input999.send.keys(search_text)属于无意义写法,Selenium的元素输入方法为send_keys(),且代码中并未提前定义search_text变量
  • 定位稳定性问题:你编写的包含sc-item-C5bd1271b-b46a-4d6e-901c-b5109e1e4868的XPath,嵌入了亚马逊动态生成的临时购物车项UUID,每次刷新页面、调整购物车商品排序时,这串标识都会发生变化,硬编码的路径无法长期稳定定位元素
  • 细节语法问题:原代码XPath中附带的"是网页HTML解析时的转义双引号,不能直接写入Python代码,需要替换为正常的双引号,否则会直接触发元素找不到的异常

注意:亚马逊购物车的数量下拉默认仅展示1-10的快捷选项,不存在直接点击选择999的入口,你想实现的“输入999查询真实库存”的逻辑,需要通过直接操作输入框输入值、让页面自动校验库存的方式实现,不需要强行触发下拉菜单的固定选项。

可正常运行的实现参考

调整操作逻辑,移除不稳定的动态定位路径,改用页面固定的元素属性定位,直接操作数量输入框完成目标:

from __future__ import unicode_literals
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys

# 初始化浏览器,Windows路径前加r避免反斜杠被Python转义
driver = webdriver.Chrome(r'C:\chromedriver_win32\chromedriver.exe')
url = 'https://www.amazon.fr/Raspberry-Tactile-Ventilateur-Moniteur-320x480/dp/B07WSVS1Q1/'
driver.get(url)

sleep(3)
# 同意cookie弹窗
driver.find_element_by_xpath('//*[@id="a-autoid-0"]/span').click()
sleep(3)
# 商品页点击加入购物车
driver.find_element_by_xpath('//*[@id="submit.add-to-cart"]/span/input').click()
sleep(3)
# 跳过延保推荐
driver.find_element_by_xpath('//*[@id="siNoCoverage"]/span').click()
sleep(3)
# 跳转购物车页面
driver.find_element_by_xpath('//*[@id="hlb-view-cart"]/span').click()
sleep(7)

# 核心逻辑:用固定name属性定位数量输入框,不依赖动态UUID路径
quantity_input = driver.find_element_by_css_selector("input[name='quantityBox']")
# 清空输入框原有内容
quantity_input.clear()
# 输入目标值999
quantity_input.send_keys("999")
# 触发回车提交数量修改
quantity_input.send_keys(Keys.ENTER)
sleep(3)

优化提示

  • 如果页面的数量选择是标准下拉结构,可以引入Selenium内置的Select类简化操作,不需要手动模拟点击:
    from selenium.webdriver.support.ui import Select
    select_elem = Select(driver.find_element_by_css_selector("select[name='quantity']"))
    select_elem.select_by_value("1")
    
  • 尽量减少sleep硬等待的使用,可以替换为显式等待,提升脚本的运行稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 23:15:07