HJ3-8.7 多窗口处理与网页 frame

  • selenimu 里面如何处理多窗口场景
    • 多个窗口识别
    • 多个窗口之间切换
  • selenium 里面如何处理 frame
    • 多个 frame 识别
    • 多个 frame 之间切换

多窗口处理

  • 点击某个链接,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了。
  • 获取窗口的唯一标示用句柄标示,所以只需要切换句柄,就可以在多个页面灵活操作了。

多窗口处理流程

  • 1.先获取到当前的窗口句柄(driver.getWindowHandle)
  • 2.再获取到所有的窗口句柄(driver.getWindowHandles)
  • 3.判断是否是想要操作的窗口,如果是,就可以对窗口进行操作,如果不是,跳转到另外一个窗口,对另一个窗口进行操作(driver.switchTo().window(name))

frame

frame 介绍

  • 在 web 自动化中,如果一个元素定位不到,那么很大可能是在 iframe 中。
  • 什么是 frame?
    • frame 是 html 中的框架,在 html 中,所谓的框架就是可以在同一个浏览器中显示不止一个页面。
    • 基于 html 的框架,又分为垂直框架和水平框架(col, rows)
  • Frame 分类
    • frame 标签包含 frameset、frame、iframe 三种。
    • frameset 和普通的标签一样,不会影响正常的定位,可以使用 index、id、name、webelement 任意中方式定位frame。
    • 而 frame 与 iframe 对 selenium 定位而言是一样的。selenium 有一组方法对 frame 进行操作。

多 frame 切换

  • frame 存在两种:
    • 一种是嵌套的,一种是未嵌套的。
  • 切换 frame
    • driver.switch_to.frame() # 根据元素id 或者 index 切换 frame
    • driver.switch_to.default_content() # 切换到默认 frame
    • driver.switch_to.parent_frame() # 切换到父级 frame
frame 未嵌套
  • 处理未嵌套的 iframe
    • driver.switchTo().frame("frame 的 id")
    • driver.switchTo().frame("frame - index") frame 无 ID 的时候依据索引来处理,索引从 0 开始 driver.switchTo().frame(0)
Frame 嵌套
  • 处理嵌套的 iframe
    • 对于嵌套的先进入到 iframe 的父节点,再进到子节点,然后可以对子节点里面的对象进行处理和操作。
    • driver.swithc_to.frame("父节点")
    • driver.swithc_to.frame("子节点")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容