前言
这些是过去学习和工作中积累的个人总结,不过可能会存在一些主观臆断,如果有说错的地方,请指出来哦!
回答
什么是frame
是HTML的标签之一,其作用是文档中的文档,或者浮动的框架(FRAME)。iframe元素会创建包含另外一个文档的内联框架(即行内框架),即用来实现在同一个浏览器窗口中同时显示多个页面的。frameset、frame 和 iframe 是三种不同的 frame 标签。
为什么要切换frame
如果在一个元素位于frameA的情况下,如果不切换到frameA,则定位元素时会提示该元素无法找到,从而导致脚本执行失败。
在Selenium框架中对于frame也有支持,主要提供了以下三个方法
- webDriver.switchTo().frame(id/name/WebElement):切换到 frame
- webDriver.switchTo().parentFrame():切换到父框架
- webDriver.switchTo().defaultContent():切回到最外层
示例
如:现在页面上有两个frame1和frame2
- 情况1:frame1和frame2无嵌套关系
切换到frame1:webDriver.switchTo().frame(“frame1”);
切回到父框架:webDriver.switchTo().parentFrame();
切换到frame2:webDriver.switchTo().frame(“frame2”);
- 情况2:frame1和frame2有嵌套关系,frame2嵌套在frame1中
切换到frame1:webDriver.switchTo().frame(“frame1”);
切换到frame2:webDriver.switchTo().frame(“frame2”);
切回到父框架:webDriver.switchTo().parentFrame();
切回到最外层:webDriver.switchTo().defaultContent()
也可以使用
WebElement frameEle = driver.findElement(By.id(“frame1”));
driver.switchTo().frame(frameEle);
进行对于frame的切换。