我有 html 之类的
<div class="header"><div class="title">AAAAAAAAA</div></div>
<div class="body">
<div class="card"><div class="xxx"><div class="yyy"><div class="title">AAAAAAAAA</div></div></div></div>
<div class="card"><div class="xxx"><div class="yyy"><div class="zzz"><div class="title">BBBBBBBBB</div></div></div></div></div>
</div>
我需要做的是(通过 watir-webdriver)“让我得到具有 'title' 类和文本 'AAAAAAAAA' 的元素,它是具有类 'card' 的元素的子元素”。在这个例子中,我想在第三行找到类 'title' 的 div。
仅仅说“给我带有文本'AAAAAAAAA'和'title'类的元素”是不够的,因为该元素可能存在于DOM中的其他地方。我必须能够通过它的属性和它的父母来识别它。
我不确定如何做到这一点,并且真的很喜欢一些建议。
在 Watir-webdriver 中,如果我写:
b.element(:class => "card").element(:class => "title", :text => "BBBBBBBBB")
然后,据我所见,什么都找不到,因为 element(:class => "card") 将匹配第 3 行的第一个 card 元素,然后匹配 BBB... 文本将失败,因为它只有 AAA ......第一张卡下可用。
我虽然想做类似的事情
b.elements(:class => "card").each { |elem| ...etc }
找到我所追求的子元素,但是当我找到子元素时,我不能轻易使用它。例如,我希望能够调用可见?就可以了,但结果很难摆脱那个代码块。我可以有一个分配可见的局部变量吗?结果,或者我可以从块内抛出一个错误,但这并不是我真正想要的。
我真正追求的是:
b.elements(:class => "card").element(:class => "title", :text => "BBBBBBBBB").othermethods...
因此,第一个方法调用查找所有具有卡片类的元素,然后在第二个方法中查找具有类“title”和文本“BBBBBBBB”的卡片下的第一个元素。我知道一张卡片下只有一个元素具有“标题”类和文本“BBBBBBBBB”。
但是,此功能不存在。有没有一种简单的方法来实现同样的目标?我真的很感激这里的一些指导。提前致谢。