八戒你干嘛 发表于 2019-2-11 14:01:57

Java+Selenium3自动化入门5---如何操作Alert弹框和div盒子模拟的弹框

说到这里我们首先要先说下Alert是如何来的,一般是用来确认某些操作、输入简单的text或用户名、密码等,根据浏览器的不同,弹出框的样式也不一样,在firebug中是无法获取到该框的元素的,也就是说alert是不属于网页DOM树的。直接看代码!
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>帅气的老王</title>

            <script language="JavaScript">
            alert("哈哈,我又变帅了")
             </script>
    <script type="text/javascript">
      function getInnerHTML(){
            alert( document.getElementById("tr1").innerHTML);
      }
    </script>


    </head>
    <body>
      <!--
            <script src = "test.js"></script>
      -->
            <input type="button" value="按钮" onclick="alert('hello')"/>
            <table border="1">
                <tr id="tr1">
                  <th>Firstname</th>
                  <th>Lastname</th>
                </tr>
                <tr id="tr2">
                  <td>Peter</td>
                  <td>Griffin</td>
                </tr>
            </table>
            <br />
            <input type="button" onclick="getInnerHTML()"
                   value="Alert innerHTML of table row" />

    </body>
</html>

上面的代码大家可以看到在打开的时候,最先弹出的是这样的一个弹框,这就是典型的alert弹窗,当我们不点击确定的时候,这个页面是不会加载下一步的,所以我们会看到页面并没有加载完成,左上角的也是一直显示在加载,右下角会一直显示:正在传输来自localhost的数据。



对于Alert,selenium提供了专门的方法
   /*
         * .accept() 点击alert弹窗上的确定按钮
         * .dismiss() 点击alert弹窗上的取消按钮
         * .getText() 获取alert上的文字信息
         * .sendKeys() 在弹窗上输入文字等信息
         */

下面我们就看看用代码如何去操作alert弹窗的
package com.Lion.D1;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class AlertAccept {

      public static void main(String[] args) throws Exception {   
      
                WebDriver driver = new FirefoxDriver();      
                driver.manage().window().maximize();
         
                String PhotoUrl = "http://localhost:63342/untitled3/src/lions.html";
                driver.get(PhotoUrl);
               
                Thread.sleep(2000);
      
                //swithTo()切换到alert并.getText()获取alert的文本内容
                System.out.println(driver.switchTo().alert().getText());
                //处理alert
                driver.switchTo().alert().accept();
                System.out.println("弹窗已关闭");
               
               
      }
}

控制台输出结果:哈哈,我又变帅了
弹窗已关闭
第二个就是div盒子模拟的弹框,比如说百度的登录页面
对于这种弹窗,用alert是解决不了的,因为它是一个div盒子,可以看成是一个新的窗口。

Miss_love 发表于 2020-12-31 09:53:12

支持分享
页: [1]
查看完整版本: Java+Selenium3自动化入门5---如何操作Alert弹框和div盒子模拟的弹框