我正在使用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”的元素以外的所有元素?
您可以使用以下定位器策略创建一个 列表, 选择除包含文本 Cat 的元素以外的所有其他元素:
//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 始终位于第四个子元素,则还可以使用:
div.mainDiv div.childDiv:not(:nth-child(4))