[转载]使用Selenium2测试含有iframe的Ajax网页
2012-12-24 11:33
309 查看
原文地址:/article/7021655.html
使用Selenium对由Ajax动态加载的页面进行测试
测试含有iframe标签的网页
本文不是Selenium2的简单介绍或者入门内容,目标读者是至少使用过Selenium2进行测试的各位朋友。
为了叙述简便,这里使用一个简单的iframe标签对弹出窗口进行简化。
首先需要两个网页,一个是主页面main.html:
?
接着是被弹出的窗口SubPage.html
?
?
实际运行的时候会报告找不到"frameText"元素的错误。这是怎么回事呢?
原来Selenium2在使用get()方法打开一个网页的时候,是不会继续加载里面的iframe中的内容的(这一点与Selenium有所区别)。
那么,我们就需要人为的要求Selenium2对iframe中的内容进行加载。
?
这样就可以找到id为"frameText"的元素了。
重新运行,发现还是有错,这一次报告的是"lblMsg"元素找不到?奇怪吗?
不奇怪,因为我们通过上面的switchTo()方法已经切换到了iframe的内部,而subpage中是不存在id为"lblMsg"对象的。
怎么办?只有重新回到Mainpage上来。
根据Selenium2的在线文档,有很多方法可以切换回MainPage。(别告诉我你没有耐心的去读那些文档)
笔者经过摸索发现了一个比较简单的方法:利用getWindowHandle()方法可以快速的进行切换。该方法的JavaDoc如下
?
看来只要在切换至iframe内部的时候,提前记录下Mainpage的句柄就可以在将来的任何时候回到主窗口了。于是我们追加下面两行代码。
?
好了,问题解决了,是不是很简单?最后送出完整的Java代码。
?
前言
本文主要通过一个简单的例子,来讨论以下两个问题:使用Selenium对由Ajax动态加载的页面进行测试
测试含有iframe标签的网页
本文不是Selenium2的简单介绍或者入门内容,目标读者是至少使用过Selenium2进行测试的各位朋友。
准备工作
假设你有一项业务,需要在用户进行输入的时候用Ajax弹出辅助输入的窗口,然后再将这些值传回主窗口。为了叙述简便,这里使用一个简单的iframe标签对弹出窗口进行简化。
首先需要两个网页,一个是主页面main.html:
?
?
关键问题
我们的目标是用Java编写一段能够自动测试这一完整业务逻辑的测试代码。因此,我们首先想到的可能会是类似下面的代码?
原来Selenium2在使用get()方法打开一个网页的时候,是不会继续加载里面的iframe中的内容的(这一点与Selenium有所区别)。
那么,我们就需要人为的要求Selenium2对iframe中的内容进行加载。
?
重新运行,发现还是有错,这一次报告的是"lblMsg"元素找不到?奇怪吗?
不奇怪,因为我们通过上面的switchTo()方法已经切换到了iframe的内部,而subpage中是不存在id为"lblMsg"对象的。
怎么办?只有重新回到Mainpage上来。
根据Selenium2的在线文档,有很多方法可以切换回MainPage。(别告诉我你没有耐心的去读那些文档)
笔者经过摸索发现了一个比较简单的方法:利用getWindowHandle()方法可以快速的进行切换。该方法的JavaDoc如下
?
?
?
相关文章推荐
- [网页自动化/测试]Firefox selenium plugin 安装及使用
- 如何使用单元测试 测试WEB组件方法中的含有Session、Cookie等HttpContext功能调用的方法?[转载]
- 使用selenium测试网页
- ajaxfileupload.js的使用方法(转载自己未测试)
- 使用Selenium+PhantomJS实现网页内容加载(包括网页后期Ajax出来的结果)
- 使用 Selenium 实现基于 Web 的自动化测试
- 行为驱动:Cucumber + Selenium + Java(五) - 使用maven来实现cucumber测试和报告
- 使用Selenium测试Flex系列(1)
- 为什么要使用AJAX技术的十大理由(转载)
- 【转载&收藏】MySQL自带工具之性能测试工具MySQLSLAP使用指南
- 【转载】IE中Iframe跨站引用时,框架内程序不能使用cookies问题解决
- 使用jQuery和ajax代替iframe的方法(详解)
- 符合W3C网页标准的iframe标签的使用方法
- 使用鼠标即时更改网页标题的排列顺序(ajax)
- 黄聪:C#里如何使用WebBrowser获取处理AJAX生成的网页内容?
- ASP.NET AjaxPro的应用 .AjaxPro使用中“XXX未定义”的一种解决方法(转载的)
- struts2框架中,使用iframe/form方式的ajaxupload,提示下载json的问题解决
- 网页测试利器-Selenium简介
- 在python使用selenium获取动态网页信息并用BeautifulSoup进行解析--动态网页爬虫
- Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容