【发布时间】:2022-07-06 02:29:43
【问题描述】:
我有一个页面结构,其中包含分配给多个 div 的类名。但是有一个特定的 div 将在其中包含一个特定的 div.class 动态发生。
<div class="ProductVariants__VariantCard-sc-1unev4j-3 bEuNss">
<div class="ProductVariants__RadioButtonContainer-sc-1unev4j-4 jqJIBg">
<div class="ProductVariants__RadioButtonOuter-sc-1unev4j-5 jcgpFW">
<div class="ProductVariants__RadioButtonInner-sc-1unev4j-6 fgFqYM">
</div>
</div>
</div>
<div class="ProductVariants__VariantDetailsContainer-sc-1unev4j-7 fvkqJd">
<p class="ProductVariants__VariantUnitText-sc-1unev4j-8 bZvIga">50 g</p>
<div class="ProductVariants__PriceContainer-sc-1unev4j-9 jjiIua">
₹111
<span class="ProductVariants__MRPText-sc-1unev4j-10 jEinXG">
₹345
</span>
</div>
</div>
</div>
如果您在此处看到此类 ProductVariants__RadioButtonInner-sc-1unev4j-6 fgFqYM 第 4 行将包含在该特定类中。虽然可能有多个ProductVariants__VariantCard-sc-1unev4j-3 bEuNss。
如何获得包含ProductVariants__RadioButtonInner-sc-1unev4j-6 fgFqYM 的类ProductVariants__VariantCard-sc-1unev4j-3 bEuNss。
这是我尝试过的
driver.find_element(by=By.XPATH, value="//div[contains(@class,'ProductVariants__VariantCard-sc-1unev4j-3 bEuNss')]//div[contains(@class, 'ProductVariants__RadioButtonInner-sc-1unev4j-6 fgFqYM')]")
但这反而给了我内部 div 而不是整个外部 div
'<div class="ProductVariants__RadioButtonInner-sc-1unev4j-6 fgFqYM"></div>'
【问题讨论】:
-
代码示例中的 XPath 与异常中的 XPath 不匹配。更新您的问题
-
fgFqYM嵌套在第三层。所以你可以找到这个 div 并找到向上三层的父级。例如。driver.execute_script("return document.querySelector('.ProductVariants__RadioButtonInner-sc-1unev4j-6.fgFqYM').parentNode.parentNode.parentNode;")。如果嵌套顺序发生变化,这将中断。 -
@JaSON 更新了我的问题
-
@Firelord 没有更硒的方式,我不想执行任何 JS
-
@HimanshuPoddar 我不知道 xpath,所以我建议了替代方案。虽然,这不是一个很好的方法,但我可以将整个 HTML 正文引用从 selenium 传递给 Beautifulsoup,并使用 Python 从那里获取父级或祖先。不需要 JS。
标签: python selenium selenium-webdriver selenium-chromedriver findelement