【发布时间】:2021-04-10 20:08:28
【问题描述】:
我正在尝试通过 xpath 选择来自此站点 https://www.crateandbarrel.ca/lindstrom-48x84-grey-curtain-panel/s557728 的产品
xpath 看起来像这样 //*[@id="react_0HM7S1A7EGQ26"]/div/div/div[2]/div[4]/div[1]/div/div[2]/span/span/span 和 CSS 选择器像这样 #react_0HM7S1A7EGQ26 > div > div > div.product-row.full-width > div.right-col > div.hidden-xs > div > div.shop-bar-price-area.jsProductPrice > span > span > span
react_0HM7S1A7EGQ26 部分在许多产品上都不同,我正在寻找一种方法来处理这个问题。
目前我正在做这样的事情:
xpath = '//*[@id="react_0HM7S1A7EGQ26"]/div/div/div[2]/div[4]/div[1]/div/div[2]/span/span/span'
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, xpath))).text
但是,此 xpath 不能用于所有产品,因为 0HM7S1A7EGQ26 发生了变化。
【问题讨论】:
-
@ArundeepChohan 考虑到所有这些嵌套的 DIV 和 SPAN,您有什么希望知道可能会返回什么?如果页面有一点点变化,定位器很可能会损坏。拥有如此通用的 XPath 并不是一个好习惯,更不用说这么长了。
标签: selenium selenium-webdriver