首页 > 解决方案 > Selenium 定位器如何定位子 div 类属性标签的列表

问题描述

我正在尝试查找子 div 类标签的列表。当我在 Chrome 中检查元素时,我尝试过的以下 Xpath 没有选择我想要的所有元素。
在页面上显示了 5 个选项卡。我想将所有这 5 个元素放入一个列表中,这样我就可以使用 For Each 循环来迭代这些元素

我想找到所有这些标签

<div class="jsx-1429490698 Tab Tab_active Tab_sports">sports</div>
<div class="jsx-1429490698 Tab  Tab_casino">casino</div>
<div class="jsx-1429490698 Tab  Tab_liveCasino">live &amp; real</div>
<div class="jsx-1429490698 Tab  Tab_esports">esports</div>
<div class="jsx-1429490698 Tab  Tab_vegas">vegas</div>

我的 Xpath 是

//div[@id='__next']//following-sibling::div[contains(@class, 'Tab')]

我将定位器标记为

[FindsBy(How.Xpath, Using="//div[@id='__next']//following-sibling::div[contains(@class, 'Tab')]")]
private IList<IWebElement> PromotionBrandTabsListElement {get; set;}

在 Chrome 中尝试此 Xpath 定位器时,它首先突出显示

<div class="jsx-1350237217 Tabs__container">

然后突出显示

<div class="jsx-1429490698 Tab  Tab_casino">casino</div>

我希望它突出体育、赌场、LiveCasino、电子竞技和维加斯,我希望将所有这些都放在一个列表元素中

HTML结构是

<div id="__next">
<div class="jsx-2794910414 top">
    <div class="jsx-133833352 Promotions__container">
        <div class="jsx-1850983400 Title__container">
            <div class="jsx-1850983400 Title__text--container">
                <div class="jsx-1850983400 Title__text">Promotions</div>
            </div>
        </div>
        <div class="jsx-1350237217 Tabs__container">
            <div class="jsx-1429490698 Tab Tab_active Tab_sports">sports</div>
            <div class="jsx-1429490698 Tab  Tab_casino">casino</div>
            <div class="jsx-1429490698 Tab  Tab_liveCasino">live &amp; real</div>
            <div class="jsx-1429490698 Tab  Tab_esports">esports</div>
            <div class="jsx-1429490698 Tab  Tab_vegas">vegas</div>
        </div>
        <div class="jsx-3650671054 jsx-3221847745 Promotion">
    </div>
</div>

请问我如何才能获得体育、赌场、LiveCasino、电子竞技和维加斯标签。

谢谢

标签: c#cssseleniumselenium-webdriverxpath

解决方案


尝试将您的 xpath 表达式更改为

//div[@id='__next']//div[contains(@class, 'Tabs__container')]//div[contains(@class, 'Tab')]

看看它是否有效。


推荐阅读