我想执行以下步骤:
检查下拉列表中是否存在元素'username';如果是,那么想要点击该元素并完成。
<span class="main-dropdown">
<div class="tt">
<span class="all-suggestions">
<div class="suggestion">
<p>user1</p>
</div>
<div class="suggestion">
<p>user2</p>
</div>
<div class="suggestion">
<p>user3</p>
</div>
</span>
</div>
</span>
我试过以下:
问题:'user2'显示在下拉列表中,但无法从下拉列表中点击该元素。
任何帮助都将不胜感激。
答案 0 :(得分:4)
问题是元素的路径是过度指定的。 Watir单独处理每个元素方法,返回每个调用的第一个匹配。它没有考虑链式方法。
例如,考虑第一个不起作用的代码:
@browser.div(:class,"suggestion").p(:text,username).click
实际上说:
username
的第一个p。这意味着Watir只会找到&#34; user1&#34;段落。
嵌套元素调用时,您只想包含与所有元素相同的祖先元素。例如,以下任何一个都可以工作:
# Using the only matching div.suggestion
@browser.div(:class => 'suggestion', :text => username).p.click
# Only using the common ancestor span.all-suggestions
@browser.span(:class,"all-suggestions").p(:text,username).click
如果你真的想保留所有的嵌套,你需要使用XPath:
@browser.p(:xpath => "//div[@class='suggestion']/p[text()='#{username}']").click