摘自https://www.cnblogs.com/sanzangTst/p/7692285.html

前言

什么是JS?
JS就是JavaScript;
JavaScript 是世界上最流行的脚本语言;
JavaScript 是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话;
JavaScript 被设计为向 HTML 页面增加交互性;
许多 HTML 开发者都不是程序员,但是 JavaScript 却拥有非常简单的语法。几乎每个人都有能力将小的 JavaScript 片段添加到网页中。

一、JS处理滚动条问题

1、滚动条回到顶部:
js="var q=document.getElementById('id').scrollTop=0"
driver.execute_script(js)
或者
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
2、滚动条拉到底部:
js="var q=document.getElementById('id').scrollTop=10000"
driver.execute_script(js)
或者
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
3、滚动条拉到指定位置(具体元素):
target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target)
4、通过模拟键盘DOWN(↓)来拖动:
driver.find_element_by_id("id").send_keys(Keys.DOWN)
5、scrollTo函数
--scrollHeight 获取对象的滚动高度。 
--scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。 
--scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。 
--scrollWidth 获取对象的滚动宽度。
 
#滚动到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)
#滚动到顶部
js = "window.scrollTo(0,0)"
driver.execute_script(js)

二、参考代码

 1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 # @File : jss.py
4 # @Software: PyCharm
5 from selenium import webdriver
6 import time
7 from selenium.webdriver.common.keys import Keys
8 url = 'http://www.cnblogs.com/sanzangTst/'
9 browser = webdriver.Firefox()
10 browser.get(url)
11 time.sleep(3)
12 # 拉到底部
13 js="var q=document.documentElement.scrollTop=10000"
14 browser.execute_script(js)
15
16 # 回到顶部
17 js="var q=document.documentElement.scrollTop=0"
18 browser.execute_script(js)
19
20 # 拖到指定位置
21 target = browser.find_element_by_id("homepage1_HomePageDays_DaysList_ctl05_DayList_TitleUrl_0")
22 browser.execute_script("arguments[0].scrollIntoView();", target)
23
24 #滚动到底部
25 js = "window.scrollTo(0,document.body.scrollHeight)"
26 browser.execute_script(js)
27
28 #滚动到顶部
29 js = "window.scrollTo(0,0)"
30 browser.execute_script(js)

自动化测试基础篇--Selenium中JS处理滚动条的更多相关文章

  1. 自动化测试基础篇--Selenium中JS处理浏览器弹窗

    摘自https://www.cnblogs.com/sanzangTst/p/7692454.html 浏览器弹窗: 现在大多数网站都会使用自定义弹窗,使用Selenium自带的方法暂时处理不了,这时 ...

  2. 自动化测试基础篇--Selenium中数据参数化之TXT

    摘自https://www.cnblogs.com/sanzangTst/p/7722594.html 一.搜索参数化 在TXT文件中保存需要搜索的内容: 测试代码: 1 #!/usr/bin/env ...

  3. 自动化测试基础篇--Selenium等待时间

    摘自https://www.cnblogs.com/sanzangTst/p/8376221.html 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面 ...

  4. 自动化测试基础篇--Selenium简介

    摘自https://www.cnblogs.com/sanzangTst/p/7452636.html 一.软件开发的一般流程 二.什么叫软件测试? 软件测试(英语:Software Testing) ...

  5. 引用 自动化测试基础篇--Selenium简介

    原文链接:http://www.cnblogs.com/sanzangTst/p/7452636.html 鸣谢参藏法师 一.软件开发的一般流程 二.什么叫软件测试? 软件测试(英语:Software ...

  6. 自动化测试基础篇--Selenium文件上传send_keys

    摘自https://www.cnblogs.com/sanzangTst/p/8358165.html 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一 ...

  7. 自动化测试基础篇--Selenium鼠标键盘事件

    摘自https://www.cnblogs.com/sanzangTst/p/7477382.html 前面几篇文章我们学习了怎么定位元素,同时通过实例也展示了怎么切换到iframe,怎么输入用户名和 ...

  8. 自动化测试基础篇--Selenium简单的163邮箱登录实例

    摘自https://www.cnblogs.com/sanzangTst/p/7472556.html 前面几篇内容一直讲解Selenium Python的基本使用方法.学习了什么是selenium: ...

  9. 自动化测试基础篇--Selenium元素定位

    摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...

随机推荐

  1. 新生命Redis组件(.Net Core 开源)

    NewLife.Redis 是一个Redis客户端组件,以高性能处理大数据实时计算为目标.Redis协议基础实现Redis/RedisClient位于X组件,本库为扩展实现,主要增加列表结构.哈希结构 ...

  2. AspectJ在Spring中的使用

    在上一篇AspectJ的入门中,简单的介绍了下AspectJ的使用,主要是以AspectJ的example作为例子.介绍完后也留下了几个问题:1)我们在spring中并没有看到需要aspectj之类的 ...

  3. python使用多线程

    threading 模块支持守护线程, 其工作方式是:守护线程一般是一个等待客户端请求服务的服务器. 如果把一个线程设置为守护线程,进程退出时不需要等待这个线程执行完成. 如果主线程准备退出时,不需要 ...

  4. python bytes和bytearray、编码和解码

    str.bytes和bytearray简介 str是字符数据,bytes和bytearray是字节数据.它们都是序列,可以进行迭代遍历.str和bytes是不可变序列,bytearray是可变序列,可 ...

  5. μC/OS-II 任务的同步与通信 --- 消息队列

    简介 使用消息队列可以在任务之间传递多条消息.消息队列由三个部分组成:事件控制块.消息队列和消息. 当把事件控制块成员 OSEventType 的值置为 OS_EVENT_TYPE_Q 时,该事件控制 ...

  6. 关于VS Code使用注意

    1]:初次使用vs code或多或少有些问题.比如不小心把最左边的这四个快捷按钮消失.,直接按 alt+v  选择[显示活动板]就行了 2]:修改界面语言   快捷键ctrl+shift+p   [修 ...

  7. Serilog记录MongoDB日志报错:requires the binary sub type to be UuidLegacy, not UuidStandard

    Serilog Serilog是.NET开源结构化日志类库 开源地址:https://github.com/serilog 官网:https://serilog.net/ Serilog能做什么: 记 ...

  8. Webapi创建和使用 以及填坑(一)

    Webapi创建和使用 前言:在开发的过程中接口的用途有很多,而且是非常必要.通过接口我们可以跨语言的进行开发web与app或者其他程序,比如http接口.api接口..Rpc接口.rmi.webse ...

  9. C#基础知识总结(二)

    摘要 第二篇主要讲:变量.连接符占位符等.转义字符.数据的计算.数据的转换.try-catch的简单熟悉.复合运算符和自加自减 一.变量 1.数据存储在内存中:内存叫做RAM,内存被分隔为一小格一小格 ...

  10. [android] 采用pull解析xml文件

    /***********2016年5月6日 更新**********************/ 知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...