一尘不染

量角器条件选择器

selenium

我正在使用Selenium Protractor,希望从以下列表中选择所有元素,但其中一个包含文本“ Cat”,然后对其余元素执行一些操作。

<div class="mainDiv">
    <div class="childDiv">Dog</div>
    <div class="childDiv">Goat</div>
    <div class="childDiv">Bird</div>
    <div class="childDiv">Cat</div>
    <div class="childDiv">Zebra</div>
</div>

是否有cssContainingText(或其他一些选择器)提供的选择器,我可以在其中提供条件以选择除包含文本“ Cat”的元素以外的所有元素?


阅读 258

收藏
2020-06-26

共1个答案

一尘不染

您可以使用以下定位器策略创建一个 列表, 选择除包含文本 Cat
的元素以外的所有其他元素:

  • xpath
    //div[@class='mainDiv']//div[@class='childDiv'][not(contains(.,'Cat'))]
    

使用Selenium和CSS选择器时

:contains伪类不在CSS规范中,并且Firefox或Chrome(甚至在WebDriver外部)也不支持。您可以在selenium.common.exceptions.InvalidSelectorException中找到带有“span:contains(’string’)”的详细讨论

但是,如果元素始终以特定顺序出现在DOM树中,例如 Cat
始终位于第四个子元素,则还可以使用:

  • cssSelector
    div.mainDiv div.childDiv:not(:nth-child(4))
    
2020-06-26