Selenium选择除了某些类之外的几个元素

问题描述 投票:0回答:1

使用OpenQA.Selenium时,我需要通过CssSelector来查找FindElement()。在折叠或多个班级的情况下,这很容易。

<div class="myClass andMore">
    <div class="hey">
        <div class "deeper">
            inner text 1
        </div>
    </div>
    <div class="hey bad">
        <div class "deeper">
            inner text 2
        </div>
    </div>
    <div class="hey">
        <div class "deeper">
            inner text 3
        </div>
    </div>
</div>

要获得“内部文本2”,我可以执行以下操作:

string innerTxt2 = browserClient.FindElement(By.CssSelector("myClass.andMore .hey.bad .deeper"))
                                .Text;

但是,我无法理解除了“嘿坏”之外如何选择所有“嘿”,然后在“更深”的div中选择文本。

我想得到:

List<string> text1_and_text3 = browserClient.FindElement(By.CssSelector("myClass.andMore.hey:not('hey.bad').deeper)
                                            .Select(el=>el.Text)
                                            .ToList()"

然而,抛出异常,说“不是一个有效的选择器”试图跟随this postthis one但没有运气

我需要纯粹使用css选择器查​​询(希望最小Linq / for-loops)这样做

c# selenium-webdriver
1个回答
1
投票

您可以使用xpath获得所需的一切:

browserClient.FindElement(By.XPath("//div[contains(@class, 'hey') and not(contains(@class, 'bad'))]/div")
© www.soinside.com 2019 - 2024. All rights reserved.