首页 > 解决方案 > 问题运行 driver.find_elements_by_class_name

问题描述

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

在第一个块中,我得到每个事件的 PICK 索引的字典。 在此处输入图像描述

在第一个块中,我得到了每场比赛的事件链接列表。 在此处输入图像描述

在第三个块中,我转到事件链接并尝试单击“加号”。 https://www.oddsportal.com/soccer/brazil/serie-b/criciuma-brasil-de-pelotas-61ZV2RDN/#ah;3;-1.00;0

在此处输入图像描述

对于此操作,我尝试获取“加号”列表并尝试选择,但我得到空列表。

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

标签: seleniumgoogle-chromewebdriverselenium-chromedriver

解决方案


ico-add如果不仅在类名中,则此代码可能不起作用。您可以尝试对类名运行contains查询。

我导航到您的页面并成功运行了以下代码,检索了 2 个元素plus_icons_list

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

在此处输入图像描述


推荐阅读