Selenium HTMLUNIT Python 滚动页面

1 投票
1 回答
4096 浏览
提问于 2025-04-17 14:58

我有一个网站,当我向下滚动时会生成更多的产品。和其他网站不同的是,在火狐的调试工具里什么都找不到。所以,我用selenium来模拟浏览器。我已经让它在火狐驱动下工作了。但是,因为我在命令行上运行我的网页服务器,所以我使用的是HTMLUNIT。有人能告诉我怎么用HTMLUNIT来滚动页面吗?这是我到目前为止的代码:

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

browser = webdriver.Remote("http://127.0.0.1:4444/wd/hub",desired_capabilities=webdriver.DesiredCapabilities.HTMLUNITWITHJS)
browser.get("http://www.somewebsite.com/")
x = browser.find_elements_by_xpath("//div[@id='containeriso3']/div/a[1]")
hrefs = [i.get_attribute('href') for i in x]
print len(hrefs)
time.sleep(2)
browser.execute_script("scroll(0, 2500);")
time.sleep(2)
x = browser.find_elements_by_xpath("//div[@id='containeriso3']/div/a[1]")
hrefs = [i.get_attribute('href') for i in x]
print len(hrefs)

谢谢。

1 个回答

7

你可以用JavaScript来实现页面滚动。根据文档的说明:

你可以使用execute_script方法在加载的页面上执行JavaScript代码。这样,你就可以调用JavaScript的功能,滚动到页面的底部或者其他任何位置。

下面是一个滚动到页面底部的例子:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

在DOM中,window对象有一个scrollTo方法,可以让你滚动到打开窗口的任何位置。scrollHeight是所有元素的一个常用属性。document.body.scrollHeight会返回整个页面主体的高度。

撰写回答