Selenium选择除了某些类

时间:2018-03-06 09:32:18

标签: c# selenium-webdriver

使用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)

1 个答案:

答案 0 :(得分:1)

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

browserClient.FindElement(By.XPath("//div[contains(@class, 'hey') and not(contains(@class, 'bad'))]/div")