Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【测试篇】探秘自动化测试函数:解锁高效测试新路径

【测试篇】探秘自动化测试函数:解锁高效测试新路径

作者头像
用户11288949
发布于 2025-03-26 06:10:54
发布于 2025-03-26 06:10:54
5800
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

📚️1.操作选择元素

🚀1.1点击提交

此时我们在浏览器进行选择点击元素后,可以使用一下代码进行模拟点击的操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.findElement(By.cssSelector("#su")).click();

这里使用click进行点击事件模拟;

🚀1.2模拟输入

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  driver.findElement(By.cssSelector("#kw")).sendKeys("雷霆万钧");

这里使用sendKeys进行输入事件模拟;

🚀1.3清除内容

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.findElement(By.cssSelector("#kw")).sendKeys("我爱游戏");
driver.findElement(By.cssSelector("#kw")).clear();
driver.findElement(By.cssSelector("#kw")).sendKeys("我爱学习");

这里使用clear进行清除输入框的事件模拟;

🚀1.4 获取文本信息

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 System.out.println(driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(1)")).getText());

这里使用getText进行获取文本的操作;

当然如果这里的元素是一个属性那么就要使用:getAttribute("属性名称")进行获取属性的操作;

🚀1.5获取标题,URL

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void getUrlAndTitle(){
        createDriver();
        System.out.println(driver.getCurrentUrl());
        System.out.println(driver.getTitle());
        driver.quit();
    }

获取这里的URL是getCurrentUrl,然后获取标题为getTitle;

📚️2.窗口的操作

🚀2.1句柄的操作

提示:在每个页面都有一个drive对应的句柄,如果跳转另一个页面后(打开了两个页面),那么就要操作句柄的转换;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 //句柄的操作
    void getHandle(){
        //这里要点击进入另一个页面
        createDriver();
        driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(1) > a")).click();
        //此时进入了另一个页面,更换driver句柄
        //获取当前句柄
        String concurrentDriver = driver.getWindowHandle();
        //获取所有页面句柄
        Set<String> allDrivers = driver.getWindowHandles();
        for(String handle : allDrivers){
            if(handle != concurrentDriver){
                 driver.switchTo().window(handle);
            }
        }

注意:我们要获取当前页面的drive句柄,然后再次获取全部页面的句柄;最后如果过当前页面不为之前获取的页面,那么就要使用if语句进行句柄的转换;

🚀2.2窗口的调整

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void changeWindow() throws InterruptedException {
        createDriver();
        driver.manage().window().minimize();
        Thread.sleep(3000);
        driver.manage().window().maximize();
        Thread.sleep(3000);
        //全屏窗⼝
        driver.manage().window().fullscreen();
        Thread.sleep(3000);
        //⼿动设置窗⼝⼤⼩
        driver.manage().window().setSize(new Dimension(1024,768));
        driver.quit();
    }

解释:第一个minize即最小化,然后就是最大化,全屏,最后规定尺寸大小;

3.3屏幕截图

我们这里首先要进行依赖的引入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
File file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file,new File(filename));

注意:copyFile中第一个file是我们截图的文件,然后后面就是我们保存文件的路径;

🚀2.3关闭窗口

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.close();

但是如果存在两个close,关闭两个页面,那么注意:将这里的driver转化,close会将对应的句柄进行释放,所以必须进行句柄修改;

📚️3.等待

🚀3.1强制等待

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Thread.sleep(1000);

这里的1000指的就是1000ms,那么所以就是直接强制等待1s;(等待的主要的作用就是在等待渲染,防止在查找元素时,元素本来存在,但是由于没有渲染出来,导致找不到元素)

🚀3.2隐式等待

隐式等待是⼀种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码继续执⾏,直到超时没找到元素才会报错。 implicitlyWait() 参数:Duration类中提供的毫秒、秒、分钟等⽅法

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));

注意:隐式等待的作用域是全局中;

🚀3.3显示等待

显⽰等待也是⼀种智能等待,在指定超时时间范围内只要满⾜操作的条件就会继续执⾏后续代码

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new WebDriverWait(driver, Duration.ofSeconds(3)).
                until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#\\31  > div > div > div > div > div > div.header-wrapper_3m6nI > div.cos-row.row-text_1L24W.row_4WY55 > div > div > div.cos-flex.cos-items-center > div.title-wrapper_XLSiK > a > div > p > span > span")));

注意:

• elementToBeClickable(By locator) ‒ ⽤于检查元素的期望是可⻅的并已启⽤,以便您 可以单击它。 • textToBe(Bylocator,String str) - 检查元素。 • presenceOfElementLocated(Bylocator) ‒ 检查⻚⾯的 DOM 上是否存在元素。 • urlToBe(java.lang.String url) ‒ 检查当前⻚⾯的 URL 是⼀个特定的 URL;

当然这里还有其他的方法~~~

📚️4.浏览器导航

🚀4.1打开网站

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.navigate().to("https://selenium.dev");

driver.get("https://selenium.dev");

注意:这两种方法都是打开网站的操作,没有什么区别;

🚀4.2浏览器的前进后退域刷新

代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.navigate().back();
driver.navigate().forward();
driver.navigate().refresh();

对应的就是上述的按键;

📚️5.弹窗

具体的代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Alert alert = driver.switchTo.alert();
//输入内容
alert.sendKeys("");
//确认
alert.accept();
//取消
alert.dismiss();

大致就是:点击进入弹框过后,出现了输入框,通过sendKey进行输入;

然后accept进行确认,然后dismiss进行取消;

📚️6.文件上传

点击⽂件上传的场景下会弹窗系统窗⼝,进⾏⽂件的选择。selenium⽆法识别⾮web的控件,上传⽂件窗⼝为系统⾃带,⽆法识别窗⼝元素但是可以使⽤sendkeys来上传指定路径的⽂件,达到的效果是⼀样的

文件上传代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WebElement ele = driver.findElement(By.cssSelector("body > div > div > 
input[type=file]"));
2 ele.sendKeys("D:\\selenium2html\\selenium2html\\upload.html");

📚️7.浏览器参数设置

🚀7.1无头模式设置

一般来说,我们启动浏览器后,直接就是可见式的看见浏览器的启动,但是设置无头模式后,直接在后台运行,就不用盯着浏览器看了;

代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        WebDriverManager.chromedriver().setup();
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        //设置无头模式
        options.addArguments("-headless");

        WebDriver driver = new ChromeDriver(options);

options.addArguments("--remote-allow-origins=*");设置网址访问权限; options.addArguments("-headless");设置无头模式;

🚀7.2浏览器加载策略

代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 void changePage(){
        WebDriverManager.chromedriver().setup();
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        //options.setPageLoadStrategy(PageLoadStrategy.NORMAL);
        //options.setPageLoadStrategy(PageLoadStrategy.NONE);
        //options.setPageLoadStrategy(PageLoadStrategy.EAGER);

        WebDriver driver = new ChromeDriver(options);
        driver.get("https://www.baidu.com/");
        driver.quit();
    }

options.setPageLoadStrategy(PageLoadStrategy.NORMAL):即默认加载,即全部数据进行加载;

options.setPageLoadStrategy(PageLoadStrategy.NONE):DOM访问已准备就绪,但是图像资源可能还在加载;

options.setPageLoadStrategy(PageLoadStrategy.EAGER):完全不会阻塞webdriver;会导致什么资源都没加载出来;

📚️8.总结

本期小编主要讲解了关于自动化测试的函数,涉及到操作元素,窗口的操作,等待,浏览器导航,弹窗操作,文件上传以及浏览器参数设置;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【项目测试】博客系统—Selenium自动化测试、编写测试用例
什么是UI测试呢——全称是用户界面测试(User Interface Testing)
三三是该溜子
2025/02/26
2150
【项目测试】博客系统—Selenium自动化测试、编写测试用例
Selenium
自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。
橘子君丶
2024/04/10
3361
Selenium
【软件测试】自动化测试selenium(二)
我们可以看到,submit和click的效果是一样的,但是submit存在一定的弊端: 如果点击的元素放在form标签中,此时使用submit实现的效果和click是一样的.如果点击的元素放在非form标签中,此时使用submit会报错! 如下:(此时submit操作的不是from标签下的元素)
xxxflower
2023/10/16
3900
【软件测试】自动化测试selenium(二)
[测试报告]比特知识论坛
本项目是一个基于 SSM(Spring+SpringMVC+MyBatis)框架搭建的论坛系统。该系统为用户提供了一个开放、便捷的论坛交流平台。用户可以在论坛上发布主题帖、回复他人帖子,进行思想交流和问题讨论。系统具有完善的用户管理功能,包括注册、登录、个人资料设置等。通过 Spring 的依赖注入和面向切面编程,实现了代码的高内聚低耦合。MyBatis 方便地进行数据库操作,确保数据的高效存储和检索。SpringMVC 则负责处理用户请求和响应,提供流畅的用户体验。该论坛系统界面简洁美观,功能实用,能够满足不同用户的交流需求。
黎鹤舞
2025/03/11
1130
[测试报告]比特知识论坛
【测试篇】对于项目的自动化测试经历和踩过的“坑”我有话要说
当然这里小编设计得比较粗糙,在其实在自动化测试中,有一些接口并没有进行测试,所以为了方便演示,选了几个有代表性的UI接口;
用户11288949
2025/03/27
970
【测试篇】对于项目的自动化测试经历和踩过的“坑”我有话要说
自动化-Selenium 3-常用API(Java版)
Actions类提供的鼠标事件常用方法(perform()执行所有Actions中存储的行为):
wangmcn
2022/07/22
1.2K0
自动化-Selenium 3-常用API(Java版)
自动化测试如此容易!多语言自动化测试框架 Selenium 编程(C#篇)
Selenium 是功能强大的自动化测试工具集,是支持 Web 浏览器自动化的一系列工具和库的总括项目,一共包括以下三个项目:
痴者工良
2023/03/11
4.2K0
自动化测试如此容易!多语言自动化测试框架 Selenium 编程(C#篇)
【软件测试】自动化常用函数
web ⾃动化测试的操作核⼼是能够找到⻚⾯对应的元素,然后才能对元素进⾏具体的操作。常⻅的元素定位⽅式⾮常多,如 id,classname,tagname,xpath,cssSelector 常⽤的主要由 cssSelector 和 xpath
椰椰椰耶
2024/11/19
1550
【软件测试】自动化常用函数
【测试篇】关于自动化测试前言,自动化测试的基本概念
在平时的生活中,自动化到处都是,自动门,自动洒水器,自动除草机;但是在软件测试中,目的概念如下所示:
用户11288949
2025/03/23
1050
【测试篇】关于自动化测试前言,自动化测试的基本概念
【UI自动化-3】UI自动化元素操作专题
在熟悉了元素定位之后,我们接下来就要学习对定位到的元素进行操作这项内容了。我简要做了个总结,如下图:
云深i不知处
2020/09/16
3K0
多用户网页在线聊天室(测试报告)
随着现代互联网的快速发展,实时通信系统已成为人们日常交流的重要工具。为了让这个聊天室既好用又稳定,项目里加了一套“自动检查”系统(自动化测试)。比如登录、加好友、发消息这些核心功能,不用手动一遍遍测,而是用写好的程序自动模拟操作,快速发现问题。这样一来,无论用哪种浏览器或者网络环境,聊天功能都能稳稳运行,用户体验更流畅。
黎鹤舞
2025/03/13
1761
多用户网页在线聊天室(测试报告)
selenium学习笔记
Selenium是一个自动化测试工具,用于在Web应用程序中模拟用户操作。它提供了一组API,可以通过编程方式控制浏览器,并模拟用户的交互行为,例如点击、输入文本和导航等。Selenium支持多种编程语言,包括Java、C#、Python、Ruby、JavaScript等,并可以在多个浏览器和操作系统上运行测试。Selenium的目标是帮助测试人员自动化测试过程,提高测试效率和测试质量。
九转成圣
2024/05/29
2810
selenium学习笔记
java + selenium + testng实现简单的UI自动化
 可以在https://mvnrepository.com里面搜索需要的库,选择版本,复制其依赖信息
未来sky
2018/08/30
8.2K0
java + selenium + testng实现简单的UI自动化
selenium-java web自动化测试工具
本篇文章由来,这两天整理了下自己经常使用而且很熟练的项目,今天突然想起漏了一个,补上了,但想到还没对应的博客,那就写一个简单的
肖哥哥
2018/08/02
2.9K0
selenium-java web自动化测试工具
《手把手教你》系列技巧篇(十八)-java+ selenium自动化测试-元素定位大法之By css中卷(详细教程)
按计划今天宏哥继续讲解倚天剑-css的定位元素的方法:ID属性值定位、其他属性值定位和使用属性值的一部分定位(这个类似xpath的模糊定位)。
北京-宏哥
2021/08/20
1.6K0
《手把手教你》系列技巧篇(十八)-java+ selenium自动化测试-元素定位大法之By css中卷(详细教程)
《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法By css上卷
CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式。CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性。下面详细介绍CSS定位方式的使用方法。xpath定位是“屠龙刀”,那CSS定位就是"倚天剑了",相对CSS来说,具有语法简单,定位速度快等优点。
北京-宏哥
2021/09/13
1.5K0
​Java自动化测试 (元素定位 23)
使用脚本断点调试定位是否正确是一个方法,当时在我的实际工作中,元素定位代码的封装较深,所以修改查询元素的内容较麻烦,所以直接使用Xpath Helper可以方便的进行开发前的测试。不管是爬虫爬去页面内容还是自动化测试都很实用。
zx钟
2020/09/04
1.2K0
​Java自动化测试 (元素定位 23)
全国大学生软件测试大赛Web应用大赛常用测试语句
FGGIT
2024/10/15
1110
自动化测试selenium在小公司的成功实践
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
顾翔
2019/12/12
1.6K0
自动化测试selenium在小公司的成功实践
Selenium 4以后,再不相见的API
Selenium4前线快报中提到了Selenium 4的最新进展,伴随着Selenium 4各种功能的增强,最近的版本中也包含了一些旧API的更改和启用。如果你准备从Selenium 3升级到Selenium 4,那么最好留意这些更新。
FunTester
2021/08/18
1.6K0
推荐阅读
相关推荐
【项目测试】博客系统—Selenium自动化测试、编写测试用例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验