我正在为具有各种但有限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,但无济于事。有什么想法吗?
答案 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
块),或许您的会话对象指向错误的窗口或框架。