【发布时间】:2019-04-21 19:12:09
【问题描述】:
我正在尝试使用 selinium 来计算表中的行数。我目前的实施是
table = self.driver.find_element_by_xpath('//*[@id="id"]')
print(len(table.find_elements_by_tag_name('tr')))
在下表中
<table class="grid" id="id">
<tbody>
<tr class="header-row"> </tr>
<tr>
<td class="tdclass"> </td>
<td> </td>
<td> </td>
</tr>
<tr class="alt">
<td class="tdclass"> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td class="tdclass"> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
直接访问 tbody [如果有帮助] 是
/html/body/form/div[4]/div[2]/div[3]/div/div/div/div[2]/div/table/tbody
运行此代码时我的输出如下
>>> print(len(table.find_elements_by_tag_name('tr')))
28
我的预期输出是
>>> print(len(table.find_elements_by_tag_name('tr')))
4
现在,我觉得奇怪的是,print(len(table.find_elements_by_tag_name('tr'))) 每次都返回 28。无论我添加还是删除表格行,都会返回 28。
我认为我只是很傻,实际上解决方案就在我面前,但我只是看不到它。
【问题讨论】:
-
Main_ctl00_gridList是正确的表的id还是id?<table class="grid" id="id">或<table class="grid" id="Main_ctl00_gridList">? -
抱歉,我为 Stackoverflow 进行了编辑,但忘记更改 ID。已编辑的帖子。
-
尝试
print(len(self.driver.find_elements_by_id('id')))检查是否有更多具有相同@id的表 - 您可能会处理错误(隐藏)的 28 行表... -
刚刚运行你的建议,它返回 1。相当混乱
-
如果您不介意发布完整的 html 或 url。
标签: python-3.x selenium selenium-webdriver geckodriver