Selenium-webdriver系列教程(5)————如何定位frame中的元素_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Selenium-webdriver系列教程(5)————如何定位frame中的元素

Selenium-webdriver系列教程(5)————如何定位frame中的元素

 2011/10/20 8:10:57  nbkhic  http://nbkhic.iteye.com  我要评论(0)
  • 摘要:在webui自动化测试中,frame一直是令人头痛的问题,就像上班必须挤公车坐地铁一般,frame的问题总是令人气闷纠结为之黯然神伤。以前在使用watir1.6x的时候,frame也是颇为棘手的一个问题。不但要照本宣科的进行一系列的设置,而且在进行实际代码编写的过程中会遇到各种奇奇怪怪的问题。frame就像中国男足的后防线,问题多多难以解决。seleniumwebdriver处理frame比较简单,这点比某些测试工具要先进一些,令人身心愉悦。以下面的html代码为例
  • 标签:Web 教程 定位
在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处理方式让人感觉那个不痛越来越轻松,这点进步值得肯定。

下一节我们将介绍如何定位弹出的新窗口
发表评论
用户名: 匿名