亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python Selenium_find_elements:列表索引超出范圍錯誤

Python Selenium_find_elements:列表索引超出范圍錯誤

慕田峪9158850 2022-10-11 10:28:02
我想從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()
查看完整描述

2 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

import time

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

from selenium.common.exceptions import TimeoutException

class FindByXpathCss():

        driver = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")

        driver.maximize_window()

        baseUrl = "https://play.google.com/store/apps/details?id=com.delta.mobile.android&hl=en_US&showAllReviews=true"

        driver.get(baseUrl)


        scrolls = 3

        while True:

            scrolls -= 1

            driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")

            time.sleep(3)

            if scrolls < 0:

                break


        buttonClick = WebDriverWait(driver, 30).until(

            EC.visibility_of_all_elements_located((By.XPATH, "//button[contains(@class,'')][contains(text(),'Full Review')]")))

        for element in buttonClick:

            driver.execute_script("arguments[0].click();", element)


        reviewText = WebDriverWait(driver, 30).until(

            EC.presence_of_all_elements_located((By.XPATH, "//*[@class='UD7Dzf']")))



        for textreview in reviewText:

            print textreview.text


        reviewText = WebDriverWait(driver, 30).until(

            EC.presence_of_all_elements_located((By.XPATH, "//*[@class='UD7Dzf']")))



        for textreview in reviewText:

            print textreview.text

第一個例子

http://img1.sycdn.imooc.com//6344d4d2000108ed13430560.jpg

第二個例子

http://img1.sycdn.imooc.com//6344d4e100019a3c12990570.jpg


查看完整回答
反對 回復 2022-10-11
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

如下更新最后一行。

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。


查看完整回答
反對 回復 2022-10-11
  • 2 回答
  • 0 關注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號