Robot Framework与Web界面自动化测试学习笔记:定位到新窗口
2016-01-07 15:15
351 查看
在页面操作中,有时会需要打开新的窗口(新的网页不在当前窗口显示,而是在新的tab页显示),
比如利用 window.open("newurl")
或者 <a href="newurl" target="_blank">新窗口</a>
这时候新的页面都会在新窗口打开。
这样我们可能就需要对新页面中的内容进行检查和定位。
但这样前提是我们需要定位到该新的窗口。
比如我们用例中有这样一个语句:
click button id=newWin
上面这个语句对应的button的click事件响应代码中调用了 window.open("newurl") 打开一个新的窗口。
这时我们要想对这个新窗口页面中信息进行检查,必须要先定位到新窗口。
selenium2提供了 select window 关键字,该关键字会定位到新窗口,下面的操作都是围绕该新窗口来进行的了。
关键是靠参数来标识新的窗口,有如下方法:
1) select window title=xxxx
其中xxx是新页面的title属性,这就要求新页面必须有title属性。
2)select window name=xxxx
这里的name是对应新窗口的name属性值(针对javascript).
比如如果是利用 window.open("newurl","newwin");打开的新窗口,这里的newwin就是新页面的name属性。
或者<a href="newurl" target="newWindow" id="newlink">新窗口</a> 这里的newWindow就是新页面的name属性。
注意:需要注意的是,无论是用open方法或者在a设置name值, 如果再次点击,则会在同样的name窗口中打开。
即使是url不同,也会在相同窗口打开。 所以在指定时需要注意。
所以比较简单的方式,就是为每个页面设置自己的title属性,这样既简单,又跟js无关,而且每个窗口有自己的title也是合理的和比较好的方式。
还有一点,在rf+selenium2的帮助中,还说明了select window可以通过设定url值来定位,但实际操作发现有问题,无法定位。这是个bug,可能跟版本有关。
比如利用 window.open("newurl")
或者 <a href="newurl" target="_blank">新窗口</a>
这时候新的页面都会在新窗口打开。
这样我们可能就需要对新页面中的内容进行检查和定位。
但这样前提是我们需要定位到该新的窗口。
比如我们用例中有这样一个语句:
click button id=newWin
上面这个语句对应的button的click事件响应代码中调用了 window.open("newurl") 打开一个新的窗口。
这时我们要想对这个新窗口页面中信息进行检查,必须要先定位到新窗口。
selenium2提供了 select window 关键字,该关键字会定位到新窗口,下面的操作都是围绕该新窗口来进行的了。
关键是靠参数来标识新的窗口,有如下方法:
1) select window title=xxxx
其中xxx是新页面的title属性,这就要求新页面必须有title属性。
2)select window name=xxxx
这里的name是对应新窗口的name属性值(针对javascript).
比如如果是利用 window.open("newurl","newwin");打开的新窗口,这里的newwin就是新页面的name属性。
或者<a href="newurl" target="newWindow" id="newlink">新窗口</a> 这里的newWindow就是新页面的name属性。
注意:需要注意的是,无论是用open方法或者在a设置name值, 如果再次点击,则会在同样的name窗口中打开。
即使是url不同,也会在相同窗口打开。 所以在指定时需要注意。
所以比较简单的方式,就是为每个页面设置自己的title属性,这样既简单,又跟js无关,而且每个窗口有自己的title也是合理的和比较好的方式。
还有一点,在rf+selenium2的帮助中,还说明了select window可以通过设定url值来定位,但实际操作发现有问题,无法定位。这是个bug,可能跟版本有关。
相关文章推荐
- 待学习
- ng-option 的两种写法
- CSS动画:transition 的用法介绍
- Winform线程队列的使用,模拟下载等待功能
- 关于table.LoadDataRow修改datable某一行的值
- usb_register 与 usb_regieter_dev
- 批量追加数据库(GDB,MDB,Shp)
- 【C++专题】static_cast, dynamic_cast, const_cast探讨
- oracle各软件产品的定价指南
- 设计模式之概述
- HibernateSQL查询
- 千万级数据分页实现
- 移动WEB问题小结
- Linux中的ps命令
- VVDocumenter升级后不能使用问题
- webstorm11.0下载地址和webstorm11.0破解程序patcher.exe下载使用方法说明 前端IDE工具的利器
- Python fabric实现远程操作和部署
- QWidget,QMainWindow和QDialog的区别 .
- Hibernate懒加载分析
- Hibernate数据过滤