Ошибка при запуске driver.find_elements_by_class_name - PullRequest
2 голосов
/ 08 октября 2019

https://www.oddsportal.com/profile/Keenz/my-predictions/next/

В первом блоке я получаю указание индексов PICK для каждого события. enter image description here

В первом блоке я получаю список ссылок на события для каждого матча. enter image description here

В третьем блоке я перехожу на ссылку события и пытаюсь нажать на «плюс». https://www.oddsportal.com/soccer/brazil/serie-b/criciuma-brasil-de-pelotas-61ZV2RDN/#ah;3;-1.00;0

enter image description here

Для этого действия я пытаюсь получить список «плюс» и пытаюсь выбрать, но я получаю пустой список.

def parse(driver, request):
    driver.get("https://www.oddsportal.com/profile/Keenz/my-predictions/next/")

    # Get indexes of PICK
    picks_dict = {}
    picks = driver.find_elements_by_class_name('pred-usertip')
    for pick_ind, pick in enumerate(picks):
        tds = pick.find_elements_by_tag_name('td')
        for ind, td in enumerate(tds):
            if td.text:
                picks_dict['pick'+str(pick_ind)] = ind

    #Get links to events
    odds = driver.find_elements_by_class_name('number2')
    odds_list = []
    for odd in odds:
        odds_list.append(odd.get_attribute('href'))

    #Pick a "plus"
    for ind in range(len(odds_list)):
        if ind != 0:
            driver.get(odds_list[ind])
            print(driver.find_elements_by_class_name('ico-add'))    #[]
            driver.find_elements_by_class_name('ico-add')[picks_dict['pick'+str(ind)]].click()  #IndexError

    return

1 Ответ

1 голос
/ 08 октября 2019

Этот код может не работать, если в имени класса больше, чем просто ico-add. Вместо этого вы можете попробовать выполнить запрос contains для имени класса.

Я перешел на вашу страницу и успешно выполнил следующий код, получив 2 элемента в plus_icons_list:

plus_icons_list = driver.find_elements_by_xpath("//*[contains(@class, 'ico-add')]")

enter image description here

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