我有这个HTMLcode:
<div class="A">
<div class="B">
Text1
</div>
</div>
<div class="A">
<div class="B">
Text2
</div>
</div>
所以我需要找到div class ='A'的索引,其中我找到了一些文本。我使用Watir Webdriver,现在我有了这段代码:
if @ff.div(:class=>'A').div(:text=>'Text1')
then ind=@ff.div(:class=>'A').index
end
但当然这不能说'未定义的局部变量或方法`索引''。
答案 0 :(得分:1)
使用webdriver无法获取索引,因为它们与匹配元素的集合相关。你可以尝试做的是将elemetns文本收集为Array,然后获取目标文本的索引。
@@ff.divs(:class, 'A').collect(&:text).index('Text1')
请注意,这仅适用于简单方案(例如您的示例)。如果您需要攻击更复杂的案例,请更新您的示例以匹配真实场景。
答案 1 :(得分:1)
如果您尝试将索引作为一种方法来处理您想要使用的元素,并且找到它的最佳方法是基于子元素的某些属性,那么有一种更好的方法。
e.g。如果您的目标是单击包含在其中包含“Text1”的div类B的A类实例,则执行此操作
browser.div(:class => 'B', :text => 'Text1').parent.click
这对于您想要的外部容器没有有用属性的情况尤其有用。
在上面的示例中,您也可以简单地执行此操作
browser.div(:class => 'A', :text => 'Text1').click