• Seleniumwebdriver系列教程(5)————如何定位frame中的元素


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

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

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

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

    frame.html
    
    <html>
    
        <head>
    
            <title>Frame</title>
    
            <style>
    
                #f_1 { 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处理方式让人感觉那个不痛越来越轻松,这点进步值得肯定。

    下一节我们将介绍如何定位弹出的新窗口

  • 相关阅读:
    获取cookie
    EF数据迁移(当模型改变时更新数据库)
    EF有外键的查询
    EF查询
    前台主页面给子页面赋值(回调)
    jquery取元素值
    chart画图
    IIS 7.0 的 ASP.NET 应用程序生命周期概述(转载)
    查询服务器登录个数
    gridview中判断隐藏还是现实
  • 原文地址:https://www.cnblogs.com/nbkhic/p/2221500.html
Copyright © 2020-2023  润新知