【问题标题】:How to locate element using css selector in selenium webdriver java?如何在 selenium webdriver java 中使用 css 选择器定位元素?
【发布时间】:2019-01-10 18:52:23
【问题描述】:

我正在尝试定位第三个 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.findElement(By.xpath("//span[contains(text(), '" + str + "')]")).getText(),其中str 是我需要的文本。
xpath 有效,但我想改用cssSelector

【问题讨论】:

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

标签: java selenium-webdriver css-selectors


【解决方案1】:

:contains() CSS 伪类选择器已从 CSS3 规范中删除。如果您使用的是最新的浏览器,这将无法使用,因为它会遇到新的 CSS 标准。

如果 className 是唯一的,您可以将 cssSelector 用作:

    span.valueOfClass

//在你的场景中似乎所有的类名都是一样的。

我想还是用 XPath 比较好。

试一试:

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

【讨论】:

    猜你喜欢
    • 2014-09-21
    • 1970-01-01
    • 2018-03-06
    • 2014-08-08
    • 2023-03-24
    • 1970-01-01
    • 2012-05-23
    • 2019-06-03
    • 2017-10-10
    相关资源
    最近更新 更多