- 浏览: 172282 次
- 性别:
- 来自: 河北
文章分类
- 全部博客 (142)
- Java (15)
- 编程 (7)
- 操作系统 (4)
- 晴天夜雨 (3)
- 点点滴滴 (16)
- 数据库 (13)
- 测试 (14)
- eclipse (0)
- English study (9)
- 书虫-牛津英汉对照读物(第一级) (7)
- Web笔记 (2)
- 自动化 (2)
- SoapUi (0)
- Jmeter (5)
- Selenium 自动化测试 (21)
- TestNG (7)
- Bug (1)
- REST API (1)
- cURL (1)
- Junit (2)
- 接口测试 (1)
- OWASP (5)
- Python+Robot Framework+Selenium2Library (1)
- Python (0)
- 测试框架 (0)
- Jenkins (0)
- 测试用例 (1)
- 娱乐 (0)
- 驾照 (0)
- Pytest (1)
- git (0)
- Python笔记 (1)
最新评论
-
wuchunjiesp:
...
Project facet Java version 6.0 is not supported. -
天堂有行:
swanky_yao 写道启动:net start mysql ...
mysql编程常用 -
swanky_yao:
启动:net start mysql中止:$MySQL_HOM ...
mysql编程常用 -
天堂有行:
天堂有行 写道fixsmall 写道Mysql insert ...
mysql编程常用 -
天堂有行:
fixsmall 写道Mysql insert 还有一个 i ...
mysql编程常用
JavaScript共有3种弹出对话框框Alert、Confirmation以及Prompt。
Alert:提示对话框,只有一个“确定”按钮(对应的JavaScript代码为“alert('这是Alert');”)
Confirmation:确认对话框,需要选择(对应的JavaScript代码为“confirm('这是Confirmation');”)。
Prompt:输入对话框,需要输入内容(对应的JavaScript代码为“prompt('这就是prompt','');”)
由于Selenium 1使用的是JavaScript注入的方式来进行测试,所以无法直接处理JavaScript弹出对话框,而是对弹出对话框进行“预处理”。因此,那些在手工测试会出现弹出对话框的地方,在使用Selenium 1测试时不会有任何JavaScript弹出对话框弹出,这是因为在弹出前已经“处理”了。
然而Selenium 2是针对各个浏览器而开发的,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成,支持创建更高级的测试,避免了 JavaScript安全模型导致的限制。因此弹出对话框会成功弹出的。
在Selenium 1中,针对不同的弹出对话框需要调用不同的方法,而在Selenium 2中,弹出对话框统一视为Alert对象,只需调用Alert对象的方法即可。
由于目前网站上很难找到同时找到带有上述3个弹出对话框的网页,所以这里可以自己编写一个网页。首先新建一个文本文件,然后输入如程序清单5-57所示的代码:
保存文件并将其更名为testPage.html,使用浏览器将其打开,单击不同的按钮,将会弹出对应的弹出对话框,接下来将在这个页面进行测试。
1 Accept()
单击弹出对话框的确认按钮,可以同时对Alert、Confirmation以及Prompt使用。
依次单击这些按钮,弹出各种对话框并进行单击,为了看得清楚,每个单击操作后面都增加了3秒的延迟。
执行代码后,可以发现页面上依次弹出了Alert、Confirmation以及Prompt对话框,并依次单击了确定按钮。
2 Dismiss()
单击弹出对话框的取消按钮,可以同时对Alert、Confirmation以及Prompt使用。不过对于Alert来说,Accept()和Dismiss()没有什么区别,所以完全不必对其使用Dismiss()。
依次单击这些按钮,弹出各种对话框并进行单击,为了看得清楚,每个单击操作后面都增加了3秒的延迟。
3 SendKeys(keysToSend)
在弹出对话框框中输入文本,该方法只对Prompt弹出对话框有效。
单击“Prompt”按钮,弹出Prompt弹出对话框,然后输入一串文本。
4 Text/getText()
Text/getText()用于获取弹出对话框的文本内容。
依次单击这些按钮,弹出各种弹出对话框并进行单击,同时输出它们的文本内容。
1、alert弹框
这种弹出框处理应该毫无难度,网上也有很多介绍的,这边提供一个方法,见代码
程序清单
2、非alert弹框
不管是JS自定义的弹出框还是windows弹出框,下面给出的方法都能准确定位
Alert:提示对话框,只有一个“确定”按钮(对应的JavaScript代码为“alert('这是Alert');”)
Confirmation:确认对话框,需要选择(对应的JavaScript代码为“confirm('这是Confirmation');”)。
Prompt:输入对话框,需要输入内容(对应的JavaScript代码为“prompt('这就是prompt','');”)
由于Selenium 1使用的是JavaScript注入的方式来进行测试,所以无法直接处理JavaScript弹出对话框,而是对弹出对话框进行“预处理”。因此,那些在手工测试会出现弹出对话框的地方,在使用Selenium 1测试时不会有任何JavaScript弹出对话框弹出,这是因为在弹出前已经“处理”了。
然而Selenium 2是针对各个浏览器而开发的,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成,支持创建更高级的测试,避免了 JavaScript安全模型导致的限制。因此弹出对话框会成功弹出的。
在Selenium 1中,针对不同的弹出对话框需要调用不同的方法,而在Selenium 2中,弹出对话框统一视为Alert对象,只需调用Alert对象的方法即可。
由于目前网站上很难找到同时找到带有上述3个弹出对话框的网页,所以这里可以自己编写一个网页。首先新建一个文本文件,然后输入如程序清单5-57所示的代码:
<html> <head> <title></title> </head> <body> <input type="button" onclick="alert('这是Alert');" value="Alert"/> <br/> <input type="button" onclick="confirm('这是Confirmation');" value="Confirmation"/> <br/> <input type="button" onclick="prompt('这就是Prompt','');" value="prompt"/> </body> </html>
保存文件并将其更名为testPage.html,使用浏览器将其打开,单击不同的按钮,将会弹出对应的弹出对话框,接下来将在这个页面进行测试。
1 Accept()
单击弹出对话框的确认按钮,可以同时对Alert、Confirmation以及Prompt使用。
依次单击这些按钮,弹出各种对话框并进行单击,为了看得清楚,每个单击操作后面都增加了3秒的延迟。
public static void main(String[] args) throws InterruptedException { //如果启动出现问题,可以使用System.setProperty指出firefox.exe的路径 //System.setProperty("webdriver.firefox.bin","D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to("C:\\Users\\Administrator\\Desktop\\testPage.html"); WebElement btn = driver.findElement(By.xpath("//input[1]")); btn.click(); Thread.sleep(3000); driver.switchTo().alert().accept(); WebElement btn2 = driver.findElement(By.xpath("//input[2]")); btn2.click(); Thread.sleep(3000); driver.switchTo().alert().accept(); WebElement btn3 = driver.findElement(By.xpath("//input[3]")); btn3.click(); Thread.sleep(3000); driver.switchTo().alert().accept(); }
执行代码后,可以发现页面上依次弹出了Alert、Confirmation以及Prompt对话框,并依次单击了确定按钮。
2 Dismiss()
单击弹出对话框的取消按钮,可以同时对Alert、Confirmation以及Prompt使用。不过对于Alert来说,Accept()和Dismiss()没有什么区别,所以完全不必对其使用Dismiss()。
依次单击这些按钮,弹出各种对话框并进行单击,为了看得清楚,每个单击操作后面都增加了3秒的延迟。
public static void main(String[] args) throws InterruptedException { //如果启动出现问题,可以使用System.setProperty指出firefox.exe的路径 //System.setProperty("webdriver.firefox.bin","D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to("C:\\Users\\Administrator\\Desktop\\testPage.html"); WebElement btn2 = driver.findElement(By.xpath("//input[2]")); btn2.click(); Thread.sleep(3000); driver.switchTo().alert().dismiss(); WebElement btn3 = driver.findElement(By.xpath("//input[3]")); btn3.click(); Thread.sleep(3000); driver.switchTo().alert().dismiss(); }
3 SendKeys(keysToSend)
在弹出对话框框中输入文本,该方法只对Prompt弹出对话框有效。
单击“Prompt”按钮,弹出Prompt弹出对话框,然后输入一串文本。
WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to("C:\\Users\\Administrator\\Desktop\\testPage.html"); WebElement btn3 = driver.findElement(By.xpath("//input[3]")); btn3.click(); driver.switchTo().alert().sendKeys("这就是输入的内容");
4 Text/getText()
Text/getText()用于获取弹出对话框的文本内容。
依次单击这些按钮,弹出各种弹出对话框并进行单击,同时输出它们的文本内容。
WebDriver driver = new FirefoxDriver(); Navigation navigation = driver.navigate(); navigation.to("C:\\Users\\Administrator\\Desktop\\testPage.html"); WebElement btn = driver.findElement(By.xpath("//input[1]")); btn.click(); System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept(); WebElement btn2 = driver.findElement(By.xpath("//input[2]")); btn2.click(); System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept(); WebElement btn3 = driver.findElement(By.xpath("//input[3]")); btn3.click(); System.out.println(driver.switchTo().alert().getText()); driver.switchTo().alert().accept();
1、alert弹框
这种弹出框处理应该毫无难度,网上也有很多介绍的,这边提供一个方法,见代码
程序清单
//处理潜在的1个alert(javascript弹出框) public boolean dealPotentialAlert(WebDriver driver,boolean option) { //是否存在 boolean flag = false; //异常捕获 try { Alert alert = driver.switchTo().alert(); //判断是否存在alert弹框 if (null == alert){ throw new NoAlertPresentException(); } //异常捕获 try { //确认or取消 if (option) { //确认 alert.accept(); System.out.println("Accept the alert: " + alert.getText()); } else { //取消 alert.dismiss(); System.out.println("Dismiss the alert: " + alert.getText()); } flag = true; } catch (WebDriverException e) { if (e.getMessage().startsWith("Could not find")){ System.out.println("There is no alert appear!"); }else{ throw e; } } } catch (NoAlertPresentException e) { System.out.println("There is no alert appear!"); } return flag; }
2、非alert弹框
不管是JS自定义的弹出框还是windows弹出框,下面给出的方法都能准确定位
//处理多个非alert弹窗 public static boolean testNewWindows(WebDriver driver){ //当前窗口句柄 String currentHandle = driver.getWindowHandle(); //得到所有窗口的句柄 Set<String> handles = driver.getWindowHandles(); //不包括当前窗口 handles.remove(currentHandle); //存在窗口 if (handles.size() > 0) { try{ //定位窗口 dr.switchTo().window(handles.iterator().next()); return true; }catch(Exception e){ System.out.println(e.getMessage()); return false; } } System.out.println("Did not find window"); return false; } //处理单个非alert弹窗 public static boolean testNewWindow(WebDriver driver){ try{ //定位窗口 driver.switchTo().window(driver.getWindowHandles().iterator().next()); return true; }catch(Exception e){ System.out.println(e.getMessage()); return false; } }
发表评论
-
数据驱动
2016-07-26 11:10 632相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为进行 ... -
对下拉框进行操作
2014-07-22 17:40 718对下拉框进行操作时首先要定位到这个下拉框,new 一个Selc ... -
testng.xml的格式
2014-07-21 09:39 1241简单说明: 测试代码 ... -
定位页面表格和单元格
2014-04-25 13:05 939在处理表格时,我们可 ... -
JQuery选择器
2014-04-22 10:31 0juqery选择器是jquery库中非常重要的功能。jquer ... -
日志记录
2014-04-25 13:06 624日志记录可结合上一专题的报告共同生成,日志中可记录自动化测试过 ... -
报告生成
2014-04-25 13:06 622一般我们写的脚本可能覆盖了较多的测试项,而且可能持续运行了一段 ... -
XPATH定位
2014-04-22 10:02 1373XPATH是一门在XML文档中 ... -
CSS选择器定位元素详解
2014-04-22 09:58 1618CSS是一种用来表现HTML(标准通用标记语言的一个应用)或X ... -
元素定位
2014-04-22 09:54 605Selenium WebDriver提供一个先进的技术来定位w ... -
XPATH定位
2014-04-21 16:00 0XPATH是一门在XML文档中 ... -
截屏功能
2014-04-25 13:07 5741、使用webdriver封装的API函数截图 //截屏功能, ... -
数据驱动-property
2014-04-21 15:23 0把参数什么的都放在property文件中,然后用Resourc ... -
数据驱动- Junit直接自带关键字驱动
2014-04-21 15:22 0数据驱动- Junit直接自带关键字驱动 -
数据驱动-Excel
2014-04-22 10:21 1234我们在页面的测试中,会发现很多输入框的测试,这些输入框中我们需 ... -
设计自动化测试数据
2014-04-21 15:04 0在之前的测试过程中,测试的数据都是不变的,想换一组测试数据会相 ... -
编写自动化测试代码
2014-04-21 14:46 0在设计文档(也就是自动化测试用例)完成后,就可以开始正式编码了 ... -
设计自动化测试用例
2014-04-21 14:28 0在自动化测试的流程中,需要先设计才能进行正式编码。设计文档一般 ... -
5.11 为测试操作添加事件
2014-04-21 14:23 0如果想要在执行测试操 ... -
5.10 设置管理
2014-04-21 14:12 0在Selenium 2中,可以通过Options对象对测试进行 ...
相关推荐
6. 添加分区:添加分区需要点击“新建”,在弹出的添加分区对话框中,选择挂载点、输入大小、确定。 7. swap 交换分区:swap 交换分区的大小一般是内存的 1-2 倍,例如可以设为 2048MB(2G)。 8. /home 和/usr 分区...
第十一步:在弹出的对话框中,选择对应SCU文件路径,路径通常位于备份工程路径下的LOCAL文件夹中的.SCU文件。 第十二步:选择“SCADA配置”进行通讯相关的驱动配置。 第十三步:选择对应的“I/O驱动器名称”,并...
这个函数会弹出一个文件选择对话框,允许用户选择TXT文件。返回的是用户选择的文件路径。 在Qt5.8中,这些功能已经很成熟,通过结合QFile、QTextStream和QFileDialog,我们可以轻松实现对TXT文件的读写操作,同时...
这可以通过QT的QLineEdit和QGridLayout等控件来实现,用户可以直接在界面上输入数值,也可以通过弹出对话框进行批量输入。 外部数据的读入则涉及到文件操作。VS2013和QT5.8都提供了文件I/O的API,例如C++标准库中的...
上班操作包括下载系统运行参数、执行上班操作流程、弹出对话框提示“请刷身份卡…”,输入密码后,进入选择班次,根据统计日期班次选择后,上班操作成功。下班操作包括关闭程序或工班结束时,执行下班操作,系统弹出...
3. **对话框与弹出窗口**:内建各种对话框和弹出窗口模板,如消息提示框、选择文件或目录对话框等,简化了开发者实现这些功能的工作。 4. **皮肤支持**:SUIPack支持多种皮肤,使得应用程序能够拥有统一而美观的...
使用方法:在支持的网站里的视频上按住键盘上 Alt键 ,然后点击 鼠标左键,弹出一个 提示找到地址但无法下载的 提示窗口,然后可以选择自己喜欢的方式下载此视频. 支持Flv 8:其它功能,等待你的发现。 ...
实例009 关闭IE主窗口时,不弹出询问对话框 13 1.2 弹出网页对话框 14 实例010 弹出网页模式对话框 14 实例011 弹出全屏显示的网页模式对话框 16 实例012 网页拾色器 18 实例013 日期选择器 21 1.3 窗口的动画效果 ...
3. **表单和对话框组件**:允许在Web应用中实现弹出窗口和复杂表单,增强了用户体验。 4. **图表和图形组件**:提供了绘制动态图表和图形的功能,使得数据可视化成为可能,这对于数据分析和决策支持至关重要。 5. ...
Step 4:改变数据透视图位置右键单击图表空白处,在弹出下拉列表中选择“位置”,在弹出“图表位置”对话框中选择将图表“作为其中的对象插入”选项,单击其右侧的下箭头,在弹出的列表框中选择“Sheet1”工作表,...
6.10 例21 创建弹出式菜单 117 第7章 工具栏和状态栏 120 7.1 例22 使用工具栏编辑器 120 7.2 例23 启用和禁用工具栏按钮 122 7.3 例24 为工具栏按钮添加字 123 7.4 例25 非标准工具栏大小 128 7.5 例26 保持工具栏...
第一步:你打开软件"批量验证邮箱密码是否正确神器.exe",系统弹出一个用户登录对话功能框, 注: 1).如果已经在本系统中申请过用户和密码的用户,请直接登录本系统; 2).在这里如果你忘记了你的用户密码的用户,...
1.15 离开页面时弹出对话框 1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 ...
4.6 只显示一次的弹出式窗口... 102 4.7 记住登录账号和密码... 103 4.8 检测浏览器是否关闭了Cookie 功能... 105 第5章 视窗篇.... 106 5.1 警告对话框... 106 5.2 在警告对话框上显示多行消息 正文... 106 ...
1.15 离开页面时弹出对话框 1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 ...
- 在弹出的键盘对话框中,从“类别”下拉菜单中选择“宏”,在“命令”列表中找到并选择你刚刚创建的宏。 - 按下你希望使用的快捷键组合(例如`Ctrl+Shift+K`),然后点击“指定”按钮。 - 最后点击“关闭”保存...
6.3.2 创建浮动的弹出式菜单 6.4 文本处理 6.4.1 文本输出函数 6.4.2 设置文本属性 6.4.3 获取字符属性 6.4.4 使用字体 6.4.5 文本处理示例 6.5 打印和打印预览 本章小结 习题 第7章 图形设备 7.1 在屏幕...
6.2.1. 包列表面板的弹出菜单 55 6.2.2. 包详情面板的弹出菜单 56 6.3. 浏览时过滤包 57 6.4. 建立显示过滤表达式 58 6.4.1. 显示过滤字段 58 6.4.2. 比较值 59 6.4.3. 组合表达式 59 6.4.4. 常见的错误 60 ...