【问题标题】:css selector works in browser but not in Seleniumcss 选择器在浏览器中有效,但在 Selenium 中无效
【发布时间】: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


【解决方案1】:

去吧:

WebElement element = driver.findElement(By.className("v-button-caption"));

我在 Selenium Webdriver 中使用它,对我来说效果很好

【讨论】:

  • 请再次阅读问题。就我而言,我试图定位的不是单个元素,而是从元素列表中选择特定元素。
  • 对于所有可以使用这个方法的选择器,这个命令和你说的一样,它从页面上的一堆元素中选择一个特定的元素..每个元素都有自己的特定且唯一的 id 并通过它被选中
猜你喜欢
  • 2021-12-18
  • 2010-12-27
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多