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中都可以顺利的测试起来……

转载于:https://www.cnblogs.com/xinxin1994/p/11203654.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值