前言
有些页面元素一开始并不可见,需要滚动条下拉后才能加载出来,可以使用浏览器的滚动条下拉后进行调试
方法一
如何操作浏览器滚动条呢?下面这个百度的例子,让你一目了然。
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait import time driver=webdriver.Chrome() driver.get("http://www.baidu.com") driver.implicitly_wait(5) driver.maximize_window() driver.find_element_by_id("kw").send_keys("特朗普") driver.find_element_by_id("su").click() time.sleep(2) #,设置为10000表示将滚动条拖动到底部,也可以设置其他数值,根据自己想要定位元素设置 #js="var q=document.documentElement.scrollTop=10000" #写法一 #js="document.documentElement.scrollTop=10000" #写法二 js="var action=document.documentElement.scrollTop=100000" #写法三 driver.execute_script(js) #执行js脚本 time.sleep(3) #设置为0表示将滚动条拖动到顶部 js1="var action=document.documentElement.scrollTop=0" driver.execute_script(js1) #执行js脚本 time.sleep(3) driver.quit()
方法二
scrollTo(x, y)
第一个参数 x 是横向距离,第二个参数 y 是纵向距离。
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait import time driver=webdriver.Chrome() driver.get("http://www.baidu.com") driver.implicitly_wait(5) driver.maximize_window() driver.find_element_by_id("kw").send_keys("特朗普") driver.find_element_by_id("su").click() time.sleep(3) #第一个参数 x 是横向距离,第二个参数 y 是纵向距离 js="window.scrollBy(0, 10000)" driver.execute_script(js) #执行js脚本 time.sleep(3) driver.quit()
这种方法可以对横向滚动条进行控制,把y设置为0,x设置为想要的距离就可以实现
细心的同学已经发现了, 我上面写的scrollTo()、但是代码中用的是scrollBy()。
那就再解释一下,知识点:scrollTo()是绝对滚动,scrollBy()是相对滚动,比如:
scrollBy(0,10000),会在当前位置上,移动到(0,y+10000)
scrollTo(0,500),会在原始的位置上(0,),移动到(0,500)的位置上
scrollTo(0,0),会回到原始的位置上(0,0)