如何更快地搜索表格?

时间:2015-03-22 21:58:55

标签: ruby selenium-webdriver

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

根据您的评论,我建议您使用以下xpath。我发现使用更好xpath比通过html

循环更容易和可行
//td[(@class='status a') or (@class='status A')]

xpath会找到包含status astatus A

的课程