Selenium系列(二) - 详细解读针对浏览器的操作

news2024/11/18 3:30:59

控制浏览器有哪些操作?

  • 最大化、最小化浏览器
  • 控制、获取浏览器大小
  • 获取当前标签页title、url
  • 前进、后退、刷新
  • 执行js语句
  • 打开、关闭新标签页
  • 滚动页面

点击右边目录即可跳转哦! -------------->>>>>>>>>> 

最大化、最小化浏览器

from time import sleep
from selenium import webdriver

# 加载浏览器驱动
driver = webdriver.Chrome("../resources/chromedriver.exe")

# 访问网址
driver.get("https://www.baidu.com")

# 最大化浏览器
driver.maximize_window()

sleep(2)

# 最小化浏览器
driver.minimize_window()

控制、获取浏览器大小

# 加载浏览器驱动
driver = webdriver.Chrome("../resources/chromedriver.exe")

# 访问网址
driver.get("https://www.baidu.com")

# 获取浏览器大小
size = driver.get_window_size()
print(f"浏览器大小:{size}")

sleep(2)

# 设置浏览器大小
driver.set_window_size(1200, 1000)

执行结果

浏览器大小:{'width': 1936, 'height': 1056}

知识点

get_window_size() 返回的是字典

获取当前标签页title、url

# 加载浏览器驱动
driver = webdriver.Chrome("../resources/chromedriver.exe")

# 访问网址
driver.get("https://www.baidu.com")

# 获取当前标签页的title
print(f"标签页title:{driver.title}")

# 获取当前标签页的url
print(f"标签页url:{driver.current_url}")

# 获取当前浏览器的名称(不常用)
print(f"标签页name:{driver.name}")

# 获取当前页面完整的HTML代码

(不常用)

 print(f"标签页page_source:{driver.page_source}")

执行结果

标签页title:百度一下,你就知道
标签页url:https://www.baidu.com/
标签页name:chrome
标签页page_source:<html><head>...</head></html>

前进、后退、刷新

# 前进
driver.forward()

# 后退
driver.back()

# 刷新
driver.refresh()

执行js语句

# 同步执行js
js='console.log(2)'
driver.execute_script(js)

# 异步执行js
driver.execute_async_script("alert(2)")

打开、关闭新标签页

# 打开新的标签页
js = 'window.open("https://www.baidu.com/")'
driver.execute_script(js)

# 获取当前标签页句柄
print(driver.current_window_handle)

# 获取浏览器所有标签页句柄
handles = driver.window_handles
print(handles)

# 切换标签页
driver.switch_to.window(handles[-1])

# 关闭当前标签页
driver.close()

执行结果

CDwindow-24C58D8D81CCC95D5D55E887402B7E0A
['CDwindow-24C58D8D81CCC95D5D55E887402B7E0A', 'CDwindow-04C35D93CD4A04351BAC1CFFA36378CA', 'CDwindow-AC59AC67423FB8463AF0C534C7A47098']

知识点

  • 打开新的标签页只能通过 js 来操作
  • 可以根据标签页的句柄来切换标签页
  • 操作标签页的好处就是,可以只打开一个浏览器但可以访问多个不同的网页;这在后续集成单元测试框架(unittest、pytest)的时候会有很大的帮助

滚动页面

# 滚动随机高度
js = "var q=document.documentElement.scrollTop=" + random.randint(100, 999)
driver.execute_script(js)

知识点

这里暂时只介绍js的滚动方法,滚动其实有几种高级方法的,后续有空补上

最后,绵薄之力
感谢每一个认真阅读我文章的人,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!


软件测试面试小程序
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

 获取方式 :

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,关注公众号:一个心态巨好的朋友 扣 ‘1’ 即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始 Spring Boot 51:JPA 中的默认列值

从零开始 Spring Boot 51&#xff1a;JPA 中的默认列值 图源&#xff1a;简书 (jianshu.com) JPA 是一个 ORM 框架&#xff0c;因此&#xff0c;通常我们需要在实体类中定义表结构&#xff0c;这其中就包含可能的字段默认值。 本文介绍如何在 Hibernate&#xff08;JPA&#…

HBase(6):计数操作

1 需求 查看HBase中的ORDER_INFO表&#xff0c;一共有多少条记录。 2 count命令 count命令专门用来统计一个表中有多少条数据。语法&#xff1a; count 表名 注意&#xff1a;这个操作是比较耗时的。在数据量大的这个命令可能会运行很久&#xff0c;真实环境不要使用该命令。…

【从零开始学习JAVA | 第二十五篇】泛型

目录 前言&#xff1a; 泛型&#xff1a; 额外拓展&#xff1a; 总结&#xff1a; 前言&#xff1a; 本文将详细介绍之前我们在JAVA 中一直在讲的泛型&#xff0c;各位感兴趣的同学可以点击进来观看。 泛型&#xff1a; 泛型是一种编程概念&#xff0c;它允许在定义类、接…

文章测试

Markdown示例 本文件的源码是一个markdown文件,也就是说在本工程中直接添加markdown即可嵌入到sphinx文档中。 关于使sphinx支持markdown的详细配置说明&#xff0c;请参考文档markdown-sphinx。 markdown的公式语法在sphinx可能不支持。 以下是markdown的语法使用示例 文…

PDF如何转换成Word?PDF转Word方法分享!​

PDF大家都不陌生了吧&#xff1f;作为打工人&#xff0c;学生党的大家都知道&#xff0c;PDF是现在不可或缺的文件传输工具之一&#xff0c;不仅可将文档转为Word&#xff0c;还可以转成excel,ppt等各种形式&#xff0c;其重要性不言而喻&#xff0c;那么今天小编就跟大家具体说…

Web自动化元素定位之xpath定位详解

Web自动化常见的定位方式 为什么要学习定位 1.让程序操作指定元素&#xff0c;就必须先找到此元素 2.程序不像人类用眼睛直接定位到元素 webDriver提供了八种定位元素的方式 定位方式总结 1.id、name、class_name、tag_name:根据元素的标签或元素的属性来进行定位 2.link_t…

gitLab配置ssh实现私钥访问

1.配置ssh文件 1.cd C:\Users\用户名\.ssh 找到文件夹 删除.ssh 里面所有其他文件方面我们配置要最新的 2.win r cmd 呼出命令行 ssh-keygen -t rsa -C "必须对应gitLab用户名" 3.生成文件夹拿到ssh 4.复制id_rsa_pub 文件的全部字符串 公钥给到GitLab服务器 2.公…

使用 JavaScript 在没有插件的情况下输入文本掩码

文章目录 JavaScript 中信用卡号的输入掩码JavaScript 中的邮政编码输入掩码在 JavaScript 中使用括号输入掩码的电话号码为 JavaScript 中的不同字段自定义输入掩码 JavaScript 输入掩码或掩码文本框是一种控件&#xff0c;它为用户提供了一种简单可靠的方式来收集基于标准掩码…

【Servlet学习三】实现一个内存版本的简易计算器~

目录 一、方式1&#xff1a;使用form表单的形式&#xff08;不推荐&#xff09; &#x1f308;1、前端代码&#xff1a;HTML文件 &#x1f308;2、后端代码&#xff1a;Calculator_form.java文件 &#x1f308;3、最终效果 二、方式2&#xff1a;使用ajax形式&#xff08;…

力扣 105. 从前序与中序遍历序列构造二叉树

题目来源&#xff1a;https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/ C题解&#xff1a;前序遍历是中左右&#xff0c;中序遍历是左中右&#xff0c;所以拿到两个遍历数组&#xff0c;我们可以从前序遍历首节点获取中间…

Docker 私有仓库

一、私有仓库搭建 拉取私有仓库镜像 docker pull registry 启动私有仓库 docker run -id --nameprivate_registry -p 5000:5000 registry 打开浏览器输入 http://私有仓库服务器IP地址:5000/v2/_catalog 修改 daemon.json 文件 sudo gedit /etc/docker/daemon.json 在…

在Mapper.xml中写复杂的动态SQL语句

说明&#xff1a;在三层架构开发中&#xff0c;使用Mybatis框架操作数据库有两种方式&#xff0c;一种是在Mapper类里的方法上加注解&#xff08;Select、Insert等&#xff09;&#xff0c;另一种是在Mapper.xml文件的标签内写SQL语句。第二种方式相比第一种&#xff0c;具有更…

electron webview 页面加载事件顺序

electron webview 页面加载事件顺序 1.did-start-loading 页面开始加载web 2.load-commit 主页面文档加载框架 3.page-title-updated titledom 4.dom-ready 主页面 dom 加载完成electron 5.load-commit frame文档加载.net 6.did-frame-finish-load frame 加载完成cdn 7.d…

Springboot钉钉免密登录集成(钉钉小程序和H5微应用)

欢迎访问我的个人博客:www.ifueen.com RT&#xff0c;因为业务需要把我们系统集成到钉钉里面一个小程序和一个H5应用&#xff0c;并且在钉钉平台上面实现无感登录&#xff0c;用户打开我们系统后不需要再输入密码即可登录进系统&#xff0c;查阅文档实际操作过之后记录一下过程…

HTML转EXE工具(HTML App Build)永久免费版

HTML转EXE工具&#xff08;HTM2EXE&#xff09;在CSDN上发布时间轴&#xff1a; 序号时间链接12022-08-17HTML转EXE工具&#xff08;HTML App Build&#xff09;初始版22023-02-18HTML转EXE工具&#xff08;HTML App Build&#xff09;最新版32023-06-23&#xff08;实际未发布…

高德地图点聚合报错

最近做项目遇到这样一个玄学问题&#xff1a; 在写高德地图的时候加一个覆盖物 除了金华市其他城市覆盖并且不能点击&#xff0c;金华市内点击获取坐标点这样一个业务&#xff0c; 到这里都很正常&#xff0c;代码奉上 const AMap window.AMapconst state reactive({mapInp…

黑客进行网络欺骗攻击的手段有哪些?

网络欺骗主要方式有&#xff1a;IP 欺骗、ARP 欺骗、DNS 欺骗、Web 欺骗、电子邮件欺骗、源路由欺骗和地址欺骗等。其技术主要分为 HONEYPOT、分布式 HONEYPOT 和欺骗空间技术等。其中&#xff0c;源路由欺骗方式指通过指定路由&#xff0c;以假冒身份与其他主机进行合法通信或…

python实现遗传算法(单目标优化,多目标优化)

首先我们应该熟悉numpy的矩阵取值 [:, 1::2] # 第一维&#xff0c;从第二个元素起步长为2取元素[:, ::2] # 第一维&#xff0c;从第一个元素起步长为2取元素 1 遗传本质 染色体的交叉和变异 种群&#xff1a;很多个个体组成的群体&#xff0c;即为所有可能解的集合个体&…

[muduo学习笔记]事件分发器(Channel、Poller)

此学习笔记参考施磊老师的muduo教学课程。 目的是搞懂 muduo 网络库的核心框架。EventLoop、channel 和 Poller 之间的关系 文章目录 1 Poller 抽象基类2 Channel3 模块的包含muduo模块梳理参考&#xff1a; 整体框架如下&#xff1a; muduo是基于 Reactor 模式的网络库&#…

vue中v-for重复数据处理||element下拉框去除重复

前端去重方法有多种,只说三种常用的(新老方法都有) 1-使用常规双for循环(暴力算法)遍历比较的方式对值进行比较 2-使用js方法sort排序&#xff08;只针对数组&#xff09;&#xff0c;但是经常在vue等新框架中提示TypeError: arr.sort is not a function 3-使用reduce方法(>…