硒返回的元素数量不正确

时间:2018-11-19 12:14:02

标签: python-3.x selenium selenium-webdriver geckodriver

我正在尝试使用硒精计算表中的行数。我目前的意思是

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。

我认为我只是很傻,实际上解决方案就在我眼前,但我只是看不到。

1 个答案:

答案 0 :(得分:0)

由于我正在处理的网页使用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')))

返回4。