Selenium+java - 弹出框处理
一、弹出框分类:
弹出框分为两种,一种基于原生JavaScript写出来的弹窗,另一种是自定义封装好的样式的弹出框,本文重点介绍原生JavaScript写出来的弹窗,另一种弹窗用click()基本就能搞定。
原生JavaScript写出来的弹窗又分为三种:
alert
confirm
prompt
二、弹窗处理常用方法:
- alert/confirm/prompt弹出框操作主要方法有:
- driver.switchTo().alert():切换到alert弹出框上
- getText():获取文本值
- accept() :点击"确认"
- dismiss() :点击"取消"或者关闭对话框
- send_keys() :输入文本值 --仅限于prompt,在alert和confirm上没有输入框
三、被页面html源代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>弹窗练习案例</title> <script language="javascript"> function checkup() { if (window.confirm("确定要删除吗?")) { return true; } else { return false; } } function welcome() { var myname = prompt("请输入你的姓名:"); if (myname != null) { alert("你好," + myname); } else { alert("你好 my friend."); } } </script> </head> <body> <input id="alert" value="alert" type="button" onclick="alert('欢迎关注我的公号:软件测试君!请按确认继续!');"/><br> <button id="dialog" onclick="checkup()">删除按钮</button><br> <button id="welcome" onclick="welcome()">点击加入我们</button><br> </body> </html>
四、alert弹窗处理
具体实例代码如下:
@Test public void testAlert() { driver.get("file:///C:/Users/Administrator/Desktop/popup.html"); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.findElement(By.id("alert")).click(); //获取alert对话框 Alert alert = driver.switchTo().alert(); //获取对话框文本 String text = alert.getText(); //打印警告对话框内容 System.out.println(text); //alert对话框属于警告对话框,我们这里只能接受弹窗 alert.accept(); }
五、confirm弹窗处理
具体实例代码如下:
@Test public void testConfirm() { driver.get("file:///C:/Users/Administrator/Desktop/popup.html"); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.findElement(By.id("dialog")).click(); //获取confirm对话框 Alert alert = driver.switchTo().alert(); //获取对话框的内容 String text = alert.getText(); //打印对话框的内容 System.out.println(text); //点击“确认”按钮 alert.accept(); ////# 点击“取消”按钮 //alert.dismiss(); }
六、prompt弹窗处理
具体实例代码如下:
@Test public void testPrompt() { driver.get("file:///C:/Users/Administrator/Desktop/popup.html"); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.findElement(By.id("welcome")).click(); //获取prompt对话框 Alert alert = driver.switchTo().alert(); //获取对话框的内容 String text = alert.getText(); //打印对话框的内容 System.out.println(text); //在弹框内输入信息 alert.sendKeys("软件测试君"); //点击“确认”按钮,提交输入的内容 alert.accept(); }
六、运行结果
优秀不够,你是否无可替代
软件测试交流QQ群:721256703,期待你的加入!!
欢迎关注我的微信公众号:软件测试君

分类:
Selenium +Java
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库