使用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 post和this one但没有运气
我需要纯粹使用css选择器查询(希望最小Linq / for-loops)这样做
您可以使用xpath获得所需的一切:
browserClient.FindElement(By.XPath("//div[contains(@class, 'hey') and not(contains(@class, 'bad'))]/div")