Вам необходимо провести рефакторинг вашего кода. Вероятно, ваш шаблон кода выглядит примерно так (конечно, с разными идентификаторами, но поскольку вы не указали свой код или исходный код страницы, это лучшее, что я могу предложить):
container = driver.find_elements_by_xpath('//*[@class="window_of_elements"]')
elements = container.find_elements_by_xpath('//*[@class="my_selected_class"]')
for e in elements:
minus_part = e.find_element_by_xpath('//span[@class="remove"]')
minus_part.click()
Когда вы нажимаете minus_part
, контейнер вашего elements
, вероятно, перерисовывается / перезагружается, и все ваши ранее найденные элементы поворачиваются stale
.
Чтобы обойти это, вы должны попробовать другой подход:
container = driver.find_elements_by_xpath('//*[@class="window_of_elements"]')
to_be_removed_count = len(container.find_elements_by_xpath('//*[@class="my_selected_class"]'))
for _ in range(to_be_removed_count):
target_element = container.find_element_by_xpath('//*[@class="window_of_elements"]//*[@class="my_selected_class"]')
minus_part = target_element.find_element_by_xpath('//span[@class="remove"]')
minus_part.click()
Так что в основном вы должны:
- выяснить, сколько элементов вы должны найти, чтобы щелкнуть
- в поиске для l oop и щелкнуть их по одному