В вашем коде 3 проблемы.
find_element_by_css_selector
возвращает один элемент, а не список. Таким образом, вы не сможете перебирать элементы. Чтобы выбрать несколько элементов, используйте форму множественного числа, например: find_elements_by_css_selector
- предоставленный селектор css недействителен
- , похоже, вы предполагаете, что получите веб-элементы, отсортированные по z -index, что не так
Я рекомендую изучать Xpath, он лучше и полезнее селекторов css (вы можете использовать его позже, когда у вас будет возможность проанализировать XML). Но даже Xpath не будет сортировать элементы по значениям атрибутов, таким как z-index.
Что вы можете сделать, однако:
- выяснить, сколько элементов нужно щелкнуть
- в цикле итерации цикла
for
от 1 до желаемого максимума - внутри цикла
for
создает динамический c xpath через f-строку, чтобы найти ваш элемент: - div, который содержит число, которое вы хотите щелкнуть как текст
div[text()="{i}"]
- , и у рассматриваемого div есть диапазон, который имеет класс блока
span[@class="box"]
Таким образом, в основном elem = driver.find_element_by_xpath(f'//*[text()="{i}"]/span[@class="box"]')
должно быть ключом для вашей задачи.