自动化测试Selenium(3)

news2024/12/24 8:40:58

目录

WebDriver相关API

打印信息

打印title

打印url

浏览器的操作

浏览器最大化

设置浏览器的宽,高

 操作浏览器的前进, 后退, 刷新

控制浏览器滚动条

键盘事件

键盘单键用法

键盘组合按键用法

鼠标事件


WebDriver相关API

打印信息

打印title

即打印该网址的标题.使用如下:

String title = webDriver.getTitle();

打印url

即打印该网址的url. 使用如下:

String url = webDriver.getCurrentUrl();

 让我们写一个基本的测试单元:

    private static void test04() {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        String title = webDriver.getTitle();
        String url = webDriver.getCurrentUrl();
        System.out.println(title);
        System.out.println(url);
        if(title.equals("百度一下,你就知道") && url.equals("https://www.baidu.com/")) {
            System.out.println("测试通过");
        } else {
            System.out.println("测试不通过");
        }
    }

测试结果:

浏览器的操作

浏览器最大化

我们知道启动的浏览器不是最大化的, 这样不会影响脚本的执行, 但是有时候会影响我们"观看"脚本的执行. 

webDriver.manager.window().maxmize(); (注意这里是"mize"而不是"size"!!!)

相似地还有一个能使得浏览器能变为全屏(就是需要esc才能缩小的那种):

webDriver.manager.window().fullscreen();

结果展示:

设置浏览器的宽,高

最大化还是不够灵活, 能不能随意地设置浏览器的宽, 高显示? 当然也是可以的. 

 webDriver.manager().window().setSize(new Dimension(600, 1000)); //注意这个方法是要创建Dimension对象, 然后传入这个对象, 而不是直接设置宽和高. (Dimension即尺寸的意思)

 操作浏览器的前进, 后退, 刷新

浏览器上有一个后退, 前进按钮, 也相对比较容易实现:

webDriver.navigate().back(); //后退

webDriver.navigate().forward();//前进

webDriver.navigate().refresh();//刷新

这里给出一个测试用例, 自行测试:

    private static void test06() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        webDriver.navigate().back();
        sleep(3000);
        webDriver.navigate().forward();
        sleep(3000);
        webDriver.navigate().refresh();
    }

控制浏览器滚动条

 浏览器滚动条的控制需要依赖js脚本:

((JavaScriptExecutor)webDriver).executeScript("document.documentElement.scrollTop

=10000"); //滑动到最底部

((JavaScriptExecutor)webDriver).executeScript("document.documentElement.scrollTop

=0")//滑动到顶部

测试代码, 自行测试:

    private static void test07() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
        sleep(3000);
        ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=0");
    }

键盘事件

键盘单键用法

使用之前的sendKeys()方法即可实现键盘操作

sendKeys(Keys.TAB); //TAB

sendKeys(Keys.ENTER); //回车

sendKeys(Keys.SPACE); //空格

sendKeys(Keys.ESCAPE);//回退键 (esc)

键盘组合按键用法

这里介绍组合键ctrl + A, ctrl + X, ctrl + V三种用法, 其它的可自行摸索.

sendKeys(CONTROL, "A");

sendKeys(CONTROL, "X");

sendKeys(CONTROL, "V");

测试代码, 自行测试:

    private static void test08() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(CONTROL, "A");
        sleep(3000);
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(CONTROL, "X");
        sleep(3000);
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(CONTROL, "V");
    }

鼠标事件

之前我们已经学了click()方法, 这个就是鼠标左击的操作, 接下来我们来学习一下其它操作.

Actions类用于执行各种鼠标和键盘操作.

contextClick(element)方法用于执行鼠标右击操作.

doubleClick(element)方法用于执行鼠标的双击操作.

dragAndDrop(source, target)方法用于执行拖动操作, 将源元素拖动到目标元素上.

moveToElement(element)方法用于将鼠标移动到指定的元素上.

测试代码,自行测试:

    private static void test09() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        //创建Actions对象
        Actions actions = new Actions(webDriver);
        //找到图片按钮
        WebElement webElement = webDriver.findElement(By.cssSelector("#s_tab > div > a.s-tab-item.s-tab-item_1CwH-.s-tab-pic_p4Uej.s-tab-pic"));
        //移动到指定元素并右击
        /**
         * 注意: perform()方法用于执行构建的操作序列. 在Selenium WebDriver中, 许多动作都需要通过
         * perform()方法来触发实际的执行. 在Actions类中, 使用perform()方法可以执行鼠标移动,
         * 点击, 拖动等操作.
         */
        actions.moveToElement(webElement).contextClick().perform();
    }

 注: perform()方法用于执行构建的操作序列. 在Selenium WebDriver中, 许多动作都需要通过perform()方法来触发实际执行. 在Actions类中, 使用perform()方法可以执行鼠标移动,点击, 拖动等操作.

没有调用perform()方法, 操作序列不会被执行, 因此在使用Actions类时务必记得调用perform()方法来触发操作的实际执行. 就连远在大洋彼岸的五星上将麦克阿瑟也说到:"如果当年在对这个软件进行自动化测试时, 如果我不像当时没有调用perform()方法的话, 我也能够拿满年终奖从而为军队补充军费了罢".

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

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

相关文章

护网行动 | 蓝队应急响应流程概述

了解蓝队应急响应的流程 应急响应通常是指为了应对各种意外事件发生前所做的准备,以及在意外事件发生后所采取的措施。 网络安全应急响应是指对已经发生或可能发送的安全事件进行监控、分析、协调、处理、保护资产安全。 网络安全应急响应主要是为了让人们对网络安全…

idea2023专业版安装破解+maven配置教程

前言 上一篇文章已经介绍了maven在Win10系统的安装配置教程。基于Win10的maven配置环境,本篇文章将介绍idea2023的安装破解教程及maven在idea2023的配置教程(同时会将maven在idea2023的配置教程内容补充至上一篇文章)。 一、idea2023下载安…

【学习】jemter中如何高效使用正则表达式

在Jemter的世界里,正则表达式无疑是一把锐利的剑,它可以帮助我们轻松地解决许多问题。在Jemter的性能测试过程中,我们常常需要提取响应中的某些数据,以便在后续的请求中使用。这时,正则表达式就派上用场了。通过学习如…

Linux进阶篇:Centos7搭建smb服务

Centos7搭建smb服务 1 smb介绍 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域…

C语言学习笔记之指针(二)

指针基础知识:C语言学习笔记之指针(一)-CSDN博客 目录 字符指针 代码分析 指针数组 数组指针 函数指针 代码分析(出自《C陷阱和缺陷》) 函数指针数组 指向函数指针数组的指针 回调函数 qsort() 字符指针 一…

内网隧道技术总结

隧道技术解决的是网络通信问题,因为在内网环境下,我们不同的内网主机管理员会进行不同的网络配置,我们就需要使用不同的方式去控制我们的内网主机。隧道技术是一个后渗透的过程,是可以是我们已经取得了一定的权限,在这…

元数据管理Atlas

文章目录 一、Atlas概述1、Atlas入门2、Atlas架构原理 二、Atlas安装1、安装环境准备1.1 安装Solr-7.7.31.2 Atlas2.1.0安装 2、Atlas配置2.1 Atlas集成Hbase2.2 Atlas集成Solr2.3 Atlas集成Kafka2.4 Atlas Server配置2.5 Kerberos相关配置2.6 Atlas集成Hive 3、Atlas启动 三、…

一次配置Docker环境的完整记录

一次配置Docker环境的完整记录 Docker环境搭建报错与解决报错一报错二报错三 Docker环境搭建 本节介绍了一次配置docker环境的完整记录: 编写Dockerfile文件: FROM pytorch/pytorch:1.10.0-cuda11.3-cudnn8-develRUN rm /etc/apt/sources.list.d/cuda.l…

【每日力扣】15. 三数之和与11. 盛最多水的容器

🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害 15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k…

安全认证Kerberos详解

文章目录 一、Kerberos入门与使用1、Kerberos概述1.1 什么是Kerberos1.2 Kerberos术语1.3 Kerberos认证原理 2、Kerberos安装2.1 安装Kerberos相关服务2.2 修改配置文件2.3 其他配置与启动 3、Kerberos使用概述3.1 Kerberos数据库操作3.2 Kerberos认证操作 二、Hadoop Kerberos…

10个常用的损失函数及Python代码实现

本文深入理解并详细介绍了10个常用的损失函数及Python代码实现。 什么是损失函数? 损失函数是一种衡量模型与数据吻合程度的算法。损失函数测量实际测量值和预测值之间差距的一种方式。损失函数的值越高预测就越错误,损失函数值越低则预测越接近真实值…

Day99:云上攻防-云原生篇K8s安全实战场景攻击Pod污点Taint横向移动容器逃逸

目录 云原生-K8s安全-横向移动-污点Taint 云原生-K8s安全-Kubernetes实战场景 知识点: 1、云原生-K8s安全-横向移动-污点Taint 2、云原生-K8s安全-Kubernetes实战场景 云原生-K8s安全-横向移动-污点Taint 如何判断实战中能否利用污点Taint? 设置污点…

【项目实战】记录一次PG数据库迁移至GaussDB测试(上)

目录 一、说明 1.1、参考文档 1.2、注意事项 1.3、环境基本情况 二、GaussDB新环境安装 2.1 配置操作环境变量 2.1.1 关闭防火墙 步骤1 执行以下命令,检查防火墙是否关闭。 步骤2 执行以下命令,关闭防火墙并禁止开机启动。 步骤3 修改/etc/sel…

济南大学微软校区教室OLED透明屏项目报告

济南大学微软校区教室OLED透明屏项目报告 产品:55寸OLED透明屏 项目时间:2024年04月 项目地点:山东济南 一、项目概述 本次项目旨在为济南大学微软校区的教室配备先进的55寸OLED透明屏,以满足现代化教学需求,提升教学…

虹科Pico汽车示波器 | 免拆诊断案例 | 2016款保时捷911 GT3 RS车发动机异响

一、故障现象 一辆2016款保时捷911 GT3 RS车,搭载4.0 L水平对置发动机(型号为MA176),累计行驶里程约为4.2万km。车主反映,1星期前上过赛道,现在发动机有“哒哒”异响。 二、故障诊断 接车后试车&#xff…

Vue3 + Element-Plus 使用 Table 预览图片发生元素遮挡

Vue3 Element-Plus 使用 Table 预览图片发生元素遮挡 问题代码问题重现解决方法最终效果 问题代码 <el-table-column label"视频" align"center"><template #default"scope" style"display: flex;"><div style"…

Keepalived+LVS+nginx搭建nginx高可用集群

一、简介 nginx是一款非常优秀的反向代理工具&#xff0c;支持请求分发&#xff0c;负载均衡&#xff0c;以及缓存等等非常实用的功能。在请求处理上&#xff0c;nginx采用的是epoll模型&#xff0c;这是一种基于事件监听的模型&#xff0c;因而其具备非常高效的请求处理效率…

Qt 4 QPushButton

Qt 常用控件 QPushButton 实例 Push Button:命令按钮。 入口文件 main.cpp #include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.show();return a.exec(); }头文件 mainwindow.h …

【C 数据结构】单链表

文章目录 【 1. 基本原理 】1.1 链表的节点1.2 头指针、头节点、首元节点 【 2. 链表的创建 】2.0 创建1个空链表&#xff08;仅有头节点&#xff09;2.1 创建单链表&#xff08;头插入法&#xff09;*2.2 创建单链表&#xff08;尾插入法&#xff09; 【 3. 链表插入元素 】【…

rabbitmq每小时自动重启

引言 找了半天&#xff0c;最后通过系统日志发现是因为执行 systemctl restart rabbitmq-server 命令无法返回回调 systemctl 导致超时&#xff0c;自动关机。怀疑是 rabbitmq 与 systemctl 冲突&#xff0c;后 mq 升级版本已修复&#xff0c;可参考&#xff1a;https://github…