selenium中没有直接控制滚动条的方法,可以使用方法:execute_script(),可以直接执行js的脚本。

  一、竖向滚动条控制,三种方法总有一款适合你。

    1.滚动条拉到最底:

      js="var q=document.documentElement.scrollTop=10000"

      driver.execute_script(js)

    2.滚动条拉到最底:    

      js="var q=document.getElementById('id').scrollTop=10000"

      driver.execute_script(js)

      这里的id为滚动条的id,滚动条没有id的网页此方法不适用。

    3.滚动条拉到最底:

      js = "var q=document.body.scrollTop=10000"

      driver.execute_script(js)

      可以修改scrollTop 的值来定位右侧滚动条的位置,0是最最顶部,10000是最底部。   

在百度中搜索selenium,拖动滚动条至最底端:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
# 搜索 selenium
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
# 等待元素可见
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="5"]/h3/a')))
# 将滚动条下拉至最低
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

  二、横向滚动条控制

    1.通过坐标控制横向和纵向滚动条 scrollTo(x, y)

    js = "window.scrollTo(100,400);"

    driver.execute_script(js)

  三、将目标元素拖动到页面可见区域

    1.可见元素与页面“底端”对齐,scrollIntoView(false)

    2.可见元素与页面“顶端”对齐,scrollIntoView()

  在百度中搜索selenium,拖动元素至页面底端,便于点击操作(因为在百度中将元素拖动至页面顶端时,会被百度网页自带的表头遮挡住,点击时会报错)

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
# 搜索 selenium
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
# 等待元素可见
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="5"]/h3/a')))
# 1.先找到元素
element = driver.find_element_by_xpath('//*[@id="5"]/h3/a') # 2.利用js将元素拖动到可见区域
driver.execute_script("arguments[0].scrollIntoView(false);",element) #可见元素与页面“底端”对齐

执行结果如下:

  三、滚动页面到最底部

      方法:window.scrollTo

      driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.implicitly_wait(20)
driver.maximize_window()
# 搜索 selenium
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
# 等待元素可见
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="5"]/h3/a')))
# 1.操作元素
driver.find_element_by_xpath('//*[@id="5"]/h3/a').click() # 2.等待新窗口打开
WebDriverWait(driver,10).until(EC.new_window_is_opened(windows)) # 获取当前所有窗口句柄
windows = driver.window_handles # 3.切换到最后一个窗口
driver.switch_to.window(windows[-1]) # 滚动页面到最底部
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
sleep(5)
driver.quit()

==================================================================================

尊重原创,若需转载请注明出处:https://www.cnblogs.com/lizhe860/

==================================================================================

python selenium 滚动条处理、页面拖动的更多相关文章

  1. Python+Selenium自动化-获取页面信息

    Python+Selenium自动化-获取页面信息   1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import t ...

  2. Python+Selenium自动化-定位页面元素的八种方法

    Python+Selenium自动化-定位页面元素的八种方法   本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子. 0.元素定位方法主要有: id定位:find_elemen ...

  3. Python selenium 滚动条 详解

    在我们使用Python + selenium 爬虫的时候,会遇到如下报错,原因是  当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. selenium.common ...

  4. 利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)

    对WebElement截图 WebDriver.Chrome自带的方法只能对当前窗口截屏,且不能指定特定元素.若是需要截取特定元素或是窗口超过了一屏,就只能另辟蹊径了. WebDriver.Phant ...

  5. python selenium --滚动条处理

    转自:http://www.cnblogs.com/fnng/p/3256563.html 本节重点: 控制滚动条到底部 有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需 ...

  6. Python + Selenium 实现对页面的指定元素截图(可截长图元素)【转载】

    先在首页上执行一段 JavaScript 脚本,将页面的滚动条拖到最下方,然后再拖回顶部,最后才截图.这样可以解决那种按需加载图片的情况 以下代码为转载别处博客改造后的,有chrome和ff两种浏览器 ...

  7. python selenium 多个页面对象类使用同一个webdriver(即只打开一个浏览器窗口)

    1 class BasePage(): 2 """selenium基类""" 3 4 def __init__(self, driver=N ...

  8. Python selenium根据class定位页面元素

    在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写id属性.通常一段html代码如下: <div cl ...

  9. python selenium自动化点击页面链接测试

    python selenium自动化点击页面链接测试 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回 ...

随机推荐

  1. pache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口

    Apache—DBUtils框架简介.DbUtils类.QueryRunner类 .ResultSetHandler接口 commons-dbutils 是 Apache 组织提供的一个开源 JDBC ...

  2. HMM简单理解(来自quora&其他网上资料)

    转载自quora: 连接:https://www.quora.com/What-is-a-simple-explanation-of-the-Hidden-Markov-Model-algorithm ...

  3. jsonp 实现跨域例子

    直接上代码: js: <html> <head> <title>JSONP</title> </head> <script src = ...

  4. win7下users用户文件转移到其他盘符

    在安装完的系统中, 1.重启按F8键到修复系统界面: 2.下一步->下一步->运行dos窗口,打开dos窗口: 3.拷贝命令:robocopy "C:\Users" & ...

  5. python爬虫-异常处理

    URLerror产生原因: 网络未连接(即不能上网) 服务器不存在 #-*-coding:utf--*- import urllib2 request=urllib2.Request('http:// ...

  6. 批处理之IPC连接工具

    由于自己需要重复一些工作,闲来没事发个搞个批处理玩玩. 功能介绍:建立IPC连接,IPC磁盘映射,断开IPC连接等 @echo off color 0A echo Welcome!!! echo 本机 ...

  7. js中对象的类型

    js中的类型分为三种,"内部对象"."宿主对象"."自定义对象" 1."内部对象"有Date.Function.Arra ...

  8. odl v2 driver

    networking-odl项目的目的/用途就是sync odl和neutron的资源数据库和状态 v1中对于每个neutron的资源操作都相应的调用odl restfu api来同步odl,但问题有 ...

  9. 【转】ORACLE的数据类型

    原文;http://linjian004.bokee.com/3916067.html 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 ...

  10. 为mac终端添加tree命令

    原文:http://superuser.com/questions/359723/mac-os-x-equivalent-of-the-ubuntu-tree-command/ 整理步骤如下: $ t ...