[英]Python selenium webdriver: list index out of range maximum 5 elements
[英]Python Selenium_find_elements : list index out of range Error
我想從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()
如下更新最后一行。
element2 = driver.find_elements_by_class_name("RveJvd.snByac")[0].click()
這是因為find_elements_by_class_name
會被 selenium 和.
將被添加到此處提供的定位器中。 由於您的值有多個類,因此您必須將空格替換為.
或者,您可以使用以下內容。
driver.find_element_by_xpath("//*[@class='RveJvd snByac']").click()
您可以使用find_element_by
而不是find_elements
。
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
第一個例子
第二個例子
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.