【selenium学习 -12】selenium操作web页面滚动条

在平时的测试中,有可能需要定位的元素,不在当前的画面内,就会对滚动条产生一定的操作。对滚动条的操作,实际上也是selenuim对JS的一种操作,正因为selenuim可以对js进行操作,也就有了极大的操作空间

本文主要介绍两个方法:

scrollTo(x,y) 
x表示横向距离,y表示纵向距离
其中 x,y的距离,都是以(0,0)为起点的
对比scrollBy() 则是相对当前位置滚动的


scrollIntoView()
函数将被遮挡的元素滚动到可见的屏幕上 scrollIntoView(true)将元素滚动到屏幕中间 scrollIntoView(false)将元素滚动到屏幕底部

实验例子:打开百度,搜索selenuim,并拉动页面的滚动条。

from selenium import webdriver
import time

if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    driver.maximize_window()
    driver.find_element_by_id("kw").send_keys("selenium")
    driver.find_element_by_id("su").click()
    time.sleep(3)
    '''
     scrollTo(x,y) x表示横向距离,y表示纵向距离
     其中 x,y的距离,都是以(0,0)为起点的
     对比scrollBy() 则是相对当前位置滚动的
    '''

    # 将页面拉到最下方,添加等待时间方便在窗口看结果
    print("将页面拉到最下方")
    time.sleep(5)
    driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")


    # 将页面拉到最上方
    print("将页面拉到最上方")
    time.sleep(5)
    driver.execute_script("window.scrollTo(0,0);")
    time.sleep(5)
# 将页面向下拉取400像素 print("将页面向下拉取400像素") time.sleep(5) driver.execute_script("window.scrollTo(0,400);") ''' scrollIntoView函数将被遮挡的元素滚动到可见的屏幕上 scrollIntoView(true)将元素滚动到屏幕中间 scrollIntoView(false)将元素滚动到屏幕底部 ''' # 将搜索selenium的结果页面的底部page滚动到屏幕中间 print("将搜索selenium的结果页面的底部page滚动到屏幕中间") time.sleep(5) driver.execute_script("document.getElementById('page').scrollIntoView(true)")

总结:拉动滚动条,其实也是一个操作js的过程,如果有其他的js语句需要执行,也可以采用 driver.execute_script(“js语句”)的方式

posted @ 2020-05-21 09:41  RonyJay  阅读(4290)  评论(0编辑  收藏  举报