51Testing软件测试论坛

标题: selenium+python之iframe切换 [打印本页]

作者: yangdanjun    时间: 2018-4-19 14:41
标题: selenium+python之iframe切换
selenium+pythoniframe切换
1. 背景介绍
采用selenium+python进行了基础功能页面的冒烟操作,在操作过程中当有iframe的时候,需要切换到iframe后才可以对iframe中的元素进行操作
2. iframe切换方法
    Iframe的切换方法主要分成如下几个:
1) driver.switch_to.frame(reference)
① driver.switch_to.frame(0)  # 1.用frameindex来定位,第一个是0#
    index0开始,传入整型参数即判定为用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_namexpath等来定位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) 使用过程中无idiframe切换举例说明:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\1\ksohtml\wps4F72.tmp.jpg
切换到无idiframe方法,获取下载对话框中的内容
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