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

Selenium自动化亚马逊购物车选择尺码时报错求助

问题分析与解决思路

错误原因

你遇到的UnexpectedTagNameException核心原因是:Selenium的Select类仅支持原生HTML <select>标签,但亚马逊的尺码选择器是自定义UI组件(实际是<span>元素模拟的下拉框),所以无法用Select类操作该元素。

解决步骤

针对这类自定义下拉组件,需通过模拟人工操作的方式实现选择:

  1. 点击下拉框触发选项列表展开
  2. 等待目标尺码选项加载完成并处于可点击状态
  3. 直接点击目标尺码选项

修改后的代码示例

@Test(priority = 3, groups = {"Startshopping"})
public void addItemToCart() throws InterruptedException {
    System.out.println("::::addItemToCart");

    // 跳转至商品详情页
    driver.get("https://www.amazon.com/Speedo-Rubber-Swim-X-Small-Yellow/dp/B005FYF9MU/ref=sr_1_5?crid=3720YVMBX45Q6&dib=eyJ2IjoiMSJ9.y9eXnqIydahqg0WjO3ehKHM65sn9kbsKPyhIxHga-HIlCuf7zQlZnqY6FxkBOW7DL-5MpTHyDd2qZEbexu2biaX6rOlb_zQC_HxBog7hE2w2B56sqg9S6lNjLhjvhiqoT-5hhn0sxvw6o7wFIW0gtEOd1tLKD7LyYtOjyiLY0CsKpF6mP0Xzwng1s1tF5N32s2XNby9LFVRfDXwCdcv8o-8YghwuEPzTiUzxfMZ8Nrr5vMxNBKGHR2pjgVJL1mJSrPz7WKaVkrRDFrzNGbKlUA7xM-fB1IDnRFHcGIuTzFU.nxFQ-aNfenY6irxxGenpBoDDaUxwWQLI3DDwCnItVrk&dib_tag=se&keywords=swimming%2Bfins%2Bxs&qid=1724391120&sprefix=%2Caps%2C73&sr=8-5&th=1");

    // 等待并点击尺码下拉框展开选项
    WebElement sizeDropdown = new WebDriverWait(driver, Duration.ofSeconds(10))
            .until(ExpectedConditions.elementToBeClickable(By.id("dropdown_selected_size_name")));
    sizeDropdown.click();

    // 等待目标尺码选项可点击并选择(示例选X-Small,可根据需求修改文本)
    WebElement targetSize = new WebDriverWait(driver, Duration.ofSeconds(10))
            .until(ExpectedConditions.elementToBeClickable(By.xpath("//div[contains(@class, 'a-dropdown-list')]//span[text()='X-Small']")));
    targetSize.click();

    // 执行加入购物车操作
    driver.findElement(By.id("add-to-cart-button")).click();
}

注意事项

  • 若目标尺码的定位器失效,可通过浏览器开发者工具查看选项元素的实际属性(如data-value、class等),调整定位方式(比如改用By.cssSelector)
  • 确保等待时间足够,避免因页面加载延迟导致元素未找到的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:52:34