Selenium常用自动化函数

news2025/3/20 12:07:12

 博主主页: 码农派大星.

    数据结构专栏:Java数据结构

 数据库专栏:数据库

JavaEE专栏:JavaEE

软件测试专栏:软件测试

关注博主带你了解更多知识

目录

1.元素的定位

1.1 定位步骤

1,要想定位,就先打开开发者工具

2,先点击左上角图标

1.2 cssSelector

1.3 xpath 

2.操作测试对象 

2.1 点击/提交对象

2.2 模拟按键输⼊

2.3 清除⽂本内容

2.4 获取⽂本信息

2.5 获取当前⻚⾯标题

2.6获取当前⻚⾯URL

3.窗⼝

3.1 窗⼝设置⼤⼩

3.2 窗⼝切换

3.3 屏幕截图

3.4关闭窗⼝

4、等待

4.1 强制等待

4.2 隐式等待

4.3 显⽰等待

优点:

缺点:

5.浏览器导航 

1,打开⽹站

2,浏览器的前进、后退、刷新

6. 弹窗

6.1警告弹窗

6.2 确认弹窗

6.3 提⽰弹窗

7. ⽂件上传

8.浏览器参数设置

1.设置⽆头模式

2.设置浏览器加载策略


在自动化测试中,编写常用的函数可以提高代码的复用性和可维护性。以下是一些在自动化测试中常用的函数示例,这些函数涵盖了常见的操作,如启动浏览器、定位元素、点击、输入文本、等待、断言等

1.元素的定位

Web自动化测试的核心确实是能够准确找到页面上的元素,并在这些元素上执行操作。无论是点击按钮、输入文本、验证页面内容,还是执行其他交互,所有的操作都依赖于能够定位到这些元素

常⻅的元素定位⽅式⾮常多,如id,classname,tagname,xpath,cssSelector

常⽤的主要由cssSelector和xpath

1.1 定位步骤

1,要想定位,就先打开开发者工具

方式有三种:

鼠标右键->检查

Ctrl键+shift键+i

F12

2,先点击左上角图标

再点击要找的对应元素,就会出现定位 

1.2 cssSelector

选择器的功能:选中⻚⾯中指定的标签元素

选择器的种类分为基础选择器和复合选择器,常⻅的元素定位⽅式可以通过id选择器和⼦类选择器来 进⾏定位

定位百度⾸⻚的“百度一下”元素,可以使⽤通过id选择器和⼦类选择器进⾏定位:"btn self-btn bg s_btn"

crtl+F搜索复制的selector ,就可以定位所在元素位置

1.3 xpath 

XPath(XML Path Language)是一种在XML和HTML文档中查找信息的语言,它使用路径表达式来选定文档中的节点

获取HTML⻚⾯所有的节点

//*

获取HTML⻚⾯指定的节点

//[指定节点]

获取⼀个节点中的直接⼦节点

/

获取⼀个节点的⽗节点

..

实现节点属性的匹配

[@...]

采用xpath方式来定位百度⾸⻚的“百度一下”元素

crtl+F搜索复制的xpath ,就可以定位所在元素位置 

2.操作测试对象 

对元素进⾏操作,常⻅的操作,有点击、提交、输⼊、清 除、获取⽂本

2.1 点击/提交对象

click()
 //找到百度⼀下按钮并点击
 
driver.findElement(By.cssSelector("#su")).click();

2.2 模拟按键输⼊

sendKeys("")
  driver.findElement(By.cssSelector("#kw")).sendKeys("2025大年三十倒计时计时器");

2.3 清除⽂本内容

输⼊⽂本后⼜想换⼀个新的关键词,这⾥就需要⽤到 clear()

 driver.findElement(By.cssSelector("#kw")).sendKeys("我爱游戏");
 driver.findElement(By.cssSelector("#kw")).clear();
 driver.findElement(By.cssSelector("#kw")).sendKeys("我爱学习");

2.4 获取⽂本信息

getText();
 List<WebElement> elements = driver.findElements(By.cssSelector("#hotsearch-content-wrapper > li > a > span.title-content-title"));

        for (int i = 0; i < 10;i++){
            System.out.println(elements.get(i).getText());
        }

不可以通过 getText() 获取到“百度⼀下按钮”上的⽂字“百度⼀下”

⽂本和属性值获取方式不一样,获取属性值需要使⽤⽅法getAttribute(" 属性名称 ") ;

2.5 获取当前⻚⾯标题

getTitle();

2.6获取当前⻚⾯URL

getCurrentUrl() ;

3.窗⼝

3.1 窗⼝设置⼤⼩

//窗⼝最⼤化
driver.manage().window().maximize();

 //窗⼝最⼩化
driver.manage().window().minimize();

 //全屏窗⼝
driver.manage().window().fullscreen();

 //⼿动设置窗⼝⼤⼩
driver.manage().window().setSize(new Dimension(1024, 768));

3.2 窗⼝切换

1)获取当前⻚⾯句柄: driver.getWindowHandle();

2)获取所有⻚⾯句柄: driver.getWindowHandles();

3)切换当前句柄为最新⻚⾯

        //点击新闻
        driver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();

        String curHandle = driver.getWindowHandle();

        Set<String> allHandle = driver.getWindowHandles();
        for(String handle : allHandle){
            if (handle != curHandle) {
                //切换页面
                driver.switchTo().window(handle);
            }
        }
        //测试百度新闻首页
        driver.findElement(By.cssSelector("#city_name"));

3.3 屏幕截图

屏幕截图⽅法需要额外导⼊包:

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
void Screen (String str) throws IOException {

        //屏幕截图
        SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sim2 = new SimpleDateFormat("HHmmss");

        String dirTime = sim1.format(System.currentTimeMillis());
        String fileTime = sim1.format(System.currentTimeMillis());

        String filename = "./src/test/image/" + dirTime +"/" + str +"-"+fileTime+".png";
        System.out.println("filename:"+filename);
        File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        //srcFile放到指定位置
        FileUtils.copyFile(srcFile,new File(filename));


    }

3.4关闭窗⼝

driver.close(); 
注意:窗⼝关闭后 driver 要重新定义

4、等待

4.1 强制等待

Thread.sleep();

优点:使⽤简单,调试的时候⽐较有效,易理解

缺点:影响运⾏效率,浪费⼤量的时间

4.2 隐式等待

隐式等待是⼀种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码 继续执⾏,直到超时没找到元素才会报错

implicitlyWait () ;

参数:Duration类中提供的毫秒、秒、分钟等⽅法

//隐式等待5秒
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));

隐式等待作⽤域是整个脚本的所有元素。即只要driver对象没有被释放掉(driver.quit()),隐式等待 就⼀直⽣效。

4.3 显⽰等待

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

new WebDriverWait(driver, Duration.ofSeconds(3)).until($express);

 • elementToBeClickable(By locator)‒⽤于检查元素的期望是可⻅的并已启⽤,以便您可以单击它。

• textToBe (Bylocator , String str)-检查元素。

• presenceOfElementLocated(Bylocator)‒检查⻚⾯的DOM上是否存在元素。

• urlToBe(java.lang.String url)‒检查当前⻚⾯的URL是⼀个特定的URL

优点:

  1. 灵活性高:显式等待可以针对每个元素和场景设置不同的等待时间和条件。比如,等待元素可点击、可见、存在于DOM中等,这样可以根据实际情况灵活调整。
  2. 避免不必要的等待:只有在满足条件时才会继续执行,可以减少等待时间,不像隐式等待那样可能导致不必要的延迟。
  3. 精确控制:你可以选择不同的等待条件(如元素可见、可点击、元素存在等),适用于更复杂的场景,提供更高的控制权。

缺点:

  1. 需要更多的代码:每次使用显式等待时,都需要明确指定等待的条件和最大等待时间,可能导致代码更复杂。
  2. 可能增加代码冗余:在不同地方使用显式等待时,如果处理方式相似,可能会导致冗余的代码。

5.浏览器导航 

1,打开⽹站

 // 更⻓的⽅法
 
driver.navigate().to("https://selenium.dev");
 // 简洁的⽅法
 
driver.get("https://selenium.dev");

2,浏览器的前进、后退、刷新

 driver.navigate().back();
 driver.navigate().forward();
 driver.navigate().refresh();

6. 弹窗

6.1警告弹窗

 Alert alert = driver.switchTo.alert();
 //确认
alert.accept()

6.2 确认弹窗

Alert alert = driver.switchTo.alert();
 //确认
alert.accept()
 //取消
alert.dismiss()

6.3 提⽰弹窗

 Alert alert = driver.switchTo.alert();
 alert.sendKeys("hello");
 alert.accept();
 alert.dismiss();

7. ⽂件上传

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

 WebElement ele = driver.findElement(By.cssSelector("body > div > div > 
input[type=file]"));
 ele.sendKeys("D:\\selenium2html\\selenium2html\\upload.html");

8.浏览器参数设置

1.设置⽆头模式

启用无头模式(没有显示的浏览器界面),这通常用于自动化测试

Chrome0ptions options =new Chrome0ptions();
options.addArguments("-headless");

2.设置浏览器加载策略

options.setPageLoadStrategy(PageLoadStrategy.NONE);

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

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

相关文章

【故障排除】ls: command not found 终端命令失效的解决办法

【TroubleShooting】ls: command not found 终端命令失效的解决办法 A Solution to Solve “Command not found” of Terminal on Mac 一直在使用心爱的MacBook Pro的Terminal&#xff0c;并且为她定制了不同的Profile。 这样&#xff0c;看起来她可以在不同季节&#xff0c…

12.翻转、对称二叉树,二叉树的深度

反转二叉树 递归写法 很简单 class Solution { public:TreeNode* invertTree(TreeNode* root) {if(rootnullptr)return root;TreeNode* tmp;tmproot->left;root->leftroot->right;root->righttmp;invertTree(root->left);invertTree(root->right);return …

数字孪生智慧停车管理可视化平台

采用图扑可视化技术搭建智慧停车管理平台&#xff0c;实现了全面的数据整合与实时监控&#xff0c;提升了停车场运营效率和用户体验。通过 HT 可视化界面&#xff0c;管理者能够实时观察和分析停车位使用情况&#xff0c;进行精准调度与优化决策。

win10 llamafactory模型微调相关②

微调 使用微调神器LLaMA-Factory轻松改变大语言模型的自我认知_llamafactory 自我认知-CSDN博客 【大模型微调】使用Llama Factory实现中文llama3微调_哔哩哔哩_bilibili 样本数据集 &#xff08;数据集管理脚本处需更改&#xff0c;见报错解决参考1&#xff09; 自我认知微…

车载测试工具 --- CANoe VH6501 进行Not Acknowledge (NAck) 测试

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

使用 AlexNet 实现图片分类 | PyTorch 深度学习实战

前一篇文章&#xff0c;CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课&#xff1a;引领人工智能新时代【梗直哥瞿炜】 使用 AlexNet 实现图片分类…

Linux系统引导与服务管理

目录 一、Linux引导过程 1、引导过程概述 1.1、BIOS开机自检 1.2、MBR读取 1.3、加载引导加载程序&#xff08;GRUB&#xff09; 1.4、内核加载 1.5、初始化进程&#xff08;init&#xff09; 二、服务 2.1、服务类型 2.2、服务管理工具 三、运行级别 四、systemd …

【Hadoop】大数据权限管理工具Ranger2.1.0编译

目录 ​编辑一、下载 ranger源码并编译 二、报错信息 报错1 报错2 报错3 报错4 一、下载 ranger源码并编译 ranger官网 https://ranger.apache.org/download.html 由于Ranger不提供二进制安装包&#xff0c;故需要maven编译。安装其它依赖&#xff1a; yum install gcc …

C++ 使用CURL开源库实现Http/Https的get/post请求进行字串和文件传输

CURL开源库介绍 CURL 是一个功能强大的开源库&#xff0c;用于在各种平台上进行网络数据传输。它支持众多的网络协议&#xff0c;像 HTTP、HTTPS、FTP、SMTP 等&#xff0c;能让开发者方便地在程序里实现与远程服务器的通信。 CURL 可以在 Windows、Linux、macOS 等多种操作系…

探店小程序:解锁商业新生态,定制未来

在数字化浪潮席卷全球的今天&#xff0c;商业的边界正在被重新定义。随着移动互联网技术的飞速发展&#xff0c;探店小程序作为一种新兴的商业模式&#xff0c;正以其独特的优势迅速成为连接商家与消费者的桥梁。我们刚刚为一家客户成功交付了一款集分销、分润、商业模式定制开…

【人工智能】如何在VSCode中使用DeepSeek?

文章目录 前言一、准备工作二、安装DeepSeek插件步骤1、扩展图标搜索DeepSeep2、安装DeepSeek插件3、使用测试DeepSeekBito文心一言 结论 前言 介绍在VSCode中调用DeepSeek插件工具&#xff0c;可以进行对话、编码。 一、准备工作 确保已经安装好了VSCode软件。 二、安装D…

机器学习 - 进一步理解最大似然估计和高斯分布的关系

一、高斯分布得到的是一个概率吗&#xff1f; 高斯分布&#xff08;也称为正态分布&#xff09;描述的是随机变量在某范围内取值的概率分布情况。其概率密度函数&#xff08;PDF&#xff09;为&#xff1a; 其中&#xff0c;μ 是均值&#xff0c;σ 是标准差。 需要注意的是…

Office/WPS接入DeepSeek等多个AI工具,开启办公新模式!

在现代职场中&#xff0c;Office办公套件已成为工作和学习的必备工具&#xff0c;其功能强大但复杂&#xff0c;熟练掌握需要系统的学习。为了简化操作&#xff0c;使每个人都能轻松使用各种功能&#xff0c;市场上涌现出各类办公插件。这些插件不仅提升了用户体验&#xff0c;…

如何在Android Studio中开发一个简单的Android应用?

Android Studio是开发Android应用的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多强大的功能&#xff0c;使得开发者能够高效地创建Android应用。如果你是Android开发的初学者&#xff0c;本文将引导你如何在Android Studio中开发一个简单的Android应用…

第40天:Web开发-JS应用VueJS框架Vite构建启动打包渲染XSS源码泄露代码审计

#知识点 1、安全开发-VueJS-搭建启动&打包安全 2、安全开发-VueJS-源码泄漏&代码审计 一、Vue搭建创建项目启动项目 1、Vue 框架搭建->基于nodejs搭建&#xff0c;安装nodejs即可 参考&#xff1a;https://cn.vuejs.org/ 已安装18.3或更高版本的Node.js 2、Vue 创建…

[数据结构] Set的使用与注意事项

目录 Set的说明 常见方法说明 注意事项 TreeSet使用案例 Set的说明 Set与Map主要的不同有两点: Set是继承自Collection的接口类,Set中只存储了Key. 常见方法说明 方法解释boolean add(E e)添加元素,但重复元素不会被添加成功void clear()清空集合boolean contains(Object…

安当SLA操作系统登录双因素认证:全方位保障Windows系统登录安全

一、产品概述 在当今数字化时代&#xff0c;Windows系统面临着诸多安全挑战&#xff0c;如弱口令问题等。安当SLA&#xff08;System Login Agent&#xff09;作为一款强大的双因素登录认证产品&#xff0c;通过支持OTP动态口令和USBKey硬件令牌认证&#xff0c;有效解决多种W…

操作系统|ARM和X86的区别,存储,指令集

文章目录 主频寄存器寄存器在硬件中的体现是什么寄存器的基本特性硬件实现寄存器类型 内存和寄存器的区别内存&#xff08;Memory&#xff09;和磁盘&#xff08;Disk&#xff09;指令的执行ARM Cortex-M3与Thumb-2指令集Thumb-2 与流水线虚拟地址指令的执行 多核CPU芯片间的通…

Mp4视频播放机无法播放视频-批量修改视频分辨率(帧宽、帧高)

背景 家人有一台夏新多功能 视频播放器(夏新多功能 视频播放器),用来播放广场舞。下载了一些广场舞视频, 只有部分视频可以播放,其他视频均无法播放,判断应该不是帧速率和数据速率的限制, 分析可能是播放器不支持帧高度大于720的视频。由于视频文件较多,需要借助视频编…

【浏览器多开】Google Chrome 谷歌浏览器分身术

谷歌浏览器分身术&#xff08;多开&#xff09;&#xff1a; 复制已有谷歌浏览器图标—>右键–>属性的目标栏中&#xff0c;添加 --user-data-dir自定义文件夹路径 参数。 例如&#xff1a; C:\MySpace\02Installed\Chrome\Chrome-bin\99.0.4844.51\chrome.exe –user-d…