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();
}
六、运行结果

Selenium+java - 弹出框处理的更多相关文章
- Java 学习笔记 (二) Selenium WebDriver Java 弹出框
下面这段实例实现了以下功能: 1. profile使用用户本地电脑上的 (selenium 3有问题.因为selenium 3把profile复制到一个temp文件夹里,但并不复制回去.所以每次打开仍 ...
- 自动化测试-12.selenium的弹出框处理
前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt ...
- selenium浏览器弹出框alert 操作
1.简介 在WebDriver中要处理JS生成的alert.confirm以及prompt,需要 switch_to.alert() 来选取(定位)警告弹窗,在对弹窗进行关闭.输入等信息操作. 2.操 ...
- Selenium Webdriver弹出框的种种类型
普通弹出框 div 一般这种 弹出框都属于dom的一部分,我们查看一下页面源码就可以定位到改弹出框了,然后定位下右上角的那个关闭, 这里有id,所以很方便通过 dr.findElement(By.id ...
- Selenium Webdriver弹出框 微博分享的内容控制与结果生成
browser.window_handles for i in ugc_url_l: js = 'window.location.href="{}"'.format(i) brow ...
- 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框
alert.confirm.prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理.而现在webdriver对这些弹出框做了专门的处理,使用seleni ...
- 自动化测试基础篇--Selenium弹出框alert
摘自https://www.cnblogs.com/sanzangTst/p/7685304.html 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认 ...
- java 弹出选择目录框(选择文件夹),获取选择的文件夹路径
java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...
- Python+Selenium笔记(九):操作警告和弹出框
#之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用) 改成 driver.switch_to.alert就不会了. (一 ...
随机推荐
- WebRTC开发者必备 | 《WebRTC1.0: 浏览器间实时通讯》中文版免费下载
随着移动互联网的崛起与完善,WebRTC的应用场景相较于它刚诞生时已经有了极大的变化,以图片和视频为代表的流媒体技术走向普及,交互式网站也逐渐成为互联网的新常态,因此WebRTC API应该把当前以及 ...
- Storm 学习之路(五)—— Storm编程模型详解
一.简介 下图为Strom的运行流程图,在开发Storm流处理程序时,我们需要采用内置或自定义实现spout(数据源)和bolt(处理单元),并通过TopologyBuilder将它们之间进行关联,形 ...
- (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
原生js实现放烟花效果,点击鼠标,然后随机向四周扩散,! 思路: 1.首先烟花是五颜六色的,所以我们先写一个随机颜色的函数: 2.创建一个制造烟花的构造函数,第一个参数为元素,第二参数为初始x轴位置, ...
- 纯异步nodejs文件夹(目录)复制
思路: 1.callback 驱动 2.递归所有需要复制文件 3.在一定阀值下并发复制文件 4.运行需要安装 async.js npm install async 代码如下: var asyn ...
- 【过时】update progress has encountered a problem解决办法
笔者第二次整理博客,已经抛弃MyEclipse了,我将公司项目转换成了idea的目录结构后大家都改换Idea进行开发,虽然我个人比较喜欢eclipse的简洁干净,但是Idea的确有很多方便开发的新功能 ...
- Ajax出现error常见情况(详细版)-火狐浏览器(Firefox)兼容性问题
作为一个程序员,遇到兼容性问题真的很苦恼,尤其是对我这种前端小菜鸡来说遇到了甚是凄惨.一般来说兼容性问题出现率Chrome < IE < Firefox (╯°Д°)╯︵┴┴ . 言归正 ...
- VirtualBox基础使用
VirtualBox基础使用 VirtualBox相对VMware来说是轻量级的虚拟软件, 最关键的是VirtualBox是开源免费的. 配置全局选项 点击管理-->全局设定, 进入设置界面. ...
- Mac安装MySQL-python报错解决
Mac安装MySQL-pyhton报错 今天在Mac上安装MySQL-python报错,搜遍网络都说什么mysql config路径问题,但是都不行. 解决方案 一开始遇到的问题是: Complete ...
- CSS3常用转换总结
一.2D转换 translate(npx,npx) 相对当前元素位置移动 /* 实现div向左移动50个像素,并向下移动100个像素 */ div { transform: translate(50p ...
- ZOJ 3795:Grouping(缩点+最长路)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5303 题意:有n个人m条边,每条边有一个u,v,代表u的年龄大于等于v,现在要 ...