自动化测试Selenium(3)

server/2024/10/22 11:10:12/

目录

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.ppmy.cn/server/13383.html

相关文章

Arduino UNO驱动MPR121接近电容式触摸传感器控制WS2812彩灯

简介 MPR121芯片功能强大可用作触摸,电容检测,驱动LED等等.在低速扫描下可以将功 耗降低到8μA,可以处理多达12个独立的触摸板。支持I2C,几乎可以用任何微控 制器连接。可以使用ADDR引脚选择4个地址中的一个,一个I2C2线总线上共有48 个电容触摸板。使用该芯片比使用模拟输入进行…

【论文笔记】RS-Mamba for Large Remote Sensing Image Dense Prediction(附Code)

论文作者提出了RS-Mamba(RSM)用于高分辨率遥感图像遥感的密集预测任务。RSM设计用于模拟具有线性复杂性的遥感图像的全局特征,使其能够有效地处理大型VHR图像。它采用全向选择性扫描模块,从多个方向对图像进行全局建模,从多个方向捕捉大的空间…

51单片机入门_江协科技_27~28_OB记录的自学笔记_AT24C02数据存储秒表

27. AT24C02(I2C总线) 27.1. 存储器介绍 27.2. 存储器简化模型介绍,存储原理 27.3. AT24C02介绍 •AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息 •存储介质:E2PROM •通讯接口:I2…

快速理解mysql事务

什么是mysql事务? 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 mysql事务特性 原子性:事务…

restful请求风格的增删改查-----修改and删除

一、修改&#xff08;和添加类似&#xff09; 前端&#xff1a; <script type"text/javascript">function update(){//创建user对象var user {id:$("#id").val(),username:$("#username").val(),password:$("#password").val…

新技术前沿-2024-大型语言模型LLM的本地化部署

参考快速入门LLM 参考究竟什么是神经网络 1 深度学习 1.1 神经网络和深度学习 神经网络是一种模拟人脑神经元工作方式的机器学习算法,也是深度学习算法的基本构成块。神经网络由多个相互连接的节点(也称为神经元或人工神经元)组成,这些节点被组织成层次结构。通过训练,…

大型组网使用BFD提高可靠性

学习目标&#xff1a; 1. 当前现网业务存在哪些问题&#xff1f; 2. BFD的工作机制讲解&#xff1b; 3. BFD联动静态路由及OSPF实战&#xff1b; -- BFD - 双向转发检测 -- 通用技术 - 各厂商都支持 - 介质无关 - 协议无关 - 规划地址和配置地址&#xff1a; …

【python】随机模拟——赶火车问题、醉汉回家

问题描述 1.赶火车问题。2.模拟二维随机游动&#xff08;醉汉回家&#xff09; 1.赶火车问题。 一列列车从A站开往B站&#xff0c;某人每天赶往B站上车。他已经了解到火车从A站到B站的运行时间是服从均值为30min&#xff0c;标准差为2min的正态随机变量。火车大约下午13&#…