首页 > 解决方案 > Python Selenium_find_elements:列表索引超出范围错误

问题描述

我想从Play商店获得一些评论。但是,当我向下滚动页面时,我需要按下“更多评论”按钮才能获得更多。我使用了 find_elements_by_class_name 和 click(),但它弹出列表索引超出范围错误。因此,我试图打印出来并显示“[]”。我不知道解决它。

# open all reviews 
# urls = ["https://play.google.com/store/apps/details? 
          id=com.fourdesire.fortunecity"]    

url = url+'&showAllReviews=true'
driver.get(url)
time.sleep(5)  # wait dom ready 
for i in range(1, 10):
    # scroll to load other reviews
    print(i)
    driver.execute_script(
        'window.scrollTo(0, document.body.scrollHeight);') 
    time.sleep(1)
page = driver.page_source  
soup_expatistan = BeautifulSoup(page, "html.parser")
element2 = driver.find_elements_by_class_name("RveJvd snByac")[0].click()

标签: pythonselenium

解决方案


如下更新最后一行。

element2 = driver.find_elements_by_class_name("RveJvd.snByac")[0].click()

那是因为find_elements_by_class_name它将被 selenium 转换为 css.并将被添加到此处提供的定位器中。由于您的值有多个类,因此您必须将空格替换为.

或者,您可以使用以下内容。

driver.find_element_by_xpath("//*[@class='RveJvd snByac']").click()

你可以使用find_element_by相当find_elements


推荐阅读