51Testing软件测试论坛
标题: selenium+python之iframe切换 [打印本页]
作者: yangdanjun 时间: 2018-4-19 14:41
标题: selenium+python之iframe切换
selenium+python之iframe切换
1. 背景介绍采用selenium+python进行了基础功能页面的冒烟操作,在操作过程中当有iframe的时候,需要切换到iframe后才可以对iframe中的元素进行操作
2. iframe切换方法 Iframe的切换方法主要分成如下几个:
1) driver.switch_to.frame(reference)
① driver.switch_to.frame(0) # 1.用frame的index来定位,第一个是0#
index从0开始,传入整型参数即判定为用index定位,传入str参数则判定为用id/name定位
② driver.switch_to.frame("frame1") # 2.用id来定位#
③ driver.switch_to.frame("myframe") # 3.用name来定位#
④ driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) # 4.用WebElement对象来定
WebElement对象,即用find_element系列方法所取得的对象,我们可以用tag_name、xpath等来定位frame对象
例如:
<iframe src="myframetest.html" />
用xpath定位,传入WebElement对象:
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[contains(@src,'myframe')]"))
2) driver.switch_to.parent_frame()
从子frame切回到父frame
3) driver.switch_to.default_content()
切换主文档
[size=10.0000pt]3. BAP的iframe操作说明1) 一般的iframe操作说明
① 最外层有一个iframe
② 当点击左侧的菜单后,会跳转到另一个子iframe,此时需要进行iframe切换操作
例如如下的driver.switch_to.frame("ec_projectManage")
file:///C:\Users\ADMINI~1\AppData\Local\Temp\1\ksohtml\wps4F60.tmp.jpg
③ 当操作时,要考虑到是否还嵌套了新的iframe,例如上面接下来的上载操作就嵌套新的子iframe
driver.switch_to.frame("wizar_iframe_step1")
file:///C:\Users\ADMINI~1\AppData\Local\Temp\1\ksohtml\wps4F61.tmp.jpg
④ 当完成了上载选择后,需要重新回到步骤2的实体配置iframe,注意要切换回来
driver.switch_to.frame("ec_projectManage")
⑤ 当完成了实体配置的相关操作,要考虑一下其他操作要回到外面的主文档
driver.switch_to.default_content()
注意:这个每个方法操作的时候,最后一定要切换到默认主文档,否则后面的操作会无法正确执行。
2) 使用过程中无id的iframe切换举例说明:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\1\ksohtml\wps4F72.tmp.jpg
切换到无id的iframe方法,获取下载对话框中的内容
text1=driver.find_element_by_xpath('/html/body/div[11]/div[2]/div[3]/div[1]/div') #定位到iframe上层的div
text2=text1.find_element_by_tag_name("iframe").get_attribute("src") #获取div下的iframe的src值
text=text1.find_element_by_tag_name("iframe") #通过获取到的iframe对象src值对应iframe元素
driver.switch_to.frame(text) #定位到该无id的iframe对象
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) |
Powered by Discuz! X3.2 |