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

Selenium XPath无法获取RoseGal商品材质、领型、衣长等属性求助

Selenium商品属性XPath获取方案

错误原因说明

你原有写法无法生效的核心问题如下:

  • 调用了find_elements(复数方法),返回的是匹配元素的列表,无法直接调用.text属性
  • XPath中直接以/text()结尾尝试获取文本节点,Selenium的元素定位接口仅支持返回WebElement对象,无法直接识别文本节点返回值
  • 使用了长串绝对路径,页面DOM结构稍有变动就会导致定位失效,稳定性极差

正确通用XPath模板

所有属性都可以用「匹配字段名的strong标签+取其后相邻文本」的相对路径写法,稳定性极高,各个属性的XPath如下:

  • 材质://div[@class='xxkkk20']/strong[text()='Material:']/following-sibling::text()[1]
  • 领型://div[@class='xxkkk20']/strong[text()='Collar:']/following-sibling::text()[1]
  • 衣长://div[@class='xxkkk20']/strong[text()='Shirt Length:']/following-sibling::text()[1]
  • 其他属性可以按上面的规则,替换strong标签内的文本即可适配

正确调用代码

因为Selenium无法直接获取文本节点内容,需要借助execute_script方法来提取,示例代码如下:

# 封装通用获取属性的方法,方便复用
def get_product_attr(attr_name):
    attr_xpath = f"//div[@class='xxkkk20']/strong[text()='{attr_name}:']"
    attr_ele = driver.find_element(By.XPATH, attr_xpath)
    return driver.execute_script('return arguments[0].nextSibling.textContent.trim();', attr_ele)

# 调用示例
material = get_product_attr("Material")
collar = get_product_attr("Collar")
shirt_length = get_product_attr("Shirt Length")
sleeve_length = get_product_attr("Sleeve Length")

额外优化建议

你原有代码中使用的find_element_by_xpath系列方法在Selenium 4.0+版本已经被弃用,建议统一替换为driver.find_element(By.XXX, 路径)的写法,替换前需要先导入By类:

from selenium.webdriver.common.by import By

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 20:45:08