alert、confirm、prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理。
而现在webdriver对这些弹出框做了专门的处理,使用selenium2处理对话框就变得十分方便简洁。

alert、confirm、prompt 不是 JavaScript 核心的函数。

alert 是 BOM 中的成员函数,具体说是 window.alert。

所以说,alert对话框显示在最前,并且禁止了浏览器页面其他的操作。废话不多说,看看怎么用webdriver操作这三种弹出框。

一、操作 Alert 弹框


alert在网页的HTML代码:

<input id="alert" type='button' value='alert' onclick='alert("this is a [alert] window!");'/>

当我们点击这个按钮的时候,就会弹出alert弹框:


package com.automation.alert;import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * 类说明:操作alert弹框 * <br/> * @version 1.0 * 2016年11月19日 下午9:47:12 */ public class AlertDemo { private static WebDriver driver = null ; private static String chromeDriverDir = "D:\\workspace\\A_Test\\resource\\chromedriver.exe"; public static void main(String[] args) { //1.打开浏览器; System.setProperty("webdriver.chrome.driver", chromeDriverDir); driver = new ChromeDriver(); driver.manage().window().maximize(); //打开文件网址; driver.get("file:///E:/desktop/upload.html"); //定位alert按钮对象; WebElement alertButton = driver.findElement(By.id("alert")); //点击alert按钮,弹出alert弹出框 alertButton.click(); try { //获取Alert弹框对象; Alert alertWindow = driver.switchTo().alert(); //获取alert弹框的文本,并打印到控制台; String alertText = alertWindow.getText(); System.out.println(alertText); //点击alert弹出框中的确定按钮; alertWindow.accept(); } catch (NoAlertPresentException e) { System.out.println("尝试操作的alert弹出框未找到!"); e.printStackTrace(); } } }

二、操作confirm弹框


confirm在网页的HTML代码:

<input id="confirm" type='button' value='confirm' onclick='confirm("this is a [confirm] window!");'/>

点击confirm按钮的是,弹出confirm弹框,这个弹框有两个按钮,一个确定按钮,一个取消按钮;


package com.automation.alert;import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * 类说明:操作confirm弹框 * <br/> * @version 1.0 * 2016年11月19日 下午9:46:47 */ public class ConfirmDemo { private static WebDriver driver = null ; private static String chromeDriverDir = "D:\\workspace\\A_Test\\resource\\chromedriver.exe"; public static void main(String[] args) { //1.打开浏览器; System.setProperty("webdriver.chrome.driver", chromeDriverDir); driver = new ChromeDriver(); driver.manage().window().maximize(); //打开文件网址; driver.get("file:///E:/desktop/upload.html"); //定位confirm按钮对象; WebElement confirmButton = driver.findElement(By.id("confirm")); //点击confirm按钮,弹出confirm弹出框 confirmButton.click(); //获取Alert弹框对象; Alert confirmWindow = null; try { confirmWindow = driver.switchTo().alert(); //获取confirm弹框的文本,并打印到控制台; String confirmText = confirmWindow.getText(); System.out.println(confirmText); //点击confirm弹出框中的确定按钮; confirmWindow.accept(); //重新操作,点击confirm弹框的取消按钮; confirmButton.click(); confirmWindow = driver.switchTo().alert(); confirmWindow.dismiss(); } catch (NoAlertPresentException e) { System.out.println("尝试操作的confirm弹出框未找到!"); e.printStackTrace(); } } }

三、操作prompt弹框


prompt在网页的HTML代码:

<input id="prompt" type='button' value='prompt' onclick='prompt("this is a [prompt] window!","1111");'/>

点击prompt按钮的是,弹出prompt弹框,这个弹框有两个按钮、一个输入框;

QQ图片20161119215628.png705x240 12.7 KB


package com.automation.alert;import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * 类说明:操作prompt弹框 * <br/> * @version 1.0 * 2016年11月19日 下午10:02:42 */ public class PromptDemo { private static WebDriver driver = null ; private static String chromeDriverDir = "D:\\workspace\\A_Test\\resource\\chromedriver.exe"; public static void main(String[] args) { //1.打开浏览器; System.setProperty("webdriver.chrome.driver", chromeDriverDir); driver = new ChromeDriver(); driver.manage().window().maximize(); //打开文件网址; driver.get("file:///E:/desktop/upload.html"); //定位prompt按钮对象; WebElement promptButton = driver.findElement(By.id("prompt")); //点击prompt按钮,弹出prompt弹出框 promptButton.click(); //获取Alert弹框对象; Alert promptWindow = null; try { promptWindow = driver.switchTo().alert(); //获取prompt弹框的文本,并打印到控制台; String confirmText = promptWindow.getText(); System.out.println(confirmText); //向prompt弹框中的输入框对象,输入文本; promptWindow.sendKeys("selenium + webdriver!"); //点击prompt弹出框中的确定按钮; promptWindow.accept(); //重新操作,点击prompt弹框的取消按钮; promptButton.click(); promptWindow = driver.switchTo().alert(); promptWindow.dismiss(); } catch (NoAlertPresentException e) { System.out.println("尝试操作的prompt弹出框未找到!"); e.printStackTrace(); } } }

从以上代码可以看出driver.switchTo().alert();这句可以得到 alert \ confirm \ prompt 对话框的对象,然后运用其方法对它进行操作。对话框操作的主要方法有:

getText() 得到它的文本值
accept() 相当于点击它的"确认"
dismiss() 相当于点击"取消"或者叉掉对话框
sendKeys() 输入值,这个alert\confirm没有对话框就不能用了,不然会报错。

我们专注于持续集成,更多原创请关注:www.hordehome.com

转载于:https://www.cnblogs.com/hordehome/p/6406836.html

基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框相关推荐

  1. Java自动化获取页面主题_基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍

    1. 启动浏览器 前边有详细介绍启动三种浏览器的方式(IE.Chrome.Firefox): private WebDriver driver = null; private String chrom ...

  2. java实现浏览器ui中的收藏夹_基于Selenium2+Java的UI自动化(2) - 启动浏览器

    一.准备工作 我们常用的浏览器主要有三个:chrome.Firefox.IE:其中chrome 和 IE 需要下载驱动程序,才能启动浏览器,注意驱动程序有32位和64位两种. 另外:如何查看本机的浏览 ...

  3. Vue项目流程7,交易页面,提交订单,支付页面,利用element UI 以及 QRCode 完成微信支付,弹出框按钮的相关工作,个人中心以及子路由我的订单

    目录 交易页面 提交订单 支付页面 微信支付 个人中心 我的订单 交易页面 1.静态组件及路由跳转 2.获取交易页数据 (1)接口 //获取用户地址信息 地址:/api/user/userAddres ...

  4. 【表格操作栏删除确认弹出框 Popconfirm 气泡确认框 变形,导致确认和取消不在同一行 】

    vben admin 中表格操作栏删除确认弹出框 Popconfirm 气泡确认框 变形,导致确认和取消按钮不在同一行 如图: 原因:因弹出框默认顶部弹出,又在页面边上受到挤压导致,更改弹出方向可解决 ...

  5. python自动化弹框_Python+webdriver自动化脚本弹出框定位

    弹窗类型:弹出框有两种: 页面弹出框(可定位元素能操作)----div-- Windows弹出框(不能直接定位)----alert,confirm,prompt-- 一.页面弹出框 div弹窗不需要切 ...

  6. Python+Selenium UI自动化 - alert/confirm/prompt窗口处理方法

    WebDriver中处理原生JS的alert.confirm以及prompt非常方便,三种弹出窗口均无法直接通过页面元素定位,不关闭窗口无法在页面上做其他操作 语法:         text:返回a ...

  7. Java程序员从笨鸟到菜鸟之(三十)javascript弹出框、事件、对象化编程

    一:弹出框 JavaScript中有三种弹出框:警告(alert).确认(confirm)以及提问(prompt). 1.警告(alert)  在访问网站的时候,你遇到"咚"的一声 ...

  8. java实现ln10_Java程序员从笨鸟到菜鸟之(三十)javascript弹出框、事件、对象化编程...

    一:弹出框 JavaScript中有三种弹出框:警告(alert).确认(confirm)以及提问(prompt). 1.警告(alert) 在访问网站的时候,你遇到"咚"的一声, ...

  9. vue 点击弹出文字_vue实现点击出现操作弹出框的示例

    如上图所示,这次要实现一个点击出现操作弹框的效果:并将这个功能封装成一个函数,便于在项目的多个地方使用. 具体思路是: 封装一个组件,组件保护一个插槽,我们可以根据不同的场景,利用插槽随意在这个弹框里 ...

最新文章

  1. MPB:中大李文均组-​热泉高温细菌分离培养方法
  2. 重启oracle后报01034,ORACLE: ORA-01034, ORA-27123问题处理的分析
  3. 计算机第二章题库,全国计算机二级题库第二章
  4. MicroProfile 2.2 BOM导入支持
  5. 妙到巅峰的8个简洁数学证明(文科生都能看懂),隐隐触摸到一丝只属于神的智慧气息……...
  6. 【安装包】gcc编译器
  7. git revert与git reset
  8. java ajax 返回乱码,解决使用$.ajax的时候得到返回乱码
  9. Scade Suite开发 ARINC 661 (2)Scade Suite基本操作
  10. uniapp 实现识别图片二维码
  11. 2022年电工(初级)考试报名及电工(初级)最新解析
  12. 苹果手机的ipsec
  13. Greenplum 调优--数据分布法则 - 分布列与分区的选择
  14. 什么是Armbian
  15. 软件测试工程师面试的时候该怎么样介绍自己?
  16. 如何清理占用计算机内存,告诉你如何深度清理电脑内存
  17. Neurosim的manual细读(四)
  18. 藉由GZipStream的壓縮,來減少Web Service的傳輸量
  19. Kong网关简介安装
  20. 制作自定义CSDNBLOG皮肤

热门文章

  1. pcb二次钻孔_PCB的内层制作流程,你学会了吗?
  2. html流程图可新增删除,CSS / HTML流程图
  3. linux怎样标识空设备,Linux系统命令------Ubuntu下解决adb设备列表为空
  4. mysql的count()函数如何选择索引,千万级表的count()查询优化实例
  5. linux 下编写.sh文件,不间断执行某文件
  6. 基于Pytorch再次解读NiN现代卷积神经网络和批量归一化
  7. Keras【Deep Learning With Python】实现线性回归模型
  8. 【操作系统】考研の处理机调度算法(看不懂你来打我~!)
  9. python表单防重复提交_防止二次提交(重复提交)
  10. 网站打开速度变慢可以从哪些方面进行分析呢?