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()

本文来自博客园,作者:暄总-tester,转载请注明原文链接:https://www.cnblogs.com/sean-test/p/16986154.html


浙公网安备 33010602011771号