51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1532|回复: 1
打印 上一主题 下一主题

selenium的iFrame处理

[复制链接]
  • TA的每日心情
    擦汗
    2018-3-20 09:57
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]测试团长

    跳转到指定楼层
    1#
    发表于 2017-11-9 11:30:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 NewDreamTester 于 2017-11-9 11:32 编辑

    有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题。这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一。如果你在一个default content中查找一个在iframe中的元素,那肯定是找不到的。反之你在一个iframe中查找另一个iframe元素或default content中的元素,那必然也定位不到。selenium webdriver中提供了进入一个iframe的方法:
    WebDriver org.openqa.selenium.WebDriver.TargetLocator.frame(String nameOrId)
    也提供了一个返回default content的方法:
    WebDriver org.openqa.selenium.WebDriver.TargetLocator.defaultContent()
    我们拿2345网址导航来做示例,2345首页的定制天气模块,是一个iframe,
    如果我们想去选择其他城市天气必须选进入这个iframe。


    那么我先进入这个iframe,然后在进行选择城市的操作(注:选择城市是4.3章节的内容)
    核心代码:
    driver.switchTo().frame(“city_set_ifr”); //传入的是iframe的ID
    注意,进入iframe方法可以传入三种类型不同参数:

    int类型 – iframe在页面中的位置,第几个
    String类型 – iframe的名字 比如id
    WebElement类型 - 这个iframe的元素定位
    接下来在进行选择城市的操作
    如果要返回到以前的默认content,可以使用:
    dr.switchTo().defaultContent();
    如果不使用此代码,就不能退出当前iframe,也就是说iframe之外的页面内容你是不能定位和访问的。


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    4 小时前
  • 签到天数: 1051 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2017-11-9 13:18:18 | 只看该作者
    分享的不错,就是图片裂开了!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 13:19 , Processed in 0.062383 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表