首页 > 其他分享 >如何实现对iframe的自动化测试,一篇文章告诉你

如何实现对iframe的自动化测试,一篇文章告诉你

时间:2024-03-18 10:46:24浏览次数:27  
标签:一篇 frame driver switch 切换 iframe 自动化 switchTo

简介

在进行元素定位时,如果遇到无法找到的情况,首先需要考虑是否存在嵌套的 frame 窗口或者目标元素位于新打开的窗口中。这时,必须进行相应的 frame 切换或窗口切换操作。

frame 类似于在原始主 HTML 页面的基础上嵌套了一个独立的 HTML,彼此之间相互独立且不产生影响。

通常,当打开一个页面时,光标默认定位在主页面中。如果页面由多个 frame 构成,直接定位到具体元素可能会受限。因此,需要在定位元素之前切换到目标 frame 中,以便准确查找所需的元素。

iframe 解析

如图可以看到 iframe 的标签。

iframe 的多种切换方式

HTML 代码示例:

<iframe src="1.html" id="hogwarts_id" name="hogwarts_name"></iframe>

那么通过传入 id、name、index 以及 Selenium 的 WebElement 对象来切换 frame:

Pyhton 实现


# index:传入整型的参数,从 0 开始,这里的 0 就是第一个 frame
driver.switch_to.frame(0)

#id:iframe 的 id
driver.switch_to.frame("hogwarts_id")

#name: iframe 的 name
driver.switch_to.frame("hogwarts_name")

#WebElement: 传入 `selenium.webelement` 对象
driver.switch_to.frame(driver.find_element(By.TAG_NAME,"iframe"))

Java 实现


//通过位置index选中frame,0表示第一个frame
driver.switchTo().frame(0);
//通过frame的id或name来选中frame
driver.switchTo().frame("hogwarts_id");
driver.switchTo().frame("hogwarts_name");
//WebElement: 传入 `selenium.webelement` 对象
driver.switchTo().frame(driver.findElement(By.tagName("iframe")));

iframe 切换回默认页面

在切换页面之后,如果还想操作原页面,则可以使用:

Python 版本

driver.switch_to.default_content()

Java 版本

driver.switchTo().defaultContent();

iframe 多层切换

如图所示为多层嵌套结构的 iframe

从最外部 iframe 切换到 iframe2 则需要层层切换,当从 iframe2 切换回 iframe1 可以使用父子切换,示例如下:

Python 实现

driver.switch_to.frame("iframe1")
driver.switch_to.frame("iframe2")

# 从 iframe2 切换到上一级 iframe1
driver.switch_to.parent_frame()
# 从 iframe1 切换到上一级 iframe,如果 iframe 已经是最上级,则保持不变
driver.switch_to.parent_frame()

Java 实现

driver.switchTo().frame("iframe1");driver.switchTo().frame("iframe2");

从 iframe2 切换回 iframe1 可以使用父子切换:


# 从iframe2切换到上一级iframe1
driver.switchTo().parent_frame()
# 从iframe1切换到上一级iframe,如果iframe已经是最上级,则保持不变
driver.switchTo().parent_frame()

这个方法是 Selenium 提供的直接从子 frame 切换到父 frame,可以使用在嵌套的 frame 框架中。

总结

在浏览器中,存在一种名为 frame 的组件,通过常规的定位很难直接找到这个组件内的元素,因此需要进入到该 frame 组件里,并切换到相应的 frame 句柄,以便准确地定位和操作 frame 里面的元素。

获取更多软件测试技术资料/面试题解析,请点击!

标签:一篇,frame,driver,switch,切换,iframe,自动化,switchTo
From: https://www.cnblogs.com/hogwarts/p/18079837

相关文章