如何通过 Selenium 和 Python 在我的页面上向下滚动?

Posted

技术标签:

【中文标题】如何通过 Selenium 和 Python 在我的页面上向下滚动?【英文标题】:How to scroll down on my page through Selenium and Python? 【发布时间】:2019-05-03 10:11:43 【问题描述】:

试图向下滚动到页面底部 https://silpo.ua/offers/?categoryId=13 但是没有结果(没有动作)

我的代码:

import bs4
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

URL = "https://silpo.ua/offers/?categoryId=13"
driver = webdriver.Firefox()
driver.get(URL)

page = driver.find_element_by_tag_name("html")
page.send_keys(Keys.PAGE_DOWN)

html = driver.page_source

【问题讨论】:

How can I scroll a web page using selenium webdriver in python?的可能重复 这是因为 selenium 无法点击不在视口中的链接吗?我们不应该再这样做了。 【参考方案1】:

有几种方法可以向下滚动到页面底部。根据网址https://silpo.ua/offers/?categoryId=13copyright 消息位于页面底部。因此,您可以使用scrollIntoView() 方法滚动Viewport 内的copyright 消息,如下所示:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

URL = "https://silpo.ua/offers/?categoryId=13"
driver = webdriver.Firefox(executable_path=r'C:\WebDrivers\geckodriver.exe')
driver.get(URL)
copyright = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.copyrights")))
driver.execute_script("return arguments[0].scrollIntoView(true);", copyright)

【讨论】:

谢谢您,先生!如何使用选择器“product-list__item-image”始终跳转到所有元素?我可以跳到第一个,但不能跳到下一个。【参考方案2】:

您可以使用actions.move_to_element 移动到底部的copyright 类元素

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

url ="https://silpo.ua/offers/?categoryId=13"
driver = webdriver.Chrome()
driver.get(url)
element = driver.find_element_by_css_selector(".copyrights")
actions = ActionChains(driver)
actions.move_to_element(element).perform()

你可以改变这个,例如,假设你想去最后一个产品:

element = driver.find_elements_by_css_selector(".product-list__item-content")[-1]
actions = ActionChains(driver)
actions.move_to_element(element).perform()

【讨论】:

以上是关于如何通过 Selenium 和 Python 在我的页面上向下滚动?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Python 使用 GeckoDriver 和 Firefox 使 Selenium 脚本无法检测?

如何根据提供的HTML通过Selenium和Python搜索节点?

ElementNotVisibleException:消息:尝试通过 Selenium 和 Python 单击按钮时出现元素不可交互错误

NoSuchElementException:消息:尝试通过 Selenium 和 Python 单击 VISA 按钮时无法找到元素

如何通过Selenium和Python按照网站点击文本为LOGIN的元素?

如何在 selenium webdriver(python)中禁用 chrome 的“保存密码”弹出窗口