Selenium 返回错误数量的元素

Selenium returning the incorrect number of elements

我正在尝试使用 selinium 来计算 table 中的行数。我目前的实现是

table = self.driver.find_element_by_xpath('//*[@id="id"]')

print(len(table.find_elements_by_tag_name('tr')))

以下table

<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'))) returns 28。无论我添加还是删除 table 行,总是会返回 28。

我想我只是很傻,事实上解决方案就在我面前,但我只是没有看到。

由于我正在处理的网页使用 AJAX,我需要调用 time.sleep(x)。

见下文

    >>> self.driver.find_element_by_name(x).send_keys(xkeys)
    >>> self.driver.find_element_by_name(y).click()
    >>> time.sleep(5)
    >>> table = self.driver.find_element_by_xpath('//*[@id="id"]')
    >>> print(len(table.find_elements_by_tag_name('tr')))

returns 4.