【问题标题】:Selenium returning the incorrect number of elementsSelenium 返回错误数量的元素
【发布时间】: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&lt;table class="grid" id="id"&gt;&lt;table class="grid" id="Main_ctl00_gridList"&gt;?
  • 抱歉,我为 Stackoverflow 进行了编辑,但忘记更改 ID。已编辑的帖子。
  • 尝试print(len(self.driver.find_elements_by_id('id'))) 检查是否有更多具有相同@id 的表 - 您可能会处理错误(隐藏)的 28 行表...
  • 刚刚运行你的建议,它返回 1。相当混乱
  • 如果您不介意发布完整的 html 或 url。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多