须知:如果在前端页面源码内复制结点的xpath查找不到数据!!!!,记得要自己在写一下xpath语句试一试

    目标:
    1:掌握selenium 控制浏览器对象切换iframe(内嵌框架)的使用场景
    2:掌握selenium 怎么切换 iframe 结点
    3:掌握selenium 切换到iframe结点后怎么切换回来(其他的层)

    一:selenium 控制浏览器对象切换iframe(内嵌框架)的背景

    答:有的网站前端渲染后的html代码是嵌套类型的,就是一个网页html代码中有一个或者多个iframe结点,其中一个iframe结点就代表一个全新的网页(一般网站的登录功能都是一个iframe结点),当利用 selenium 获取iframe 结点下面子节点并对其操作时,是不能成功的,因为 selenium 只能从 iframe 结点外面的其他结点数据中查找其他的元素,对于这种情况就要用 selenium 控制浏览器切换 iframe了,这样就可以定位到 iframe 结点中的其他结点并对其操作啦!!

    注意:一般登录功能区都在iframe结点下面哦!!

    image.png


    二: selenium 怎么切换 iframe

    语法1:
    from selenium import webdriver 导入模块
    iframe_node = 浏览器对象.find_element_by_xpath( “xpath语法” ) 查找待切换的iframe结点对象
    浏览器对象.switch_to.frame(查找到的iframe结点对象) 利用switch方法进行切换,切换成功后即可定位iframe结点下的子节点并对其操作

    语法2:
    from selenium import webdriver 导入模块
    浏览器对象.switch_to.frame ( iframe结点的 id|name 属性值 ) 通过目标 iframe 结点的 id、name属性值可直接定位iframe结点切换

    注意事项:
    1:浏览器对象.switch_to.frame(查找到的iframe结点对象) 中的frame没有I
    2:如果目标 iframe 结点中有 id 以及 name 属性,那么直接通过第二种语法定位iframe结点

    代码截图:

    image.png

    ——————————————————————————————————————————————

    三: selenium 切换到iframe结点后怎么切换回来(其他的层)

    语法:

    浏览器对象.switch_to.parent_frame( ):切换到当前iframe结点的上一级处!

    浏览器对象.switch_to.default_content( ):切换到主界面(刚打开浏览器所在的界面)