Ruby 你有空吗?找不到当前id

Ruby 你有空吗?找不到当前id,ruby,capybara,Ruby,Capybara,我正在为具有各种但有限id的页面编写查找程序 @field = ['name1', 'name2'] def fieldfind @field.each do |elem| out = elem if page.has_css?(elem) end end HTML 不管什么原因,我找不到名字1。我试着找你的地盘?和elem.to_s,但没有用。有什么想法吗?您缺少的#,是按id查找元素的css选择器。它应该是: @field = ['#name1', '#name2']

我正在为具有各种但有限id的页面编写查找程序

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

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


不管什么原因,我找不到名字1。我试着找你的地盘?和elem.to_s,但没有用。有什么想法吗?

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

@field = ['#name1', '#name2']
...
您可以使用:

page.find(:css, "input[id=name1]")
如果这样做有效,请继续并将变量动态添加到代码中


我建议您首先尝试查找一个元素(而不仅仅是改进现有的
每个
块),因为您的会话对象可能指向了错误的窗口或帧。

正如Baldrick提到的,css定位器不正确。但是,在更正该错误后,
@字段仍会出现问题。每个
。这将返回一个数组,而不是现有字段的元素或css

如果希望元素与@field中的一个css匹配,请尝试:

@field = ['#name2', '#name1']
def fieldfind
  matching_css = @field.find{ |elem| page.has_css?(elem) }
  page.find(matching_css)
end
或者,如果您只需要匹配的css定位器:

@field = ['#name2', '#name1']
def fieldfind
  @field.find{ |elem| page.has_css?(elem) }
end
name1,#name1,input#name1都显示为负数
@field = ['#name2', '#name1']
def fieldfind
  @field.find{ |elem| page.has_css?(elem) }
end