我正在尝试使用Ruby和Selenium-webdriver在表中搜索特定的特定值。我有一种方法可行,但由于某种原因需要花费很多时间。它是一行表,页面HTML如下所示:
<div id="permitGridContainer">
<table id="calendar" class="items" style="width:430px;" name="calendar">
<thead>
<tbody>
<tr>
<td id="avail1" class="status r slct" onmouseout="return nd();" onmouseover="return overlib("Available Quota<br>River Launches : 0 of 4");">
<div class="permitStatus">R</div>
</td>
<td id="avail2" class="status r" onmouseout="return nd();" onmouseover="return overlib("Available Quota<br>River Launches : 0 of 4");">
<div class="permitStatus">R</div>
</td>
<td id="avail3" class="status a" onmouseout="return nd();" onmouseover="return overlib("Available Quota<br>River Launches : 89 of 99");">
<a onclick="javascript:setNewArrivalDate("Sun Sep 06 2015", 2);return false;" href="#">
A
<br>
<small>89</small>
</a>
</td>
<td id="avail4" class="status a" onmouseout="return nd();" onmouseover="return overlib("Available Quota<br>River Launches : 97 of 99");">
</tr>
</tbody>
</table>
</div>
......我缩短了它有14列的表格。
我正在寻找一个可用Item的列,我正在检查这个类,但是文本也会改变,所以还有其他我可以寻找的东西。
这是我正在使用的代码,但它显然很慢。我使用puts语句来查看进度。我的感觉是与访问元素的时间有关。所以我希望有一种更好的方法来快速处理表格。谢谢。
for j in 1..days_to_check[i]
check_avail = driver.find_element(id: "avail#{j}")
check_availclass = check_avail.attribute ("class")
if check_availclass == "status a" or check_availclass == "status a slct"
#process if
end
答案 0 :(得分:0)
根据您的评论,我建议您使用以下xpath
。我发现使用更好xpath
比通过html
表
//td[(@class='status a') or (@class='status A')]
此xpath
会找到包含status a
或status A