Есть ли другой способ последовательно щелкнуть все веб-элементы в списке? - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь последовательно нажимать на веб-элементы на странице https://www.virginmobile.ca/en/phones/phone-details.html#! / Xsiphone / Grey / 64 / TR20 . На странице есть 4 или 5 «типов планов», таких как план Diamond plus, план Diamond, план goled и т. Д. c, на которые я пытаюсь нажать, чтобы загрузить планы ниже, однако кажется, что они застряли на План Diamond Plus и принесите свой собственный план телефона. Иногда он перебирает некоторые типы планов, но пропускает другие. Я использовал этот код в прошлом, однако он больше не ведет себя так, как мне бы хотелось. Я надеялся, что смогу нажать на каждый тип плана (по порядку) и подождать одну секунду (уже сделано), а затем перейти к следующему типу плана. Цепочки действий - это мои go, наряду с .click (), но, похоже, они больше не действуют.

Вот мой код:


        planTypeRawList = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.ng-scope.ng-isolate-scope .phonePriceInner')))

        for planTypeIndex, planType in enumerate(planTypeRawList):
            print("-----------------  " + planTypeNameList[planTypeIndex] + "  ------------------")

            ActionChains(driver).move_to_element(planType).click().perform()

            time.sleep(1)

'''

1 Ответ

1 голос
/ 10 января 2020

Вы можете использовать location_once_scrolled_into_view или scrollIntoView для прокрутки до элемента перед щелчком.

plan_levels = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'planlevels .phonePrice')))
for plan in plan_levels:
    plan.location_once_scrolled_into_view
    # driver.execute_script("arguments[0].scrollIntoView();", plan)
    plan.click()
    time.sleep(2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...