如果元素存在于页面的多个位置但在同一个类下具有相同的id,如何查找? 例如: 有两个具有相同ID的文本字段,我想选择第二个。 它只在我写watir / ruby时使用(不使用页面对象) @ b.text_fields(:id =>'color')。last.set“red”
但到目前为止,我还没有成功使用页面对象。
提前致谢
答案 0 :(得分:1)
如评论中所述,最佳解决方案是更新字段以获得唯一ID。
但是,假设不可能,您可以使用:index
定位器解决问题。以下页面对象找到第二个颜色字段,相当于Watir' @b.text_field(:id => 'color', :index => 1).set
:
class MyPage
include PageObject
text_field(:color_1, id: 'color', index: 0)
text_field(:color_2, id: 'color', index: 1)
end
将被称为:
page = MyPage.new(browser)
page.color_1 = 'red'
page.color_2 = 'blue'
如果您实际上是在尝试最后一个字段,即复制@b.text_fields(:id => 'color').last.set
,那么:index
将是" -1":
text_field(:color_2, id: 'color', index: -1)
请注意,在方法中动态定位字段时(与访问者定义相反),可以执行类似的操作:
class MyPage
include PageObject
def set_colors(color_1, color_2)
text_field_element(id: 'color', index: 0).value = color_1
text_field_element(id: 'color', index: 1).value = color_2
end
end
答案 1 :(得分:0)
someData = sock.recv(1024)
这可以解决您的问题。