1、driver.switch_to.frame()
一般情况下,我们可以直接通过id或者name切换到frame。
driver.switch_to.frame()
小括号里面填iframe标签的id,或name值
如果没有id,或者name,我们可以先定位到iframe标签,再切换到frame
# 根据标签名切换
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)
2、需回主文档,进行定位,使用:driver.switch_to.default_content()
3、嵌多层套iframe的操作
但时候页面会有多层嵌套iframe,这时候我们需要层层切换iframe
<frame src="" id="index_main" name="main" scrolling="Yes" noresize="noresize">
<iframe id="Editor1" src="" frameborder="0" scrolling="no" >
<iframe id="eWebEditor" width="100%" height="100%" scrolling="yes" frameborder="0" src="">
<input type="text" id="TeacherTxt" name="Teacher" size="12" maxlength="12" >
</iframe>
</iframe>
</iframe>
比如这个源码中,有三层iframe嵌套,如果我们想定位到id="TeWebEditor这一层,代码如下:
driver.switch_to_.rame("inden_main") driver.switch_to_.rame("EEditor1) driver.switch_to_.rame("eeWebEditor"
那么如果我们又想切换到上一层呢,driver.switch_to.parent_frame(),表示从当前的子iframe切换到父iframe,即上级iframe
1
2
3
4
5
6
7
8
|
# 切换到第一层iframe driver.switch_to_.rame( "inden_main" )
# 切换到第二层iframe driver.switch_to_.rame("EEditor1) 切换到第三层iframe driver.switch_to_.rame("eeWebEditor) 重新切换到父iframe,即切换到第二层iframe driver.switch_to.parent_frame() |
总结:遇到iframe时,需要先切换到iframe框架内,再进行定位;多层嵌套的,层层切换iframe;在iframe框架内,定位主文档的元素,需切回到主文档再定位