2013-02-06 57 views
1

我有一个网站,当我向下滚动时会生成更多产品。与其他网站不同,萤火虫控制台中没有任何发现。所以,我使用硒来模拟浏览器。我已经使它工作,但与Firefox驱动程序。但是,因为我托管在命令行上运行的Web服务器,所以我使用的是HTMLUNIT。有人能告诉我如何使用HTMLUNIT滚动页面吗?这里是直到现在的代码:Selenium HTMLUNIT Python滚动页面

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) 

谢谢。

回答

7

您可以使用JavaScript进行滚动。从docs

您可以使用execute_script方法在加载的页面上执行javascript。 因此,您可以调用JavaScript API滚动到页面的底部或任何其他位置。

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

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

该窗口对象具有scrollTo方法滚动到打开的窗口的任何位置。 scrollHeight是所有元素的公共属性。 document.body.scrollHeight将给出整个页面的高度 。

+0

你可以在div上做一个溢出设置的滚动条而不是浏览器吗? – Nickel

+0

是的。你将不得不修改javascript。 – That1Guy

+0

这里你去:) http://stackoverflow.com/a/270628/2401628 – Loknar