python - 如何在 python 脚本中使用 selenium 向下滚动?
问题描述
我需要在对话框中向下滚动以查找更多评论,如下所示:
我正在使用硒来做到这一点:
scrollable_div = driver.find_element_by_css_selector(
'body.srp.wf-b.vsc-initialized:nth-child(2) div.ynlwjd.VDgVie.oLLmo.u98ib:nth-child(2) div.AU64fe.zsYMMe.TUOsUe div.VFlF2c.review-dialog div.Zd3Ymd.review-dialog-body div.lcorif.fp-w div.review-dialog-list > div.loris:nth-child(6)'
)
driver.execute_script(
'arguments[0].scrollTop = arguments[0].scrollHeight',
scrollable_div
)
出现此错误:selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“css selector”,“selector”:“body.srp.wf-b.vsc-initialized: nth-child(2) div.ynlwjd.VDgVie.oLLmo.u98ib:nth-child(2) div.AU64fe.zsYMMe.TUOsUe div.VFlF2c.review-dialog div.Zd3Ymd.review-dialog-body div.lcorif.fp -w div.review-dialog-list > div.loris:nth-child(6)"}
解决方案
那个网站处理起来确实很麻烦。但是,您可以通过以下方式完成此操作。
- 导入selenium强大的Action Chains模块
from selenium.webdriver.common.action_chains import ActionChains
- 找到合适的元素(你也可以使用另一个元素)
el = driver.find_element_by_css_selector('#reviewSort > div:nth-child(1) > div.gws-localreviews__general-reviews-block > div:nth-child(1)')
- 同时对元素执行
move
,click_and_hold
和send_keys
操作
actions = ActionChains(driver)
actions.move_to_element(el).click_and_hold().send_keys(Keys.END).perform()
推荐阅读
- php - 如何将json文件中的值与PHP匹配
- c - 函数内的互斥 Contiki
- python - 如何使我的 2D 高斯适合我的图像
- python - 如何用字符串标签和特征训练树分类器?
- apache-spark - 有哪些工具/框架可用于 Spark 作业监控和警报?
- xslt - 如何替换xml属性
- xamarin.forms - Xamarin 形式:Stacklayout GestureRecognizers 在 UWP 中不起作用(在 IOS 和 Android 中工作正常)
- javascript - 如何通过单击 Javascript 中的图像来更改内容?
- python - 在运行时石墨烯上创建动态模式
- python - 深度学习 YOLO 对象检测:如何迭代图像上定义的网格中的单元格