StaleElementReferenceException при переборе кнопок / плиток на странице - PullRequest
0 голосов
/ 03 июля 2019

Я занимаюсь веб-обработкой https://www.bell.ca/Mobility/Smartphones_and_mobile_internet_devices, и когда выбирают телефон и переходят к выбору плана в качестве «нового клиента», часто появляются две или три кнопки: «премиум ультра», «премиум плюс» и т. Д.Я получил селектор css для этих плиток, но когда я перехожу к третьей итерации, я получаю «StaleElementReferenceException».

Я уже установил try / исключения, однако я бы предпочел пройти через все плитки какследующая часть моего кода включает в себя итерацию «плана и параметров данных» ниже.

        plantypes = driver.find_elements_by_css_selector('#prod-term-radio .hot-tile')

        print(len(plantypes)) #number of plan types.

        for plan in plantypes:
            try:

                plan.click()
                time.sleep(3)


            except exceptions.StaleElementReferenceException as e:
                pass

Я хотел бы иметь возможность выполнять итерацию по всем плиткам вместо того, чтобы преждевременно вырезать после второй.

1 Ответ

1 голос
/ 03 июля 2019

Вы должны обновить свой список элементов после щелчка, потому что DOM обновился, из-за чего элементы устарели, попробуйте это;

plantypes = driver.find_elements_by_css_selector('#prod-term-radio .hot-tile')        
print(len(plantypes)) #number of plan types.

for count, plan in enumerate(plantypes):
    try:
        ptypes = driver.find_elements_by_css_selector('#prod-term-radio .hot-tile') 
        ptypes[count].click()
        time.sleep(3)

    except exceptions.StaleElementReferenceException as e:
        pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...