Selenium如何处理网页弹窗

前言

这些是过去学习和工作中积累的个人总结,不过可能会存在一些主观臆断,如果有说错的地方,请指出来哦!

回答

弹窗类型

在WEB中的弹出类型有三种:

  • 警告框alert(message)

    • 用于显示带有一条指定消息和一个 OK 按钮的警告框。
  • 确认框confirm(message)

    • 用于显示一个带有指定消息和 OK 及取消按钮的对话框。
    • 如果用户点击确定按钮,则 confirm() 返回 true。
    • 如果点击取消按钮,则 confirm() 返回 false。
  • 提示框prompt(text,defaultText):

    • 用于显示可提示用户进行输入的对话框。
    • 如果用户单击提示框的取消按钮,则返回 null。
    • 如果用户单击确认按钮,则返回输入字段当前显示的文本。
弹出处理

在WEB自动化中针对弹窗的处理,有以下两种方式:

  • 弹窗可以找到对应元素

    • 则直接使用Selenium提供的八大定位方式处理
  • 弹窗无法定位元素

    • 则使用Selenium提供的Alert对应方法处理

      • switchTo().alert():切换到弹窗
      • getText():获取弹框文本
      • sendKeys(text):在弹窗中输入文本内容
      • accept():点击弹窗中的确认按钮
      • dismiss():点击弹窗中的取消按钮
    • 主要步骤

      • 获取并切换弹出框对象
      • 根据业务需求,获取文本,输入内容,点击确认,点击取消等操作
    • 示例

public class L1ActualCombatCase {
    private static WebDriver driver;

    // 前置条件 driver实例化
    @BeforeAll
    static void setUP() {
        System.setProperty("webdriver.chrome.driver", "src/main/resources/ChromeDriver/chromedriver");
        driver = new ChromeDriver();
    }
    // 后置操作 浏览器退出
    @AfterAll
    static void tearDown() {
        driver.quit();
    }

    //测试步骤
    @Test
    public void elementOperate() throws InterruptedException {
        // 打开得物社区精选的页面
        driver.get("https://vip.ceshiren.com/#/ui_study/frame");
        // 窗口最大化
        driver.manage().window().maximize();
        // 点击页面元素
        driver.findElement(By.id("warning_btn")).click();
        // 切换到弹窗
        Alert alertEle = driver.switchTo().alert();
        System.out.println(alertEle.getText());
        Thread.sleep(2000);
        alertEle.accept();
        Thread.sleep(2000);
    }
}

结果