博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium-webdriver系列教程(6)———如何捕获弹出窗口
阅读量:4050 次
发布时间:2019-05-25

本文共 1133 字,大约阅读时间需要 3 分钟。

在web自动化测试中点击一个链接然后弹出新窗口是比较司空见惯的事情。

webdriver中处理弹出窗口跟处理frame差不多,以下面的html代码为例

window.html
 
<html>
 
    
<head><title>Popup Window</title></head>
 
    
<body>
 
        
<a id =
"soso"
href =
""
target =
"_blank"
>click me</a>
 
    
</body>
 
</html>

下面的代码演示了如何去捕获弹出窗口

require 'rubygems'

require 'pp'
require 'selenium-webdriver'
 
dr = Selenium::WebDriver.for :firefox
frame_file = 'file:///'.concat File.expand_path(File.join(File.dirname(__FILE__), 'window.html'))
 
dr.navigate.to frame_file
 
dr.find_element(:id =>'soso').click
 
# 所有的window handles
hs = dr.window_handles
 
# 当前的window handle
ch = dr.window_handle
 
pp hs
pp ch
 
hs.each do |h|
    unless h == ch
        p dr.title  #=>"Popup Window"
        dr.switch_to.window(h)
        p dr.title  #=>"\346\220\234\346\220\234\346\233\264\346\207\202\344\275\240"
        p dr.find_element(:id => 's_input')
 
    end
end
sleep 5
#swich to previous web
dr.switch_to.window(ch)
p dr.title  #=>"Popup Window"

捕获或者说定位弹出窗口的关键在于获得弹出窗口的handle

在上面的代码里,使用windowhandles方法获取所有弹出的浏览器窗口的句柄然后使用windowhandle方法来获取当前浏览器窗口的句柄,将这两个值的差值就是新弹出窗口的句柄。

在获取新弹出窗口的句柄后,使用switch_to.window(newwindow_handle)方法,将新窗口的句柄作为参数传入既可捕获到新窗口了。

如果想回到以前的窗口定位元素,那么再调用1次switch_to.window方法,传入之前窗口的句柄既可达到目的。

转载地址:http://lwjci.baihongyu.com/

你可能感兴趣的文章
工作分解结构在软件开发中的应用
查看>>
关于系统崩溃后的Oracle恢复
查看>>
遭遇蚊子的獠牙,想起一种叫黄鸡婆的小虫子
查看>>
使用批处理命令给客户更新oracle数据库
查看>>
回首考研路:那年,那月,还有那条孤独的考研狗
查看>>
GCD小结
查看>>
IOS 第三方库介绍
查看>>
iPhone架构xmpp聊天工具 -xmpp协议初识《一》
查看>>
iOS提交后申请加急审核
查看>>
iOS7单元测试
查看>>
ios framework 通用库的制作
查看>>
出现( linker command failed with exit code 1)错误总结
查看>>
iOS开发中一些常见的并行处理
查看>>
iOS获取手机的Mac地址
查看>>
ios7.1发布企业证书测试包的问题
查看>>
如何自定义iOS中的控件
查看>>
iOS 开发百问
查看>>
Mac环境下svn的使用
查看>>
github简单使用教程
查看>>
如何高效利用GitHub
查看>>