Python+selenium实现浏览器基本操作详解

关闭 driver 启动的浏览器
上一章节文末,我们介绍了关于两种关闭浏览器的方式,这里不做过多的复述。(实在是这一章节的内容太少了)

在 selenium 中,提供了两种关闭 driver 启动的浏览器的方式:

close() 方法:该方法可以关闭浏览器,但是它关闭的只是浏览器的窗口,由 driver 启动的浏览器的进程依然还在,会占用一定的资源。
quit() 方法:该方法同样可以关闭浏览器,但是它在关闭浏览器的窗口的同时,也会 kill 掉 driver 启动的浏览器的进程。
ps:以上两种方法,close() 方法适合在我们启动浏览器结束了一个用例的场景之后,仍需执行其他的自动化测试用例的时候使用;而 quit() 方法则适合在已经执行完所有用例之后使用。

代码示例如下:

# coding:utf-8import timefrom selenium import webdriver# chrome_driver = "/Users/workspace/driver/chromedriver"# driver = webdriver.Chrome(executable_path=chrome_driver)driver = webdriver.Chrome()driver.get("https://blog.csdn.net/")time.sleep(1)driver.quit()

运行结果如下:

浏览器最大化与设置浏览器窗口大小
在我们的测试过程中,使用一些基于图像或者坐标辅助工具的时候,就会需要浏览器在每次测试的时候都保持着最大化,以便于能够在同一个分辨率下进行图像的比对、使用做点进行的点选等等。所以接下来就看看如何将浏览器最大化与设置特定的分辨率大小。


浏览器最大化
使用 maximize_window() 方法将浏览器最大化,代码示例如下:

# coding:utf-8import timefrom selenium import webdriver# chrome_driver = "/Users/workspace/driver/chromedriver"# driver = webdriver.Chrome(executable_path=chrome_driver)driver = webdriver.Chrome()time.sleep(1)driver.maximize_window()driver.get("https://blog.csdn.net/")time.sleep(1)driver.quit()

运行结果如下:

这就是一个最大化的操作功能。


设置浏览器窗口大小
都是最大化的场景可能会出现图像、坐标定位不精确的情况,所以当我们希望能够在同一浏览器大小的情况下去运行用例,这样就会比较容易进行图像比对的结合,从而提升灵活性;或者也想测试一下能够在不同的浏览器大小场景下,访问我们的测试站点。对测试页面进行截个图、兼容性是否正常等等等等…

使用 "set_window_size()" 方法来设置窗口的大小。 代码示例如下:

# coding:utf-8import timefrom selenium import webdriver# chrome_driver = "/Users/workspace/driver/chromedriver"# driver = webdriver.Chrome(executable_path=chrome_driver)driver = webdriver.Chrome()time.sleep(1)driver.set_window_size(360, 480)time.sleep(1)driver.maximize_window()driver.get("https://blog.csdn.net/")time.sleep(1)driver.quit()

运行结果如下:

浏览器的前进、后退与刷新页面

PS:前进和后退使用的是非常少的。

  • 使用 back() 方法进行浏览器页面的后退。
  • 使用 forword() 方法进行浏览器页面的前进。
  • 使用 refresh() 方法进行浏览器页面的刷新。

代码示例如下:

# coding:utf-8import timefrom selenium import webdriver# chrome_driver = "/Users/workspace/driver/chromedriver"# driver = webdriver.Chrome(executable_path=chrome_driver)driver = webdriver.Chrome()driver.maximize_window()driver.get("https://blog.csdn.net/weixin_42250835?type=blog")time.sleep(2)driver.get("https://blog.csdn.net/")time.sleep(2)driver.back()time.sleep(1)driver.forward()time.sleep(1)driver.refresh()time.sleep(1)driver.quit()

 运行结果如下:

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

文档获取方式:

加入我的软件测试交流群:1007119548免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPT-4 现在是否已经足够划算?

我通常使用 GPT 的方式是,先用 GPT-4 来快速搭建一个原型,然后不断优化,直到解决方案能够在 GPT-3.5 模型上运行。 这个方法在我的实践中非常高效,它的一个重要好处是能迅速筛选出那些“行不通”的项目——如果你在几天内都无法使…

【现代控制系统】能控性与能观性

能控性与能观性 2023年11月25日 #controlsys 文章目录 能控性与能观性1. 能控性1.1 能控性(可控性)的引入1.2 LTI系统的可控性1.3 LTV系统的可控性 2. 能观性2.1 能观性(可观性)引入2.2 LTI系统的可观性2.3 LTV系统的可观性 3. 状…

图解渠道网关:不只是对接渠道的接口(一)

这是《百图解码支付系统设计与实现》专栏系列文章中的第(20)篇。点击上方关注,深入了解支付系统的方方面面。 主要讲清楚什么是渠道,有哪些类型的渠道,什么是渠道网关,渠道网关在支付系统中定位、核心功能…

《动手学深度学习》学习笔记 第10章 注意力机制

文章目录 本系列为《动手学深度学习》学习笔记10.1 注意力提示10.1.1 生物学中的注意力提示10.1.2 查询、键和值10.1.3 注意力的可视化 10.2 注意力汇聚:Nadaraya-Watson 核回归10.2.1 生成数据集10.2.2 平均汇聚10.2.3 非参数注意力汇聚10.2.4 带参数注意力汇聚10.…

分布式Erlang/OTP(学习笔记)(一)

Erlang分布式基础 假设你在机器A和机器B上各跑着一个Simple Cache应用的实例。要是在机器A的缓存上插人一个键/值对之后,从机器B上也可以访问,那可就好了。显然,要达到这个目的,机器A必须以某种方式将相关信息告知给机器B。传递该…

网络协议与攻击模拟_04ICMP协议与ICMP重定向

ICMP协议是网络层协议, 利用ICMP协议可以实现网络中监听服务和拒绝服务,如 ICMP重定向的攻击。 一、ICMP基本概念 1、ICMP协议 ICMP是Internet控制报文协议,用于在IP主机、路由器之间传递控制消息,控制消息指网络通不通、主机是…

SpringBoot 启动优化实践!

背景 公司 SpringBoot 项目在日常开发过程中发现服务启动过程异常缓慢,常常需要 6-7 分钟才能暴露端口,严重降低开发效率。通过 SpringBoot 的 SpringApplicationRunListener 、BeanPostProcessor 原理和源码调试等手段排查发现,在 Bean 扫描…

K8s(一)Pod资源——Pod介绍、创建Pod、Pod简单资源配额

目录 Pod概述 pod网络 pod存储 pod和容器对比 创建pod的方式 pod运行方式分类 Pod的创建 Pod的创建过程 通过kubectl run来创建pod 通过yaml文件创建,yaml文件简单写法 Pod简单操作 Pod的标签labels Pod的资源配额resource 测试 Pod概述 Kubernetes …

docker部署Jira+配置MySQL8数据库

写在前面:如果你通过docker安装Jira且启动过,然后你现在又想使用mysql数据库,需要注意 你除了停掉原有容器,还需要删除:/var/lib/docker/volumes/jiraVolume/_data下的文件,否则启动后会无法正常使用。注意…

详解Vite创建Vue3项目+vue-router+ts+vite+element-plus

前言 在之前的文章中写过“Vue3TSElementPlus的安装和使用教程【详细讲解】”,但那篇文章写的是创建vue3的项目没有使用到Vite构建工具进行创建还是使用的常规webpacket构建工具进行创建的。提到Vite和webpacket的时候我们可以简单说一下。Vite 和 Webpack 都是现代…

iOS原生应用屏幕适配完整流程

1. 已iPhone 11 布局为设计布局,其他机型已这个来适配 2.变量与控件对应关系 txtViewer: txtAccount txtpwd seg btnOk 3.适配方法实现: //iOS屏幕适配 -(vo

IO网络5.0

思维导图 使用select实现TCP客户端的并发 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <myhead.h>#define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.122.61" //服务器客户端//客户端TCP int ma…