首页 > 解决方案 > 如何在 python 脚本中使用 selenium 向下滚动?

问题描述

我需要在对话框中向下滚动以查找更多评论,如下所示:

https://www.google.com/search?q=parque+ibirapuera&sxsrf=ALeKk02LtOuOMcY370--DnAM74bYzZiQyA%3A1627773313999&ei=gdkFYda0PNSc5OUP0MKCoA0&gs_ssp=eJzj4tTP1TewNI8vNDNgtFI1qLA0SU41tUwzNDCzTDE0TDG0MqhITrI0NjM0sExMswTKmRh6CRYkFhWWpipkJmUWJRaUphYlAgCKlhRj&oq=parque+ib&gs_lcp=Cgdnd3Mtd2l6EAMYADIRCC4QgAQQsQMQxwEQrwEQkwIyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyCwguEIAEEMcBEK8BMg4ILhCABBCxAxDHARCvATIFCAAQgAQ6BggjECcQEzoECCMQJzoECC4QQzoLCAAQgAQQsQMQgwE6CwguEIAEELEDEIMBOgQIABBDOggIABCABBCxAzoHCAAQsQMQQzoFCC4QgAQ6CAguEIAEELEDOg4ILhCxAxCDARDHARCvAToFCAAQsQNKBAhBGABQpSJYyCpgpTNoAHACeACAAboBiAGQDJIBBDAuMTCYAQCgAQHAAQE&sclient=gws-wiz#lrd=0x94ce59f1069d11d1:0xcb936109af9ce541,1,, ,

我正在使用硒来做到这一点:

    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)"}

标签: pythonselenium

解决方案


那个网站处理起来确实很麻烦。但是,您可以通过以下方式完成此操作。

  1. 导入selenium强大的Action Chains模块
from selenium.webdriver.common.action_chains import ActionChains
  1. 找到合适的元素(你也可以使用另一个元素)
el = driver.find_element_by_css_selector('#reviewSort > div:nth-child(1) > div.gws-localreviews__general-reviews-block > div:nth-child(1)')
  1. 同时对元素执行move,click_and_holdsend_keys操作
actions = ActionChains(driver)
actions.move_to_element(el).click_and_hold().send_keys(Keys.END).perform()

推荐阅读