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();
    }
复制代码

六、运行结果

 

posted @   久曲健  阅读(1731)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示