Строки чтения таблицы Selenium останавливаются на 100 строках, почему? - PullRequest
0 голосов
/ 27 мая 2020

Я перебираю таблицы в системе ERP нашей компании, поэтому ссылки на публикацию c, которой я могу поделиться, отсутствует. В этой системе ERP есть страница документации API, я просматриваю таблицы на этих страницах, чтобы получить определения API для входов, выходов, типов данных и т. Д. c.

Проблема в том, что я могу только читать первые 100 строк данных в этих таблицах, когда многие из этих таблиц имеют 200 или более строк.

Вот функция, которую я использую для получения всех строк таблицы из таблиц:

def get_row_data(table):
    master_list = []
    for row in table.find_elements_by_xpath(".//tr"):
        master_list.append([td.text for td in row.find_elements_by_xpath(".//td")])
    return master_list

И вот код, который я использую для чтения таблицы, которая вызывает у меня проблемы:

            print('Printing output data from rows...')
            for data in get_row_data(table):
                Name = data[0]
                Data_Type = data[1]
                Output_Type = data[2]
                Nullable = data[3]
                if Nullable == '':
                    Nullable = 1
                else:
                    Nullable = 0
                print('Name: {} \n\t Data_Type: {} \n\t Output_Type: {} \n\t Nullable: {}'.format(Name, Data_Type, Output_Type, Nullable))

Код работает до строки 100, когда я получаю следующую ошибку:

 Name = data[0]
IndexError: list index out of range

И я не могу понять, почему это происходит.

Последняя строка таблицы, которую нужно распечатать, - это строка 99 (на самом деле 100 b / c индексация на основе 0), HTML выглядит так:

<tr data-index="99" class="plex-grid-row plex-grid-row-even"><td data-col-index="0">Ignore_Transit_On_Weekends</td><td data-col-index="1">bit</td><td data-col-index="2">Column</td><td data-col-index="3" class="plex-boolean"><i class="plex-icon-checkmark3"></i></td></tr>

И строка 100, которая терпит неудачу, отформатирована точно так же, как строка 99, но выдача ошибки выглядит так:

<tr data-index="100" class="plex-grid-row plex-grid-row-odd"><td data-col-index="0">Inco_Terms_Key</td><td data-col-index="1">int</td><td data-col-index="2">Column</td><td data-col-index="3" class="plex-boolean"><i class="plex-icon-checkmark3"></i></td></tr>

Я также пытался просто распечатать список data в l oop, чтобы увидеть, что происходит, строка 100 возвращается как пустой список и l oop заканчивается после строки 100, несмотря на то, что в этой таблице 213 строк.

Мое лучшее предположение состоит в том, что по соображениям производительности только первые 100 строк отображаются / читаются на странице, пока не сработает какой-то триггер бывает. Я попытался использовать time.sleep (5), чтобы увидеть, решит ли это проблему, но это не так.

Спасибо за то, что помогли мне узнать / понять, почему это происходит.

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