如何在SeleniumWebDriverJava中使用css选择器定位元素?

如何在SeleniumWebDriverJava中使用css选择器定位元素?,java,selenium-webdriver,css-selectors,Java,Selenium Webdriver,Css Selectors,我正在尝试查找第三个div角色的文本: <div class="jss295"> <div class="section-header"> <h3 class="section-header-title">LABELS</h3></div> <div role="button" class="jss300 jss299" tabindex="-1"><span class="jss313

我正在尝试查找第三个div角色的文本:

<div class="jss295">
    <div class="section-header">
        <h3 class="section-header-title">LABELS</h3></div>
    <div role="button" class="jss300 jss299" tabindex="-1"><span class="jss313">system-all</span></div>
    <div role="button" class="jss300 jss299" tabindex="-1"><span class="jss313">paloaltonetworks_iPoiycgPut</span></div>
    <div role="button" class="jss300 jss299" tabindex="-1"><span class="jss313">system-paloaltonetworks</span></div>
</div>

标签
系统所有
帕洛阿尔托网络公司
系统帕洛阿尔托网络
我尝试了如下
xpath
driver.findelelement(By.xpath(//span[contains(text(),“+str+”)])))).getText()
,其中
str
是我需要的文本。
xpath
可以工作,但我想改用
cssSelector

:contains()CSS伪类选择器已从CSS3规范中删除。如果您使用的是最新的浏览器,这将不起作用,这将与新的CSS标准相冲突

如果类名是唯一的,则可以将cssSelector用作:

    span.valueOfClass
//在您的场景中,似乎所有的类名都是相同的

我想最好使用XPath

试一试:

    By.cssSelector(span[text()$=paloaltonetworks])

如果您的意思是希望通过文本选择节点,那么使用CSS选择器(
:contains
伪类不受Selenium支持)恐怕是不可能的。如果您有文本来选择元素,那么为什么要在元素中返回文本?在我看来,您似乎已经拥有了它…@JeffC-您说得对,但我想获取文本以便在测试中使用它我想在执行导致此文本出现的n操作后验证此文本是否存在,我想确保在我的测试运行和创建此文本(这是一个标签)时存在,我想将我的预期结果与实际结果进行比较。