yangdanjun 发表于 2018-4-19 14:41:04

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"))2) driver.switch_to.parent_frame()从子frame切回到父frame3) driver.switch_to.default_content()    切换主文档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/div/div/div/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对象                         
页: [1]
查看完整版本: selenium+python之iframe切换