博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium-webdriver系列教程(5)———如何定位frame中的元素
阅读量:4050 次
发布时间:2019-05-25

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

在web ui自动化测试中,frame一直是令人头痛的问题,就像上班必须挤公车坐地铁一般,frame的问题总是令人气闷纠结为之黯然神伤。

以前在使用watir 1.6x的时候,frame也是颇为棘手的一个问题。不但要照本宣科的进行一系列的设置,而且在进行实际代码编写的过程中会遇到各种奇奇怪怪的问题。frame就像中国男足的后防线,问题多多难以解决。

selenium webdriver处理frame比较简单,这点比某些测试工具要先进一些,令人身心愉悦。

以下面的html代码为例,我们看一下如何定位frame上的元素。

frame.html
 
<html>
 
    
<head>
 
        
<title>Frame</title>
 
        
<style>
 
            
#f_1 {width: 10em; height: 10em; border: 1px solid #ccc; }
 
            
#f_2 {display: none}
 
        
</style>
 
    
</head>
 
    
<body>
 
        
<p id =
"p"
>Outside frame</p>
 
        
<iframe id =
"f_1"
f1
" src = "
part1.htm"></iframe>
 
        
<iframe id =
"f_2"
src =
"part2.htm"
></iframe>
 
    
</body>
 
</html>
 
 
part1.htm
 
<html>
 
    
<head><title>Part1</title></head>
 
    
<body>
 
        
<p id =
"f_p"
>This is part
1
</p>
 
        
<input id =
"btn"
type =
"button"
value =
"click me"
onclick =
"alert('hello')"
/>
 
    
</body>
 
</html>

switch_to方法会new1个TargetLocator对象,使用该对象的frame方法可以将当前识别的"主体"移动到需要定位的frame上去。

require 'rubygems'

require 'selenium-webdriver'
 
dr = Selenium::WebDriver.for :firefox
 
frame_file = 'file:///'+File.expand_path(File.join(File.dirname(__FILE__), 'frame.html'))
 
dr.navigate.to frame_file
 
# 定位default content上的p元素
 
p dr.find_element(:id => 'p')
 
# 将当前识别主体移动到id为f_1的frame上去
 
dr.switch_to.frame('f_1')
 
# 点击frame上的button
 
dr.find_element(:id =>'btn').click # --> a alert will popup
 
# 此时再去定位frame外的p元素将出现错误
 
p dr.find_element(:id => 'p') # --> error
 
# 将识别的主体切换出frame
 
dr.switch_to.default_content
 
p dr.find_element(:id => 'p') # --> ok

webdriver的frame处理方式确实狠有意思

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

你可能感兴趣的文章
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
在C++中使用Lua
查看>>
一些socket的编程经验
查看>>
socket编程中select的使用
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql truncate (清除表数据)
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
yuv420 还原为RGB图像
查看>>