python - 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()
解决方案
如下更新最后一行。
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
。
推荐阅读
- redirect - 域重定向编码:Cgi perl / HTML
- html - 如何将最大长度设置为 TextareaAutosize
- docker - 如何使用 bind9 docker 容器为本地(家庭网络)上的 2 个 apache2 Web 服务器配置 DNS 负载平衡(循环)?
- javascript - 你好很好,当我尝试执行代码时我得到了这个
- javascript - 根据使用 javascript 的单元格文本更改表格的行颜色
- javascript - 在 Vue.js 中每列需要一个文本过滤器
- google-sheets - 根据 Google 表格中不断变化的标准重新编号列表
- javascript - 如何在按钮单击 P(段落)时将第一个 textarea 内容移动到第二个 textarea?
- android - 使用 Room 数据库实现搜索时的分页库 3 问题
- firebase - 用于反应原生项目的 Firebase web vs ios 和 android 版本