Sri*_*Sri 2 watir watir-webdriver
我想找到并单击Line Lo以下值中的值.以下li有100多条记录具有相同的类名.如何找到Line Lo并单击该值.
<div id="loc">
<ul id="tab">
<li class="criteria">
<div class="bud">
<div class="inner">
<div class="attr">Code Lo</div>
</div>
</div>
</li>
<li class="criteria">
<div class="bud">
<div class="inner">
<div class="attr">Line Lo</div>
</div>
</div>
</li>
<li class="criteria">
<div class="bud">
<div class="inner">
<div class="attr">Add Lo</div>
</div>
</div>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我试过的时候 browser.ul(id: "tab").li(class: "criteria").div(text: "Line Lo")
得到了失败错误.
Unable to locate element, using(:class => "Criteria", :tag_name=>"li"
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的,不同的属性来找到文本Line Lo而我失败了.
此外,此元素类似于第45个,因此可以在单击之前向下滚动并刷新此值吗?
提前致谢
你试过的最初的东西
browser.ul(id: "tab").li(class: "criteria").div(text: "Line Lo")
Run Code Online (Sandbox Code Playgroud)
失败,因为当有多个元素可以匹配您指定的条件时,watir将使用它找到的第一个元素.那么要求watir做的事情将等同于英语中的以下内容
找到第一个带有id'tab'的无序列表,然后在该列表中找到第一个带有'criteria'类的列表项,然后在该列表项中找到一个带有'Line Lo'文本的div.
由于该列表中的第一个LI不包含具有该文本的div,因此失败.
要点击最里面的div(根据评论,这是你要做的)
browser.div(:class => "attr", :text => "Line Lo").click
Run Code Online (Sandbox Code Playgroud)
又找到一个带有"attr"类和文本"Line Lo"的div,然后让div单击它
这些其他选项是在不清楚OP究竟属于哪个div的情况下提出的,但是我要离开它们,因为它们可能会为其他在类似问题上挣扎的人提供信息.
单击包含上面一个(父项)的div.
browser.div(:class => "inner", :text => "Line Lo").click
Run Code Online (Sandbox Code Playgroud)
如果那个父div没有唯一性(没有类等),你仍然可以这样做
browser.div(:class => "attr", :text => "Line Lo").parent.click
Run Code Online (Sandbox Code Playgroud)
单击包含所有内容的li标记
browser.li(:class => "criteria", :text => "Line Lo").click
Run Code Online (Sandbox Code Playgroud)
对于其中任何一个,如果您需要限制只查看该特定列表,请指定如下
browser.ul(:id => "tab").li(:class => "criteria", :text => "Line Lo").click
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2423 次 |
| 最近记录: |