我有以下HTML表格。 在Watir中有没有办法点击“TestingName1”这个名字的“Bin”标志? Watir可以搜索文本“test”并在此之后单击“bin”徽标吗?
以下是HTML
<table class="table table-striped table-bordered table-hover">
<colgroup>
<col class=""><col class="" style="width: 100px; min-width: 100px;">
<col class="" style="width: 100px; min-width: 100px;">
</colgroup>
<tbody>
<tr class="">
<td tabindex="1" class="" style="text-align: left;">Distributor</td>
<td tabindex="2" class="" style="text-align: center;">
<div class="form-group">
<label class="ant-checkbox-wrapper">
<span class="ant-checkbox ant-checkbox-checked ant-checkbox-disabled">
<input disabled="" class="ant-checkbox-input" value="on" type="checkbox">
<span class="ant-checkbox-inner"></span>
</span>
</label>
</div>
</td>
<td tabindex="3" class="" style="text-align: center;">
<div>
<a id="lnkEditVendor" class="btn btn-default btn-xs" disabled="">
<i class="fa fa-pencil" aria-hidden="true"></i>
</a>
<!-- react-text: 762 --> <!-- /react-text -->
<a id="lnkDeleteVendor" class="btn btn-default btn-xs" disabled="">
<i class="fa fa-trash" aria-hidden="true"></i>
</a>
</div>
</td>
</tr>
<tr class="">
<td tabindex="4" class="" style="text-align: left;">testFMM</td>
<td tabindex="5" class="" style="text-align: center;">
<div class="form-group">
<label class="ant-checkbox-wrapper">
<span class="ant-checkbox ant-checkbox-checked">
<input class="ant-checkbox-input" value="on" type="checkbox">
<span class="ant-checkbox-inner">
</span>
</span>
</label>
</div>
</td>
<td tabindex="6" class="" style="text-align: center;">
<div>
<a id="lnkEditVendor" class="btn btn-default btn-xs">
<i class="fa fa-pencil" aria-hidden="true"></i>
</a>
<!-- react-text: 777 --> <!-- /react-text -->
<a id="lnkDeleteVendor" class="btn btn-default btn-xs">
<i class="fa fa-trash" aria-hidden="true"></i>
</a>
</div>
</td>
</tr>
<tr class="">
<td tabindex="7" class="" style="text-align: left;">TestingName1</td>
<td tabindex="8" class="" style="text-align: center;">
<div class="form-group">
<label class="ant-checkbox-wrapper">
<span class="ant-checkbox ant-checkbox-checked">
<input class="ant-checkbox-input" value="on" type="checkbox">
<span class="ant-checkbox-inner"></span>
</span>
</label>
</div>
</td>
<td tabindex="9" class="" style="text-align: center;">
<div>
<a id="lnkEditVendor" class="btn btn-default btn-xs">
<i class="fa fa-pencil" aria-hidden="true"></i>
</a>
<!-- react-text: 792 --> <!-- /react-text -->
<a id="lnkDeleteVendor" class="btn btn-default btn-xs">
<i class="fa fa-trash" aria-hidden="true"></i>
</a>
</div>
</td>
</tr>
</tbody>
</table>
我试图检查表格中是否存在我想要的文字
ary = driver.table(:class => ["table table-striped table-bordered table-hover"]).trs.collect{ |tr| tr[0].text }
ary.each do |i|
logger.info i
if i == "#{name1}"
logger.info "The data entered as #{name1} found"
end
end
我仍然无法点击右侧属于“TestingName1”文本的“bin”按钮。
谢谢。
答案 0 :(得分:1)
在查看Chuck van der Linden上面的答案之后,我对其进行了一些修改,得到了如下工作代码:
table = driver.table(:class => ["table table-striped table-bordered table-hover"])
textRow = table.td(:text => "TestingName1").parent
if textRow.a(:id => "lnkDeleteVendor").exists?
textRow.a(:id => "lnkDeleteVendor").click
end
谢谢。
答案 1 :(得分:0)
您是否尝试过直接根据所包含的文字选择行,然后点击该行中的链接?
driver.table(:class => ["table table-striped table-bordered table-hover"])
.tr(:text => 'TestingName1')
.i(:class => 'fa-trash')
.parent
.click
如果链接元素与同一行中的其他链接(例如类或数据属性)有所不同,那将会更容易,因为我们必须通过唯一的方式找到它在链接中的斜体元素上的类(在该行内)。
您也可以通过索引识别它,但如果表格被更改或重新排列,则可能很容易破坏您的代码或点击错误的链接。
(警告,上面的代码未经测试,只根据您的HTML编写)