自动化测试Selenium(3)

目录

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()方法的话, 我也能够拿满年终奖从而为军队补充军费了罢".

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

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

相关文章

SAP 销售业务中免费货物的会计核算

此博文主要介绍SAP销售业务中免费货物解决方案中,免费货物的会计核算。如果需要进一步了解SAP SD 销售与分销业务中,免费货物的标准解决方案概览,可先了解本博客博文:SAP销售与分销中的免费货物解决方案相关文章: htt…

负采样重要吗?它的理论与应用综述

Does Negative Sampling Matter? A Review with Insights into its Theory and Applications 负采样重要吗?它的理论与应用综述 Does Negative Sampling Matter? A Review with Insights into its Theory and Applications Zhen Yang, Ming Ding, Tinglin Huang,…

一文掌握运维绩效考核指标及实例参考

运维绩效考核需要综合考虑公司的战略和目标,确保考核公正和合理,同时还需要建立合适的管理和收集系统,根据绩效结果进行反馈和奖惩,并落实改进措施。 运维团队合理的绩效考核非常重要,以激励团队成员不断提高,同时确保团队目标的实现。针对运维团队的绩效评估,我们通常…

十一、Yocto集成tcpdump等网络工具

文章目录 Yocto集成tcpdump等网络工具networking layer集成 Yocto集成tcpdump等网络工具 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第十一篇文章: 一、yocto 编译raspberrypi 4B并启动 二、yocto 集成ros2(基于raspberrypi 4B) 三、Yocto创建自定义的lay…

JVM(java虚拟机 详解三个主要的话题:1.JVM 中的内存区域划分2.JVM 的类加载机制3.JVM 中的垃圾回收算法)

jdk java开发工具包 jre java运行时环境 jvm java虚拟机 JDK、JRE、JVM之间的关系? JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。…

【Java】实现一个简单的线程池

📝个人主页:哈__ 期待您的关注 一、线程池的模式 线程池顾名思义就是管理线程的一个池子,我们把创建线程的过程交给线程池来处理,而这个线程池当中的线程都会从阻塞队列当中取获取任务执行。 我们不在直接把任务的创建过程写到…

【信号与系统 - 10】拉普拉斯变换

1 定义 周期信号的傅里叶变换那篇提到了&#xff1a; F ( j w ) ∫ − ∞ ∞ e − j w t f ( t ) d t F(jw)\int^{\infty}_{-\infty}e^{-jwt}f(t)dt F(jw)∫−∞∞​e−jwtf(t)dt 这个定义式需要满足绝对可积&#xff0c;即 ∫ − ∞ ∞ ∣ f ( t ) ∣ d t < ∞ \int…

小图标还不会设计!

ICON图标设计 hello&#xff0c;我是小索奇 image-20230805225451447 你有好奇过这样的图标如何设计的吗&#xff1f; 其实非常简单&#xff0c;仅需要一行代码即可完成&#xff0c;本篇文章就带伙伴们使用&#xff0c;每天看一篇&#xff0c;简单易懂&#xff0c;日久技长~…

MATLAB实现图片栅格化

MATLAB实现图片栅格化 1.读取图片&#xff1a;首先&#xff0c;你需要使用imread函数读取要栅格化的图片。 2.设置栅格大小&#xff1a;确定你希望将图片划分成的栅格大小&#xff0c;即每个栅格的宽度和高度。 3.计算栅格数量&#xff1a;根据图片的总尺寸和栅格大小&#…

应对.halo勒索病毒:如何应对并保护你的数据安全?

导言&#xff1a; 在数字化时代的今天&#xff0c;网络空间已成为人们生活和工作中不可或缺的一部分。然而&#xff0c;随着网络的普及和技术的不断进步&#xff0c;网络安全问题也日益凸显。其中&#xff0c;勒索病毒作为一种极具破坏性的网络攻击手段&#xff0c;已经引起了…

【Linux】小知识点温习---命令

许多常见命令会用&#xff0c;但是很少注意他们的区别&#xff1b;亦或在学习中使用较少&#xff0c;容易忘记&#xff0c;今天做一个回顾。 ls系列 -a:显示所有文件&#xff08;包括隐藏文件&#xff09; -l:将文件以竖列形式显示 -i&#xff1a;显示文件的inode编号 pwd 显…

盲盒一番赏小程序:打开未知的惊喜之旅

在快节奏的生活中&#xff0c;人们总是渴望寻找一份属于自己的小确幸。盲盒一番赏小程序&#xff0c;正是这样一个为你带来无尽惊喜与乐趣的平台。我们精心打造这一小程序&#xff0c;让每一次点击都成为一次全新的探索&#xff0c;让每一次选择都充满无限可能。 盲盒一番赏小…

星链全解1

星链基本信息 星链卫星的寿命约为5年&#xff0c;最终目标是发射42000颗卫星。最初&#xff0c;每颗卫星重约260公斤&#xff0c;与1吨以上的大卫星相比属于“小卫星”。现在&#xff0c;向V2版进化的星链卫星重量近800公斤&#xff0c;约为老一代卫星的3倍。 点击“星链地图…

算法课程笔记——蓝桥云课第二次直播

注意是‘’ 都正确 可以理解为a的首地址也是数字&#xff0c;向右1 %p逻辑地址 Cin cout字符串“”单个字符本身‘’&#xff0c;其他时候不用加 这样就可以 逆运算 bool比较真假<从小到大排 11/25 都输出最省事 变成长度为n1的数组 考虑到整个都可能为一个颜色&#xff0c;…

Ubuntu 20.04.06 PCL C++学习记录(二十六)

[TOC]PCL中点云配准模块的学习 学习背景 参考书籍&#xff1a;《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,&#xff0c;PCL版本为1.10.0&#xff0c;CMake版本为3.16&#xff0c;可用点云下载地址 学习内容 在代码中使用ICP迭代最近点算法&#xff0c;程序随机…

人工智能论文GPT-3(3):2020.5 Language Models are Few-Shot Learners;架构;训练数据集;开源

2.1 模型与架构 我们使用了与GPT-2相同的模型和架构&#xff0c;包括其中描述的改进初始化、预归一化和可逆分词技术&#xff0c;但有所不同的是&#xff0c;我们在Transformer的各层中使用了交替的密集和局部带状稀疏注意力模式&#xff0c;类似于Sparse Transformer 。为了研…

普通人切入抖音的黄金赛道 软件自动生成文字动画视频 3天15个作品涨粉5000

文字动画&#xff0c;就是导入一段文字&#xff0c;用软件可以自动生成一条文字动画视频&#xff0c;因为这是软件自动生成的&#xff0c;所以过原创的话是很简单没什么问题的。 这种视频的特点是什么? 首先第一点就是非常简单&#xff0c;找好素材直接导入软件就可以自动生成…

LabVIEW仪器信息管理系统

LabVIEW仪器信息管理系统 在计量检测实验室的日常工作中&#xff0c;仪器检定校准是一项基础而重要的任务。随着科技的进步和实验室工作量的增加&#xff0c;传统的人工管理方式已经难以满足现代实验室对效率和准确性的要求。开发一套基于LabVIEW的仪器信息管理系统显得尤为必…

【CSAPP/计组】#1 数的存储与表示方法、机器中浮点数加减法详解

文章目录 前言一、定点格式定点整数 二、浮点数的表示方法2.1 浮点数存储2.2 浮点数加减法a. 操作数检查b. 对阶c. 尾数相加与检查溢出d. 结果规格化与溢出处理e.舍入处理 Some tips: 为什么进位/双符号判断法有效的通俗解释&#xff1f;Some tips:符号位拓展 前言 计算机中常…

【图论 单源最短路】100276. 最短路径中的边

本文时间知识点 单源最短路 图论知识汇总 LeetCode100276. 最短路径中的边 给你一个 n 个节点的无向带权图&#xff0c;节点编号为 0 到 n - 1 。图中总共有 m 条边&#xff0c;用二维数组 edges 表示&#xff0c;其中 edges[i] [ai, bi, wi] 表示节点 ai 和 bi 之间有一条…