js操作滚动条
一 滚动的目标
为了让自己要操作的元素,滚动到可视区域当中目前,很多网页是可以自己滚动到可视区域的。当网页无法滚动到可视区域或界面中存在小的滚动条,需要借助js语句进行滚动操作。
二 自动化中如何操作滚动条
1.在selenium中提供了execute_script()方法去执行js语句来实现滚动操作
2.滚动的步骤是:
(1)通过selenium找到我们需要的元素element
(2)通过执行js语句,将元素滚动到可见区域
3.基本语法:driver.execute_script("arguments[0].scrollIntoView();",element)
4.语法参数说明:
(1)element是通过selenium定位到元素
(2)在js语句中不能直接接收外部传来的参数,需要通过arguments进行接收在传递,argements是一个列表,可以接收多个外部参数,使用时通过下标取值进行传递,例如0代表第一个参数
三 滚动到可视区域的语法
基本语法:element.scrollIntoView();
1、移动到元素element对象的“底端”与当前窗口的“底部”对齐:
driver.execute_script("arguments[0].scrollIntoView(false);",element)
2、移动到元素element对象的“顶端”与当前窗口的“顶部”对齐 :
driver.execute_script("arguments[0].scrollIntoView();",element)
3、移动到页面底部:
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
4、移动到页面顶部:
driver.execute_script("window.scrollTo(document.body.scrollHeight,
0)")
四 举个栗子
在百度中搜索张韶涵微博
操作代码如下:
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver =webdriver.Chrome()
driver.get("http://www.baidu.com")
# 在百度的输入框中搜索张韶涵,使用键盘中的enter按钮
driver.find_element_by_id('kw').send_keys("张韶涵",Keys.ENTER)
# 通过XPATH定位方法,定位到张韶涵的微博元素
loc =(By.XPATH,'//a[text()="的微博_微博"]')
# 等待元素,直到元素可见
WebDriverWait(driver,20).until(EC.visibility_of_element_located(loc))
ele =driver.find_element(*loc)
# 通过js语句来操作滚动,false滚动到底部位置
driver.execute_script("arguments[0].scrollIntoView(false);",ele)
time.sleep(2)
ele.click()
driver.quit()