51Testing软件测试论坛

标题: Java+Selenium3自动化入门5---如何操作Alert弹框和div盒子模拟的弹框 [打印本页]

作者: 八戒你干嘛    时间: 2019-2-11 14:01
标题: Java+Selenium3自动化入门5---如何操作Alert弹框和div盒子模拟的弹框
说到这里我们首先要先说下Alert是如何来的,一般是用来确认某些操作、输入简单的text或用户名、密码等,根据浏览器的不同,弹出框的样式也不一样,在firebug中是无法获取到该框的元素的,也就是说alert是不属于网页DOM树的。直接看代码!
  1. <html>
  2. <head lang="en">
  3.     <meta charset="UTF-8">
  4.     <title>帅气的老王</title>

  5.             <script language="JavaScript">
  6.               alert("哈哈,我又变帅了")
  7.              </script>
  8.     <script type="text/javascript">
  9.         function getInnerHTML(){
  10.             alert( document.getElementById("tr1").innerHTML);
  11.         }
  12.     </script>


  13.     </head>
  14.     <body>
  15.         <!--
  16.             <script src = "test.js"></script>
  17.       -->
  18.             <input type="button" value="按钮" onclick="alert('hello')"/>
  19.             <table border="1">
  20.                 <tr id="tr1">
  21.                     <th>Firstname</th>
  22.                     <th>Lastname</th>
  23.                 </tr>
  24.                 <tr id="tr2">
  25.                     <td>Peter</td>
  26.                     <td>Griffin</td>
  27.                 </tr>
  28.             </table>
  29.             <br />
  30.             <input type="button" onclick="getInnerHTML()"
  31.                    value="Alert innerHTML of table row" />

  32.     </body>
  33. </html>
复制代码

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

[attach]121571[/attach]

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

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

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

  4. public class AlertAccept {

  5.         public static void main(String[] args) throws Exception {   
  6.       
  7.                 WebDriver driver = new FirefoxDriver();        
  8.                 driver.manage().window().maximize();
  9.          
  10.                 String PhotoUrl = "http://localhost:63342/untitled3/src/lions.html";
  11.                 driver.get(PhotoUrl);
  12.                
  13.                 Thread.sleep(2000);  
  14.         
  15.                 //  swithTo()切换到alert并.getText()获取alert的文本内容
  16.                 System.out.println(driver.switchTo().alert().getText());
  17.                 //处理alert
  18.                 driver.switchTo().alert().accept();
  19.                 System.out.println("弹窗已关闭");
  20.                
  21.                
  22.         }
  23. }
复制代码

控制台输出结果:

  1. 哈哈,我又变帅了
  2. 弹窗已关闭
复制代码

第二个就是div盒子模拟的弹框,比如说百度的登录页面

[attach]121572[/attach]


对于这种弹窗,用alert是解决不了的,因为它是一个div盒子,可以看成是一个新的窗口。




作者: Miss_love    时间: 2020-12-31 09:53
支持分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2