Selenium18-切换Frame

frame标记

  • frame是HTML语法里的框架,你可以在同一个浏览器窗口中显示不止一个网页。
  • HTML5不支持标签,HTML4支持标签

iframe标记

  • iframe称为"内联框架",写在body里,用于嵌入另一个网页。
    <iframe src="a.htm"></iframe>
    <iframe src="b.htm"></iframe>
    <iframe src="c.htm"></iframe>
    
  • selenium自动化测试时,如果网页里目标元素位于frame或iframe内部的网页里,必须切换Frame,frameset不用做任何处理

切换Frame应用场景

如果想定位子网页里的元素,默认是无法定位的,所以必须从主网页切换进入子网页里。

切换Frame语法

  • 不论HTML里是frame还是iframe,selenium中Frame语法都是相同的
    driver.switch_to.frame(标识信息)
    
  • 标识信息可以支持
    • frame或iframe标记的id属性值(str类型)、name属性值(str类型)、或从0开始编号的索引号(int类型)
    • 用八大定位方法中任何一种定位方法,定位到frame标记或iframe标记的元素,把页面元素对象(webelement)作为标识信息进行切换

后台测试解决问题

  • 分析网页源代码,查看目标元素是否属于frame或iframe内子网页里的元素
  • 目标元素frame或iframe标记是否存在id或name属性
  • 切换Frame
    driver.switch_to.frame("menu-frame")
    
  • 查找目标元素进行操作
    driver.find_element(By.LINK_TEXT...)
    

切换回默认主网页

  • 在点击左侧“商品回收站"之后,等待5秒,点击界面上方的“开店向导"
  • 新问题:切换Frame失败,抛出NoSuchFrameException
  • 分析:没有找到要切换的目标Frame,是由于之前切换到子网页里造成的。
  • 解决方案:切换回默认主网页
driver.switch_to.default_content()

posted @ 2022-12-15 22:26  暄总-tester  阅读(369)  评论(0)    收藏  举报