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框架内,定位主文档的元素,需切回到主文档再定位

posted on 2021-07-19 19:09  悟奕  阅读(191)  评论(0编辑  收藏  举报