CSS 选择器是否包含类似于 xpath 的文本?

问题描述 投票:0回答:3

在 Selenium 中,是否有任何带有“contains”的 CSS 选择器选项,类似于 Xpath,我们在其中检查 contains[text(),....]。

在下面的示例中,我给出了 CSS 和 Xpath

<div class="abcjha">
  <span>
    <a class="test" ng-tracking="test1" data-tracking="abc">Daniel</a>
  </span>
</div>

CSS : a[data-tracking='abc']
Xpath : //div/span/a[contains(text(),'Daniel')]

与上面的Xpath类似,CSS中有一个选项可以检查内部文本吗? 当我浏览它时,我看到了这个选项

==> css=button:contains("Log In")

但这对我不起作用。

有什么选择吗?

selenium xpath automation css-selectors automated-tests
3个回答
3
投票

不,css_selector对于Selenium仍然不支持

:contains("text")
方法。

您可以在以下位置找到一些详细的讨论:


0
投票

对于那些现在正在寻找解决方案的人来说,有一个合适的解决方案。在 css 中,我们现在可以搜索一个值,如下例所示:

By.cssSelector("button[id*='btn_enter'])

我的情况下的按钮识别看起来是这样的:

<button id="btn_enter_" type="submit" ...>


-1
投票

contains() 伪类可能不适用于本身不支持 CSS 选择器的浏览器。此外,它已从 CSS3 规范中弃用。

所以替代方法是使用

innerText

WebElement cell = driver.findElement(By.cssSelector("td[innerText='Item 1']"));

textContent

WebElement cell = driver.findElement(By.cssSelector("td[textContent='Item 1']"));
© www.soinside.com 2019 - 2024. All rights reserved.