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

Selenium/Python无法定位亚马逊商品页发货方元素求助

解决方案

1. 修正选择器使用逻辑

By.CLASS_NAME只能传单个类名,不能用空格或点连接多个类——这是你之前报错的核心原因。要定位多类元素,必须用By.CSS_SELECTOR,正确写法是:span.a-size-small.offer-display-feature-text-message(不要加多余引号)。

2. 必须加显式等待

亚马逊页面动态加载性强,直接定位大概率会因为元素未渲染完成失败,用显式等待稳得多:

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

# 最长等待10秒,直到元素出现
wait = WebDriverWait(driver, 10)
dispatch_element = wait.until(
    EC.presence_of_element_located(
        (By.CSS_SELECTOR, "span.a-size-small.offer-display-feature-text-message")
    )
)
# 获取发货方文本
dispatch_text = dispatch_element.text
# 判断是否非亚马逊发货
if "Amazon" not in dispatch_text:
    print("该商品非亚马逊发货")
else:
    print("该商品由亚马逊发货")

3. 备选定位方案(应对页面结构变化)

如果上述CSS选择器失效,用XPath关联“Dispatches From”标签来定位内容:

dispatch_element = wait.until(
    EC.presence_of_element_located(
        (By.XPATH, "//div[contains(text(), 'Dispatches From')]/following-sibling::div//span")
    )
)

4. 处理滚动加载

如果还是找不到,可能是发货信息在页面下半部分,需要先滚动到对应区域:

# 滚动到页面中间位置(按需调整)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight / 2);")
# 再执行显式等待定位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 22:34:51