gpt4 book ai didi

java - 区分具有相同类的两个 html 元素

转载 作者:行者123 更新时间:2023-11-28 03:02:49 27 4
gpt4 key购买 nike

我在下面有这段 html 代码,我想区分这两个 PagePostsSectionPagelet因为我只想从 first PagePostsSectionPagelet 中查找网络元素.有什么方法可以不使用 <div id="PagePostsSectionPagelet-183102686112-0"因为值不会总是相同?

<div id="PagePostsSectionPagelet-183102686112-0" data-referrer="PagePostsSectionPagelet-183102686112-0">
<div class="_1k4h _5ay5">
<div class="_5sem">
</div>
</div>
<div id="PagePostsSectionPagelet-183102686112-1" class="" data-referrer="PagePostsSectionPagelet-183102686112-1" style="">
<div class="_1k4h _5ay5">
<div class="_5dro _5drq">
<div class="clearfix">
<span class="_5em9 lfloat _ohe _50f4 _50f7">Earlier in 2015</span>
<div id="u_jsonp_3_4e" class="_6a uiPopover rfloat _ohf">
</div>
</div>
<div id="u_jsonp_3_4j" class="_5sem">
<div id="u_jsonp_3_4g" class="_5t6j">
<div class="_1k4h _5ay5">
<div class="_5sem">
</div>
</div>

尝试使用 //div[@class='_1k4h _5ay5']//div[@class ='_5sem']但它会返回两者。

使用 //div[@class='_5dro _5drq']//span[contains(@class,'_5em9 lfloat _ohe _50f4 _50f7') and contains(text(), '')]会帮我找到第二个PagePostsSectionPagelet相反。

最佳答案

您需要使用以下 xpath:

//div[contains(@class,'_1k4h') and contains(@class,'_5ay5')]

因为 selenium 在一个属性中搜索多个类时不能正常工作。我的意思是 By.Class("_1k4h _5ay5") 在任何情况下都找不到任何东西,而 By.Xpath("//div[@class='_1k4h _5ay5']") 也找不到任何东西,如果类是 "_5ay5 _1k4h "或 "_5ay5 _1k4h"。(因为它们可能是自动生成的,所以它在页面重新加载时可能有不同的位置)

但为了性能和正确性的最佳结果,我认为将是以下 xpath:

".//div[contains(@id, 'PagePostsSectionPagelet')][1]" -- for first div
".//div[contains(@id, 'PagePostsSectionPagelet')][2]" -- for second div

关于java - 区分具有相同类的两个 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33983217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com