什么对Capybara的查找声明有效?

时间:2016-03-01 00:36:55

标签: jquery ruby-on-rails selenium capybara

以下JQuery代码

$(".batch_fund_fields:first input[name*='code']")
当我使用JavaScript控制台时,

有效。但是如果我做的话

find(".batch_fund_fields:first input[name*='code']")

在Capybara内,我收到了错误

Selenium::WebDriver::Error::InvalidSelectorError: invalid selector: An invalid or illegal selector was specified
  (Session info: chrome=48.0.2564.116)
  (Driver info: chromedriver=2.20.353124 (035346203162d32c80f1dce587c8154a1efa0c3b),platform=Mac OS X 10.10.5 x86_64)
from /Users/agrimm/.rbenv/versions/1.9.3-p550/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/response.rb:51:in `assert_ok'

甚至

find(".batch_fund_fields:first")

给出了类似的错误。

http://www.rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders#find-instance_method没有提供太多信息,使用capybara rails "find"进行谷歌搜索也无济于事。

Capybara的find声明有效吗?

(我没有为页面添加HTML,因为它说的是参数无效,而不是它找不到任何元素)

1 个答案:

答案 0 :(得分:2)

没有有效的CSS:第一个选择器 - 有:first-child和:first-of-type - 允许的查询必须是有效的CSS - 不允许jQuery扩展。

如果你真的想要JQueries的行为:你可以做第一个扩展

first(".batch_fund_fields", minimum: 1).find("input[name*='code']")