Python Selenium单击表中包含列中正确数据的特定行

时间:2015-07-30 20:33:19

标签: python selenium

所以我有一个表可以有0到x行,总是有7列。

如下所示。

    Type   Price   Store  Weight  For-sale  Stock  Discount
x
x
x
x
x

这是HTML的外观:



<table id="my_table" class="datatable" cellspacing="0" cellpadding="0" border="0" style="border-width:0px;border-collapse:collapse;">
  <tbody>
    <tr>
      <tr class="row" style="cursor:pointer;" onclick="javascript:__doPostBack('my$table','Select$0')">
        <td>
          <td class="first">Meat</td>
          <td>75</td>
          <td>Adams grocery</td>
          <td align="center">1kg</td>
          <td>Yes</td>
          <td>Full</td>
          <td>Yes</td>
          <td>
      </tr>
      <tr class="row" style="cursor:pointer;" onclick="javascript:__doPostBack('my$table','Select$1')">
        <td>
          <td class="first">Vegetable</td>
          <td>25</td>
          <td>Adams grocery</td>
          <td align="center">0.5kg</td>
          <td>No</td>
          <td>Empty</td>
          <td>No</td>
          <td>
      </tr>
  </tbody>
</table>
</div>
&#13;
&#13;
&#13;

我想要做的是点击每一行,如果存在包含文字&#34; Adams杂货&#34; (在第3列中),因此它们在单独的选项卡中打开,然后立即向所有选项卡发出新指令。例如:点击按钮&#34; welcome&#34;在所有标签上。 我有一种感觉,对于我来说,作为一个初学者,上面的内容可能有点过于复杂......所以我想也许只需点击其中一行即可。

一整天都在考虑这件事,感谢所有的帮助!

1 个答案:

答案 0 :(得分:0)

你需要这样的东西:

测试了这个html: http://jsfiddle.net/zvhrm6tf/

from selenium.webdriver.support.wait import WebDriverWait    

td_list = WebDriverWait(driver, 10).until(lambda driver: driver.find_elements_by_css_selector("#my_table tr td"))
for td in td_list:
    if(td.text == "Adams grocery"):
        td.click()

如果您需要定位表格行,您可以执行以下操作:

tr = td.find_element_by_xpath("..")