Вы используете find_elements_by_xpath
, этот метод всегда возвращает массив. Если элементы найдены, он вернет массив элементов, если нет, он вернет вам пустой массив.
Так что, если элемент не отображается на странице, find_elements_by_xpath
будет искать, ничего не найти, и вы получите player = []
.
Затем, когда вы сделаете text = player[0].text
, он попытается найти элемент с индексом 0 в пустом массиве. Это приведет к IndexError: list index out of range
.
Как это исправить?
Простое решение - добавить короткое (например, 0.5 se c) ожидание до search:
time.sleep(0.5)
player = driver.find_elements_by_xpath(xpath)
Это решение будет работать, но оно замедлит ваш скрипт, потому что 0.5 se c будет добавлено для каждой итерации вашего l oop. Более элегантным и предпочтительным решением было бы добавить неявное или явное ожидание, о котором вы можете прочитать в официальном Python Selenium Waits do c.
Удачи, я надеюсь, это помогло.