【发布时间】:2015-11-12 04:07:03
【问题描述】:
我正在使用 Selenium 进行测试自动化,通常使用 css 选择器来定位元素。然而,最近,我遇到了一个奇怪的问题。我注意到在某些情况下,当我在浏览器控制台中进行测试时,css 选择器可以正常工作。例如,要从众多按钮中选择一个特定按钮,我会这样做:
(1) $("div.v-app[id^='v-discussions'] .v-button-caption:contains('Add')")
但是当我实际在 Selenium 中使用时,它会返回一个错误:
Caused by: org.openqa.selenium.InvalidSelectorException: The given selector div.v-app[id^='v-discussions'] .v-button-caption:contains('Add') is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: An invalid or illegal selector was specified
我还用querySelector 尝试了那个字符串,我得到“非法字符串”错误:
(2) document.querySelectorAll("div.v-app[id^='v-discussions'] .v-button-caption:contains('Add')")
为什么会发生这种情况?
附言
这是每个元素的样子:
<span class="v-button-caption">Add Comment</span>
【问题讨论】:
-
你用的是纯webdriverjs还是量角器?谢谢。
-
@alecxe 嗨,不,我正在使用 FirefoxDriver。谢谢。
-
不用
:contains试试看 -
@Tushar 不确定我明白你的意思。如果我按原样尝试但没有
:contains,它将不是一个有效的表达式。$("div.v-app[id^='v-discussions'] .v-button-caption('Add')") -
@EugeneS
:contains是 jQuery 伪选择器,而不是 javascript/CSS 的
标签: javascript jquery css selenium css-selectors