1、为什么操作滚动条

在HTML页面中,由于前端技术框架的原因,页面中的一些元素为动态显示,元素根据滚动条的下拉而被加载。

例如:页面注册同意条款,需要滚动条到最底层,才能点击同意。

2、Selenium如何操作滚动条

SeleniumWebDriver类库中并没有直接提供对滚动条进行操作方法,但是Selenium提供了可调用JavaScript脚本的方法,所以我们可以通过JavaScript脚本来达到操作滚动条的目的。

提示:

3、Selenium操作滚动条方法

  1. 设置JavaScritp脚本控制滚动条

    js="window.scrollTo(0,1000)

    (0:水平距离;1000:垂直距离;单位像素px)
  2. WebDriver调用JavaScritp脚本方法

    driver.execute_script(js)

提示:

  • 最顶层:js="window.scrollTo(0,0)"
  • 最底层:js="window.scrollTo(0,1000)"

    注:1000不代表一定到最底层,要根据浏览器页面的实际大小。
  • 直接操作垂直距离的方式:js= "var q=document.documentElement.scrollTop=n

4、操作滚动条示例

需求:访问淘宝首页,在淘宝首页实现Selenium对滚动条的操作。

脚本代码

"""
1.学习目标:
掌握浏览器滚动条的操作方法
2.语法
2.1使用js语言编写控制滚动条代码
参数:
0,表示水平距离;
10000,表示垂直距离 单位:px
格式:
向下滚动:window.scrollTo(0,10000)
向上滚动:window.scrollTo(0,0)
2.2使用selenium中方法执行js代码
driver.execute_script(js代码)
3.需求
在页面中,控制滚动条
4.总结
如果需要测试写的js代码,可以在浏览器F12,控制台console中执行查看结果。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep # 2.打开浏览器
driver = webdriver.Chrome() # 3.打开页面
url = "https://www.taobao.com"
driver.get(url)
sleep(2) # 4.滚动条操作
# 4.1 滚动条向下滚动
js_down = "window.scrollTo(0,1000)"
# 执行向下滚动操作
driver.execute_script(js_down)
sleep(2) # 4.2 滚动条向上滚动
js_up = "window.scrollTo(0,0)"
driver.execute_script(js_up)
sleep(2) # 向下滚动操作
# n为从顶部往下移动滚动距离
js1 = "var q=document.documentElement.scrollTop=2000"
driver.execute_script(js1)
sleep(2) # 5.关闭浏览器
driver.quit()

5、下拉至聚焦元素的位置

聚焦元素:就是把滚动条,滚动到你想要查找的元素的位置。

(1)实现步骤:

# 1 定位需要聚焦元素
target = driver.find_element_xx # 2 js代码
js = "arguments[0].scrollIntoView()" # 3 执行聚焦元素操作
driver.execute_script(js代码,元素target)

(2)实现示例:

页面代码片段

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<style type="text/css">
button{padding: 8px; background: #f8f8f8;border-radius: 5px}
button{margin-left:200px;margin-top:2000px}
</style>
</head>
<body>
<button type="submitA" value="注册A" title="加入会员A" >注册用户A</button>
</body>
</html>

脚本代码:

"""
1.学习目标:
掌握聚焦元素的操作方法
2.语法(操作方法)
2.1 定位需要聚焦元素
target = driver.find_element_xx
2.2 js代码
js = "arguments[0].scrollIntoView()"
2.3 执行聚焦元素操作
driver.execute_script(js代码,元素target)
3.需求
在页面中,滚动条下拉聚焦元素位置。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os # 2.打开浏览器
driver = webdriver.Chrome() # 3.打开页面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2) # 4.滚动条下拉聚焦元素位置
# 4.1 定位需要聚焦元素-淘宝首页的END文字
element = driver.find_element_by_css_selector("[type='submitA']") # 4.2 js代码
js = "arguments[0].scrollIntoView()" # 4.3 执行聚焦元素操作
driver.execute_script(js, element)
sleep(3) # 5.关闭浏览器
driver.quit()

『心善渊』Selenium3.0基础 — 17、Selenium操作浏览器窗口的滚动条的更多相关文章

  1. 『心善渊』Selenium3.0基础 — 22、使用浏览器加载项配置实现用户免登陆

    目录 1.浏览器的加载项配置 2.加载Firefox配置 3.加载Chrome配置 1.浏览器的加载项配置 在很多情况下,我们在登录网站的时候,浏览器都会弹出一个是否保存登录账号的信息.如果我们选择保 ...

  2. 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍

    目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...

  3. 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作

    目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...

  4. 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件

    目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...

  5. 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍

    目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...

  6. 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API

    目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...

  7. 『心善渊』Selenium3.0基础 — 19、使用Selenium操作文件的上传和下载

    目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示 ...

  8. 『心善渊』Selenium3.0基础 — 20、Selenium对Cookie的操作

    目录 1.Cookie介绍 2.Session介绍 3.Cookie工作原理图解 4.Cookie内容参数说明 5.Selenium操作Cookie的API 6.Selenium操作Cookie的示例 ...

  9. 『心善渊』Selenium3.0基础 — 15、Selenium对多窗口的操作

    目录 1.多标签/多窗口之间的切换 2.句柄练习 1.多标签/多窗口之间的切换 (1)多标签/多窗口场景: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作,如 ...

随机推荐

  1. [刷题] 17 Letter Combinations of a Phone Number

    要求 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合 1 不对应任何字母    示例 输入:"23" 输出:["ad", "ae&q ...

  2. GCC链接时库顺序问题

    GCC或G++在编译链接时,如果命令行中含有库,则要特别注意了.根据<C专家编程>5.3节中的提示,GCC在链接时对命令行时的处理顺序是从左到右.证据是GCC的MAN: -l librar ...

  3. 利用rsync备份生产应用(二)

    概述 上节主要是针对rsync服务端进行的配置和详解,本节主要针对在客户端上的rsync配置进行讲解. rsync用法 本地到本地 语法:rsync [OPTION...] SRC... [DEST] ...

  4. BogoMips 和cpu主频无关 不等于cpu频率

    http://tinylab.org/explore-linux-bogomips/ 内核探索:Linux BogoMips 探秘 Tao HongLiang 创作于 2015/05/12 打赏 By ...

  5. 深度学习白平衡(Color Constancy,AWB):ICCV2019论文解析

    深度学习白平衡(Color Constancy,AWB):ICCV2019论文解析 What Else Can Fool Deep Learning? Addressing Color Constan ...

  6. 在NVIDIA(CUDA,CUBLAS)和Intel MKL上快速实现BERT推理

    在NVIDIA(CUDA,CUBLAS)和Intel MKL上快速实现BERT推理 直接在NVIDIA(CUDA,CUBLAS)或Intel MKL上进行高度定制和优化的BERT推理,而无需tenso ...

  7. Nucleus 实时操作系统中断(上)

    Nucleus 实时操作系统中断(上) Interrupts in the Nucleus SE RTOS 所有现代微处理器和微控制器都有某种中断设施.这种能力对于提供许多应用程序所需的响应能力是必不 ...

  8. Hash源码注释解析

    部分代码注释解析: 1 import java.io.IOException; 2 import java.io.InvalidObjectException; 3 import java.io.Se ...

  9. C# 强行锁定 第三方 外部 应用程序窗体窗口的分辨率尺寸大小 禁止鼠标拖拽改变窗口大小

    我们也许会有一些奇怪的需求,比如说禁止一个外部程序的窗口大小更改. 如果我们没法修改外部程序的代码,那要怎么做呢? 当然,我们可以通过DLL注入目标程序的方式去Hook或registry一个事件来检测 ...

  10. java面试必知必会——排序

    二.排序 时间复杂度分析 排序算法 平均时间复杂度 最好 最坏 空间复杂度 稳定性 冒泡 O(n²) O(n) O(n²) O(1) 稳定 选择 O(n²) O(n²) O(n²) O(1) 不稳定 ...