Selenium 自动化 —— 浏览器窗口操作

更多内容请关注我的专栏:

  1. 入门和 Hello World 实例
  2. 使用WebDriverManager自动下载驱动
  3. Selenium IDE录制、回放、导出Java源码

当用 Selenium 打开浏览器后,我们就可以通过 Selenium 对浏览器做各种操作,就像我们日常用鼠标和键盘操作浏览器一样,比如:

  • 打开新窗口
  • 切换到其它窗口
  • 关闭窗口
  • 关闭浏览器
  • ……
    今天我们就来学习这些操作。
1. 打开网页

通过 get() 函数, 我们就可以使用浏览器打开指定的网页。

driver.get("https://www.w3cschool.cn/html/html-form.html");
2. 后退 / 前进

平时使用浏览器时,我们通常会点击浏览器左上角的 [前进] / [后退] 图标,返回到前一个或下一个网页。
在这里插入图片描述
Selenium 也提供了这样的方法 back() 和 forward()

driver.get("https://www.w3cschool.cn/html/html-form.html");
Thread.sleep(3000);

driver.get("https://www.baidu.com");
driver.navigate().back();
Thread.sleep(3000);
driver.navigate().forward();

加了延迟,是为了更清楚看到效果。

3. 另一种打开网页

前面使用driver.get(url) 是最常用的打开网页的方式,但是还有另一种方式:

driver.navigate().to("https://www.w3cschool.cn/html/html-form.html");

这种方式效果和 get() 没有太大的区别,但是它有一个好处,就是 to() 返回的是 Navigation 对象,是的,上面的 back()forward() 方法都是这个对象的方法,这是一种链式调用

WebDriver.Navigation navigation = driver.navigate();
navigation.to("https://www.w3cschool.cn/html/html-form.html");
navigation.back();
navigation.forward();
4. 获取基本信息

打开一个网页,我们通常可以看到两样东西,网页标题和网页地址,还可以查看网页的源码,用 Selenium 同样很简单做到。

driver.get("https://www.w3cschool.cn/html/html-form.html");
Assert.assertEquals("HTML 表单_w3cschool", driver.getTitle());
Assert.assertEquals("https://www.w3cschool.cn/html/html-form.html", driver.getCurrentUrl());
Assert.assertTrue(driver.getPageSource().contains("<html"));
5. 关闭窗口

有时候,我们需要关闭浏览器窗口,比如某个TAB页,就像我们平时点击 “X” 图标一样。
在这里插入图片描述

driver.close();
6. 关闭浏览器

我们测试完后,需要关闭浏览器,这样可以释放资源。

driver.close();

那么问题来了 quit()close() 有什么区别呢?

  • 如果只有一个窗口,关闭当前窗口,浏览器页也会退出
  • 如果有多个窗口,关闭当前窗口,浏览器不会退出

其实和我们真正用浏览器时一样!可见 Selenium 就是对我们平时操作浏览器行为的封装。

到这里我们就学习了浏览器窗口常用的几种操作,关注CSDN - 兰亭序咖啡,和我一起学习探讨 Selenium 自动化和其它技术。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初学php反序列化

php中&#xff0c;序列化和反序列化是相对的两个过程&#xff0c;序列化是把变量或对象转化成字符串的过程 反序列化是把字符串转换为变量过着对象的过程 在php的反序列化中&#xff0c;存在类&#xff0c;当类被以特定的方式就会触发魔术方法&#xff0c;在实行序列化的过程…

element ui的下拉选择单选和多选

单选&#xff1a; html代码&#xff1a; <el-form-item label"指令分类: "><el-select v-model"cid" style"width:100%;" placeholder"请选择指令分类" clearable><el-option v-for"item in orderCidList"…

服务器中有g++,但是查询不到,Command ‘g++‘ not found

有gcc但是查询不到g&#xff0c;gcc版本为9.5.0 (base) zyICML:~$ g -V Command g not found, but can be installed with: apt install g Please ask your administrator. 突然就出现这个问题&#xff0c;导致detectron装不上&#xff0c;现在有时间了专门研究下怎么解决 这…

React Native 应用打包

引言 在将React Native应用上架至App Store时&#xff0c;除了通常的上架流程外&#xff0c;还需考虑一些额外的优化策略。本文将介绍如何通过配置App Transport Security、Release Scheme和启动屏优化技巧来提升React Native应用的上架质量和用户体验。 配置 App Transport…

❤ leetCode简易题1-两数之和、简易2--回文数判断、简易14-最长公共前缀

❤ leetCode简易题1-两数之和、简易题14- 最长公共前缀 1、简易1-两数之和 ① 题目要求 数字A B target&#xff0c;以target为求和结果&#xff0c;找出数组中符合的A、B数字下标。 第一次做的时候完全脑子一片蒙&#xff0c;随后认真看了看题目发现是发现找符合target和…

基于springboot+vue+Mysql的超市进销存系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

3.25C++

定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转 #include <iostream> #include <cstring> usi…

数据在内存的存储(2)【浮点数在内存的存储】

一.浮点数以什么形式存储在内存中 根据根据国际标准IEEE&#xff08;电气和电子工程协会&#xff09;754&#xff0c;任意一个二进制浮点数V都可以存储为这样的形式&#xff1a; V&#xff08;-1&#xff09;^S*M*2^E。 &#xff08;1&#xff09;&#xff08;-1&#xff09;^…

Unix环境高级编程-学习-08-自旋锁与屏障

目录 一、多线程相关文章链接 二、自由抒发 1、自旋锁 2、屏障 三、函数介绍 1、pthread_spin_init &#xff08;1&#xff09;声明 &#xff08;2&#xff09;作用 &#xff08;3&#xff09;参数 &#xff08;4&#xff09;返回值 &#xff08;5&#xff09;注意点 …

docker centos7安装jdk1.8(在线和离线方式)

目录 1.在线方式1.1.进入容器1.2.使用yum安装openjdk1.3.配置环境变量 2.离线方式2.1.下载jdk安装包2.2.解压2.3.配置环境变量 3.可能遇到的问题 1.在线方式 1.1.进入容器 1.2.使用yum安装openjdk # 安装JDK1.8 yum install java-1.8.0-openjdkjava -version1.3.配置环境变量…

RPA-财务对账邮件应用自动化(客户对账机器人)

《财务对账邮件应用自动化》&#xff0c;将会使用邮箱的SMTP服务&#xff0c;小北把资源包绑定在这篇博客了 Uibot (RPA设计软件)———机器人的小项目友友们可以参考小北的课前材料五博客~ (本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; …

Netty学习——源码篇6 Pipeline设计原理 备份

1 Pipeline设计原理 在Netty中每个Channel都有且仅有一个ChannelPipeline与之对应&#xff0c;它们的组成关系如下图&#xff1a; 通过上图可以看到&#xff0c;一个Channel包含了一个ChannelPipeline&#xff0c;而ChannelPipeline中又维护了一个由ChannelHandlerContext组成的…

零基础学python之高级编程(6)---Python中进程的Queue 和进程锁,以及进程池的创建 (包含详细注释代码)

Python中进程的Queue 和进程锁,以及进程池的创建 文章目录 Python中进程的Queue 和进程锁,以及进程池的创建前言一、进程间同步通信(Queue)二、进程锁&#xff08;Lock&#xff09;三、创建进程池Poorpool 类方法: End! 前言 大家好,上一篇文章,我们初步接触了进程的概念及其应…

【随笔】Git -- 常用命令(四)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

第16篇:奇偶校验器

Q&#xff1a;本期我们将实现4位奇偶校验逻辑电路&#xff0c;即校验4位二进制代码中 “1” 的个数是奇数或偶数。 A&#xff1a;奇偶校验器的基本原理&#xff1a;采用异或运算对“1”的奇偶个数进行校验&#xff0c;从最高位依次往最低位进行连续异或运算。如果最后的异或运…

stm32控制电机--计算电角度以及电角度和机械角度的对应关系---以及foc的控制算法模型及过程(推荐)

1&#xff0c;电角度和机械角度的关系 如何区分电角度和机械角度&#xff1f; 2&#xff0c;foc模型工程&#xff08;推荐&#xff09; SimpleFOC移植STM32&#xff08;四&#xff09;—— 闭环控制 注意速度需要进行低通滤波

使用Docker Compose一键部署前后端分离项目(图文保姆级教程)

一、安装Docker和docker Compose 1.Docker安装 //下载containerd.io包 yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm //安装依赖项 yum install -y yum-utils device-mapper-persistent-data l…

消费电子回暖之际,手机回收厂商如何持续释放“绿色潜力”?

春天到来的暖意&#xff0c;正在消费电子产业链上下游蔓延。 仅就手机这一品类而言&#xff0c;可以看到&#xff0c;2023年手机厂商已经度过寒冬&#xff0c;中国信息通信研究院发布的数据显示&#xff0c;2023年1-12月&#xff0c;我国手机总体出货量累计2.89亿部&#xff0…

新生儿奶瓶怎么选择?5款口碑榜单奶瓶推荐

新生儿奶瓶是每个新手爸妈都要选择的喂养产品&#xff0c;除了喂养宝宝外&#xff0c;还能帮助宝宝渡过戒奶期。然而近年来&#xff0c;市面上出现一些低质量、劣质材料制成的奶瓶&#xff0c;频频被爆安全隐患&#xff0c;给消费者带来极大的不便和风险。那么你知道什么牌子的…
最新文章