has_css?找不到礼物

时间:2014-04-11 16:07:24

标签: ruby capybara

我正在为具有各种但有限ID的页面编写查找器

@field = ['name1', 'name2']

def fieldfind
  @field.each do |elem|
    out = elem if page.has_css?(elem)
  end
end

HTML

<input type='text' id = 'name1'>

无论出于何种原因,我都找不到名字1。我试过find_field?和elem.to_s,但无济于事。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

正如Baldrick所说,css定位器不对。但是,在纠正之后,您仍会遇到@field.each的问题。这将返回一个数组 - 不是元素或存在的字段的CSS。

如果你想要一个与@field中的一个css匹配的元素,请尝试:

@field = ['#name2', '#name1']
def fieldfind
  matching_css = @field.find{ |elem| page.has_css?(elem) }
  page.find(matching_css)
end

或者如果您只想要匹配的css-locator:

@field = ['#name2', '#name1']
def fieldfind
  @field.find{ |elem| page.has_css?(elem) }
end

答案 1 :(得分:0)

您缺少#,css选择器按ID查找元素。它应该是:

@field = ['#name1', '#name2']
...

答案 2 :(得分:0)

您可以使用:

page.find(:css, "input[id=name1]")

如果可行,请继续将变量动态添加到您的代码中。

我建议您首先尝试查找元素(而不仅仅是改进现有的each块),或许您的会话对象指向错误的窗口或框架。