[selenium]实现鼠标滚轮事件

在我们抓取网站内容的时候,有时候会遇到一些js代码来动态获取的内容。今天发现了一种比较好用的方法。在这里记录一下。

第一种:

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

在w3c中是这样定义的
scrollTop() 方法返回或设置匹配元素的滚动条的垂直位置。
scroll top offset 指的是滚动条相对于其顶部的偏移。
如果该方法未设置参数,则返回以像素计的相对滚动条顶部的偏移。
代码:
from selenium import webdriver
import time

web = webdriver.Chrome()

web.get("http://www.jd.com")
web.find_element_by_id('key').send_keys('背包')
web.find_element_by_class_name('button').click()
time.sleep(3)
# 向下偏移了10000个像素,到达底部。
js="var q=document.documentElement.scrollTop=10000"
web.execute_script(js)
time.sleep(5)
#本来是只有30个元素,设置时间等待js动态加载,结果为60个元素。
hah = web.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li')
print(len(hah))
web.close()

第二种:

target = driver.find_element_by_id("id_keypair")
#拖动到可见的元素去
driver.execute_script("arguments[0].scrollIntoView();", target) 

代码:

from selenium import webdriver
import time

web = webdriver.Chrome()

web.get("http://www.jd.com")
web.find_element_by_id('key').send_keys('背包')
web.find_element_by_class_name('button').click()
time.sleep(3)

target = web.find_element_by_id("service-2017")
web.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去
time.sleep(15)
hah = web.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li')
print(len(hah))
web.close()

快去试试吧!!

你可能感兴趣的:([selenium]实现鼠标滚轮事件)