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

news2024/12/28 21:20:11

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

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

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

代码示例如下:

# coding:utf-8

import time

from 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-8

import time

from 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-8

import time

from 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-8

import time

from 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.coloradmin.cn/o/1394772.html

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

相关文章

掌握退款与测评自养号技术,在亚马逊、沃尔玛上轻松做卖家

今天,我想与大家分享在亚马逊、沃尔玛退款自养号中的一些经验。众所周知,自养号的环境是至关重要的,它涉及到系统的纯净度、下单所用的信用卡以及许多其他细节。一个良好的养号环境能够确保账号的安全与稳定,进而提高退款成功率。…

Android aar包集成与报错

Android Studio引用AAR的方式,分为gradle7.0之前与7.0之后 一、集成步骤 方法一: 1.将对应的xxx.aar包复制到项目的libs目录下(xxx代表需要引入的aar包名称) 2.然后在模块的build.gradle文件中配置implementation files(libs/lib…

C+关于用户界面设计

1.用户界面 用户界面(User Interface,UI)是用户与计算机程序、应用程序、设备或系统进行 交互的方式和元素的总称。它是用户与计算机系统之间的桥梁,通过它用户可以输入指 令、查看信息、执行操作等。用户界面的主要目标是使用户与…

c++基础3

一 、构造函数的初始化列表 可以指定成员对象的初始化方式 构造函数的初始化列表是在 C 中用于初始化成员变量的一种机制。它在构造函数的参数列表之后,构造函数的函数体之前使用,并使用冒号 : 分隔。初始化列表可以用于给成员变量赋初值,而不…

【MyBatis-Plus】逻辑删除

对于一些比较重要的数据,我们通常采用逻辑删除。(即用一个字段表示是否删除,实际上始终在数据库没有被删除) 当逻辑删除字段为 true,业务处理的时候会自动把该数据当做一个“不存在”的数据处理。(即不处理…

QT quick基础:组件gridview

组件gridview与android中gridview布局效果相同。 一、下面记录qt quick该组件的使用方法。 方法一: // ContactModel.qml import QtQuick 2.0ListModel {ListElement {name: "1"portrait: "icons/ic_find.png"}ListElement {name: "2&quo…

mac下配置git自定义快捷命令

1. 指定自定义别名 vi ~/.bash_profile open ~/.bash_profile 配置环境变量,插入类似下面的内容 .bash_profile文件 alias gcgit checkout alias gmgit commit -m alias gcbgit checkout -balias gtgit statusalias gagit add .alias glggit logalias gdgit diffalias gr…

index_jsp报错

今天跟着视频一模一样敲代码,一直报500 搜索了好几篇csdn,不断地修改添加的jstl.jar 和standard.jar,修改这两个jar包版本,还是报500 又看到说是因为tomcat10中存在jsp.jar,同时存在发生冲突,于是把tomcat…

KNN算法原理及应用

理解KNN 算法原理 KNN是监督学习分类算法,主要解决现实生活中分类问题。 根据目标的不同将监督学习任务分为了分类学习及回归预测问题。 监督学习任务的基本流程和架构: (1)首先准备数据,可以是视频、音频、文本、…

大模型关键技术:上下文学习、思维链、RLHF、参数微调、并行训练、旋转位置编码、模型加速、大模型注意力机制优化、永久记忆、LangChain、知识图谱、多模态

大模型关键技术 大模型综述上下文学习思维链 CoT奖励建模参数微调并行训练模型加速永久记忆:大模型遗忘LangChain知识图谱多模态大模型系统优化AI 绘图幻觉问题从 GPT1 - GPT4 拆解GPTs 对比主流大模型技术点旋转位置编码层归一化激活函数注意力机制优化 大模型综述…

天锐绿盾有哪些功能?

天锐绿盾是一款企业内网安全管理软件,具有多种功能来保护企业的信息安全。 PC地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是天锐绿盾的主要功能: 文件加密保护:天锐绿盾可以对文件…

C# 线程间操作无效: 从不是创建控件的线程访问它--多线程操作

我们在用线程操作的时候,可能会出现异常:线程间操作无效: 从不是创建控件richTextBox1的线程访问它。因为windows窗体控件不是线程安全的,如果几个线程操作某一控件的状态,可能会使该控件的状态不一致,出现争用或死锁状…

黑马 Javaweb - MySQL 精华篇

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 知…

华为交换机配置NQA DNS检测IP网络DNS解析速度

华为HCIA视频教程:超级实用,华为VRP系统文件详解 华为HCIA视频教程:不会传输层协议,HCIA都考不过 华为HCIA视频教程:网络工程师的基本功:网络地址转换NAT 华为HCIP视频教程:DHCP协议原理与配…

Hadoop集群配置及测试

Hadoop集群配置及测试 NameNode与SecondaryNameNode最好不在同一服务器 ResourceManager较为消耗资源,因而和NameNode与SecondaryNameNode最好不在同一服务器。 配置文件 hadoop102hadoop103hadoop104HDFSNameNodeDataNodeDataNodeSecondaryNameNodeDataNodeYAR…

如何通过IDEA创建基于Java8的Spring Boot项目

上次发现我的IDEA创建Spring Boot项目时只支持11和17的JDK版本,于是就通过Maven搭建SpringBoot项目。 究其原因,原来是Spring官方抛弃了Java8!!! 使用IDEA内置的Spring Initializr创建SpringBoot项目时,已…

设计模式——1_5 享元(Flyweight)

今人不见古时月,今月曾经照古人 ——李白 文章目录 定义图纸一个例子:可以复用的样式表绘制表格降本增效?第一步,先分析 变化和不变的地方第二步,把变化和不变的地方拆开来第三步:有没有办法共享这些内容完…

【数据结构】堆的实现和排序

目录 1、堆的概念和结构 1.1、堆的概念 1.2、堆的性质 1.3、堆的逻辑结构和存储结构 2、堆的实现 2.1、堆的初始化和初始化 2.2、堆的插入和向上调整算法 2.3、堆的删除和向下调整算法 2.4、取堆顶的数据和数据个数 2.5、堆的判空和打印 2.6、测试 3、堆的应用 3.1…

AIGC之视频图片生成工具gen-2

最近无事时研究了一款图片和视频生成工具,先说结论: 1.可以生成视频,生成方式有三种 通过文本的方式生成视频可以通过图片的方式生成视频也可以通过图片文本的方式生成视频 2.可以通过文本描述的方式生成图片 3.生成的视频有瑕疵&#xf…

Eureka整合seata分布式事务

文章目录 前言一、Seata配置1.1、Seata下载1.2、修改conf目录中 flie.conf 文件1.3、修改conf目录中 registry.conf文件1.4、初始化seata数据库 二、微服务整合Seata2.1、父工程项目创建引入依赖 2.2、Eureka集群搭建2.3、搭建账户微服务2.3.1 新建seata-account-service微服务…