为了方(tou)便(lan)公司UI在站酷网查找素材,写了一个小脚本。
实现功能:
- 控制滚动条从上到下,方便浏览每一页内容
- 自动翻页
有时,我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js中识别滚动条位置的代码来进行操作。
<body onload= "document.body.scrollTop=0 ">
<body onload= "document.body.scrollTop=100000 ">
如果有内嵌窗口,通过firebug工具可以定位到内嵌入窗口的元素id,可以通过下面的代码实现。
js="var q=document.getElementById('id').scrollTop=10000"
driver.execute_script(js)
注:没有进行验证,但是看起来应该没有问题。
下面是针对站酷网UI分类实现的简陋的自动化脚本,仅供参考:
#!/usr/bin/env python
# encoding : utf-8
# @author : XZR
# @time : 2017.12.04 10:35
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 打开浏览器
browser = webdriver.Chrome()
# 滚动滚动条
def action():
for i in range(0,2000,500):
# 调用js方法,i用来控制滚动条滚动大小
js = 'var q=document.documentElement.scrollTop=%d' % i
browser.execute_script(js)
time.sleep(2)
# 翻页
def next():
# 确保下一页标签被加载出来,感觉有点鸡肋
wait = WebDriverWait(browser, 10)
laypage = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#laypage_0 > a.laypage_next')))
laypage.click()
def main():
# 访问页面
browser.get('http://www.zcool.com.cn/discover/17!0!0!0!0!!!!2!-1!1')
# 将浏览器最大化显示
browser.maximize_window()
time.sleep(2)
for i in range(100):
action()
next()
if __name__ == '__main__':
main()