Selenium基础 — Selenium操作浏览器窗口滚动条_selenium scroll-程序员宅基地

技术标签: selenium  chrome  javascript  

1、为什么操作滚动条

  1. 在HTML页面中,由于前端技术框架的原因,页面中的一些元素为动态显示,元素根据滚动条的下拉而被加载。
  2. 例如:页面注册同意条款,需要滚动条到最底层,才能点击同意。

2、Selenium如何操作滚动条

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

  • 滚动条:一种可控制程序显示范围的组件。
  • JavaScript:一种流行脚本语言,可以操作HTML标签。

JavaScript学习文档:http://www.w3school.com.cn/js/js_intro.asp

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 定位需要聚焦元素
target = driver.find_element_xx

# 2 js代码
js = "arguments[0].scrollIntoView()"

# 3 执行聚焦元素操作
driver.execute_script(js代码,元素target)

示例:
页面代码片段

<!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()

最后我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了

1、学习思路和方法

这个大纲涵盖了目前市面上企业百分之99的技术,这个大纲很详细的写了你该学习什么内容,企业会用到什么内容。总共十个专题足够你学习

2、想学习却无从下手,该如何学习?

这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。

3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件....

4、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

最后送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_59868866/article/details/127535708

智能推荐

springaop无法拦截service方法中调用_aop 不能拦截service-程序员宅基地

文章浏览阅读1k次。问题描述:springaop无法拦截service方法中调用,在service类中方法A调用带有切面注解的方法B,切面失效问题分析:AOP底层实现: 拦截器的实现原理就是动态代理,实现AOP机制。Spring 的代理实现有两种:一是基于 JDK Dynamic Proxy 技术而实现的;二是基于 CGLIB 技术而实现的。如果目标对象实现了接口,在默认情况下Spring会采用JDK的动态代理实现AOP; ***总之是类(接口类)级别的代理***;解决思路: 只要将方法A调用方法B过程中添加_aop 不能拦截service

Java实现二维码批量生成_java批量生成二维码-程序员宅基地

文章浏览阅读645次。Java批量生成二维码实例_java批量生成二维码

CentOS8 安装数据库_centos8 安装vastbase数据库-程序员宅基地

文章浏览阅读961次。yum -y localinstall mysql80-community-release-el7-1.noarch.rpmpip3.6 install mycli_centos8 安装vastbase数据库

子类继承父类时各种属性的问题_一个子类继承另一个父类然后子类new对象属性分装不进去-程序员宅基地

文章浏览阅读2.2k次。普通属性子类可以继承父类的属性值,后续操作互不影响。静态属性:public class Main7 extends Father{ //static int test = 11; public static void main(String[] args) { test++; Father father = new Father(); System.out.printl..._一个子类继承另一个父类然后子类new对象属性分装不进去

摄像机内参与OpenGL_摄像机四个内参-程序员宅基地

文章浏览阅读2.4k次,点赞4次,收藏14次。参考转自:https://blog.csdn.net/yanglusheng/article/details/52268234https://blog.csdn.net/sunboyiris/article/details/780826991、 相机参数是三种不同的参数。相机的内参数是六个分别为:1/dx、1/dy、r、u0、v0、f。opencv1里的说内参数是4个其为fx、..._摄像机四个内参

随便推点

Day507.Linux下MySQL的安装与使用 -mysql-程序员宅基地

文章浏览阅读1.6k次,点赞6次,收藏12次。Linux下MySQL的安装与使用一、安装前说明1、Linux系统及工具的准备安装并启动好两台虚拟机: CentOS 7掌握克隆虚拟机的操作mac地址主机名ip地址UUID安装有 Xshell 和 Xftp 等访问CentOS系统的工具CentOS6和CentOS7在MySQL的使用中的区别防火墙:6是iptables,7是firewalld启动服务的命令:6是service,7是systemctl2、查看是否安装过MySQL如果你是用rpm安装, 检

python3 [爬虫实战] 微博爬虫京东客服之Selenium + Chrom浏览器的使用(上)_京东爬虫 对浏览器的要求-程序员宅基地

文章浏览阅读1k次。先暂时记录一下首先 Chrom浏览器一定要匹配好, 不能在百度搜索中下载最新的谷歌浏览器,我现在下的是版本50的浏览器。匹配的chromedriver.exe 是2.9的。32位的同样也使用64位的。 需要把chromedriver.exe 安装在谷歌浏览器的安装目录下,路径是:C:\Program Files (x86)\Google\Chrome\Application与chrome.ex_京东爬虫 对浏览器的要求

[转]十个完全免费的网页原型(线框图)工具_将网站直接转换成原型图-程序员宅基地

文章浏览阅读890次。网页的线框图是非常直观、但是也没什么技术上难点的东西。只需要你大概描出页面上需要的一些元素,比如头部、导航、页脚等等,最多再就是一些交互、内容区域什么的。但这对于任何网络应用的开发都是非常重要的。当然有很多种方法可以做这件事情,最简单的就是拿起纸和笔,但是在这篇文章中,我们要介绍的是一些非常高效好用的在线原型工具,并且他们完全免费。Lumzy 快速原型工具使用Lumzy你可以为你的应用创建_将网站直接转换成原型图

深度学习中关于样本不均衡问题的解决_深度学习重采样-程序员宅基地

文章浏览阅读1k次。深度学习中的样本不均衡问题_深度学习重采样

基于keras采用LSTM实现多标签文本分类(一)_keras lstm多分类-程序员宅基地

文章浏览阅读2.5k次。1.多标签即一条语句可能有多个类别划分。例如,这个酸菜鱼又酸又辣。属于酸和辣两个标签。在采用神经网络学习时,最后一层的激活函数应采用sigmoid激活函数,相当于对这条语句做了多个二分类。2.多分类即每条语句只有一个标签,在采用神经网络学习时,最后一层的激活函数应采用softmax激活函数,最后选取类别中的最大值作为预测结果。关于sigmoid和softmax 的区别此处再说明。本次数据集的格式为:关于LSTM的学习可以参考这篇。关于词向量化的方式,本文采用keras 内置Tokenizer A_keras lstm多分类

常用抓包工具分析_包分析工具-程序员宅基地

文章浏览阅读2.5w次,点赞3次,收藏38次。常用的抓包工具有: tcpdump (linux) wireshark (windows) tcpflow (linux) httpwatch (windows) 浏览器自带抓包工具 (windows)tcpdump (linux)tcpdump是linux下的抓包工具,一般使用比较习惯于,在linux下用tcpdump抓包,结果存入文件,把文件导入windows下用window..._包分析工具

推荐文章

热门文章

相关标签