zoukankan      html  css  js  c++  java
  • Selenium踩坑记之iFrame的定位与切换

    转自:https://www.jianshu.com/p/6e7d0359e4bb

    Selenium是浏览器自动化测试的工具之一,用过的人都懂他的好,也被他坑的不要不要的。今天就聊聊Selenium的iFrame定位和切换。
    对于一个页面,正常浏览的时候,看到的一个完整正常的页面,但是,看似是整体的页面的背后,其中是可能会包含iFrame。正因为此,在编写自动化测试的时候,定位元素就出问题了。

    如何定位iFrame

    • 在页面区域右键,可以看到“This Frame”或者“Reload Frame”的选项,那么就可以确定这里是一个iFrame了
    • 通过查看页面的HTML代码,查找Frame标签
    • 如果你还想再简单点,那就是直接编写一个简单的测试,然后直接只用以下的代码(以ruby为例)来验证:
    @driver.find_elements(:tagName => "frame").size

    如何切换iFrame

    其实如果确定了iFrame之后,切换的代码就很简单了(以ruby代码为例):

    @driver.switch_to.frame(iFrame)

    iFrame这里可以是三个类型:

    1. index,即整个页面中frame的个数的index,从0开始。比如页面中只有一个iFrame,就是0,两个这是0和1
    @driver.switch_to.frame(1)
    1. Name or ID,这个无需多说,就是frame的这个name或者ID
    @driver.switch_to.frame(frameName)
    1. Web Element,即通过css或者xpath等方式定位元素来进行切换
    @driver.switch_to.frame(@driver.find_element(:xpath => "//iframe[contains(@id, 'frame')]"))

    嵌套iFrame

    很多时候,你可能还会遇到嵌套的iFrame的情况,嗯,其实情况也很好办,一直切换就好了。不过,还要记得如何切换回上层的iFrame呢?

    @driver.switch_to.parentFrame

    或者 切换到main frame

    @driver.switch_to.defaultContent

    嗯,有了以上的这些方法,基本可以跳过Selenium中的iFrame相关的坑了。预祝各位在Selenium中都可以顺利的测试起来……

  • 相关阅读:
    什么时间调用 UpdateData() MFC函数
    网页页面内跳转
    关于SVG文件在Firefox中正确显示的研究
    火车座位号分布情况
    使用“性能监视器”监视系统性能/运行情况
    SQL Server Cache Manager
    SQL连接:localhost、127.0.0.1、(local)的区别
    SQL Server如何保证可空字段中非空值唯一
    SQL 2005使用正则表达式
    從數據讀取資料方法
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/11203654.html
Copyright © 2011-2022 走看看