#python #raspberry-pi3 #index-error
#python #raspberry-pi3 #ошибка индекса
Вопрос:
Я пишу программу, которая отправляет мне определенный номер с веб-сайта на мой телефон. Когда я запускаю файл Python на своем ноутбуке, он работает без сбоев, но когда я запускаю его на своем Raspberry Pi, я получаю эту ошибку
Pillen_ant = self.driver.find_elements_by_class_name("bg_periode.vandaag")[1].text
IndexError: list index out of range
Но это не так, я использую ту же строку кода на своем ноутбуке, и тогда все работает нормально.
Комментарии:
1. Просто взглянув на фрагмент кода, я чувствую, что вы пытаетесь выполнить веб-очистку. Итак, когда вы используете свой Raspberry Pi, веб-сайт, похоже, не создает элемент с именем класса
bg_periode.vandaag
, отсюда и ошибка индекса. На вашем месте я бы сначала выяснил, почему отображается этот элемент на веб-сайте.
Ответ №1:
Вызов
self.driver.find_elements_by_class_name("bg_periode.vandaag")
не возвращает список с двумя элементами при запуске его на Pi. Когда вы пытаетесь выполнить индексацию в нем по элементу [1]
, происходит сбой, потому что в списке не так много элементов. Попробуйте добавить точку останова в свой код прямо перед этой строкой, а затем проверьте ее вручную, чтобы увидеть, что возвращается.
Комментарии:
1. Я только что попробовал это, но это не помогает. Когда я добавляю точку останова и ищу элемент, я должен ввести «bg_periode vandaag» В моем коде, я сказал это как «bg_periode.vandaag», иначе элемент вообще не будет найден. Но это правильное имя для поиска элемента. Когда я ищу имя с помощью inspect, я нахожу 2 элемента.
2. для уточнения добавьте точку останова, затем используйте команды «далее» или «шаг» для продвижения программы. Кроме того, сначала удалите
[1]
и все, что после него. Вы можете сделать это отдельно, если хотите, но вам нужно получить результатfind_elements_by_class_name("bg_periode.vandaag")
, который сам по себе хранится в переменной, чтобы вы могли просмотреть его, прежде чем пытаться проиндексировать в нем.