Селен возвращает неправильное количество элементов - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь использовать селиниум для подсчета количества строк в таблице.Моя текущая импликация -

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>

Прямой доступ к телу [Если это поможет]:

/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 голосов
/ 19 ноября 2018

Поскольку веб-страница, с которой я имею дело, использует 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...