Вы получаете StaleElementReferenceException
, что означает, что элемент, на который вы пытаетесь щелкнуть, либо больше не присутствует на странице, либо его контекст каким-то образом изменился, и ваша ссылка в списке на этот конкретный элемент больше не действительна.
Вы можете исправить это, переместив список find
. После того, как вы позвоните x.click()
, все элементы в find
устареют, потому что вы даже больше не находитесь на этой странице. Когда вы нажимаете back
, элементы на странице отличаются от тех, которые были до того, как вы нажали.
def OpenProfileMember():
open('https://mbasic.facebook.com/browse/group/members/?id=1600319190185424')
# get number of elements to click on
find_length = len(driver.find_elements_by_class_name('bn'))
# declare a counter to track the loop and keep track of which element in the list to click
list_count = 0
# loop through elements and click the element at [list_count] index
while (list_count < find_length)
# get the elements
find = driver.find_elements_by_class_name('bn')
# click the current indexed element
find[list_count].click()
# go back
time.sleep(3)
driver.back()
Важно, чтобы каждая итерация цикла while
обновляла переменную find
, вызываяdriver.find_elements
. Если вы найдете элементы до входа в цикл, а затем выполните действия click()
и back()
, вы последовательно столкнетесь с исключением StaleElement
.
Я не уверен, что if x != find[0]:
должен проверятьза. В противном случае вы звоните continue
- этот цикл будет щелкать только первый элемент в списке из того, что я могу сказать. Это ваше намерение, или вы хотите нажать на все элементы?