python+selenium 切换frame方法

一、前言

       在学习使用selenium定位页面元素的时候经常会遇到定位不到的问题,明明元素就在那儿,用firebug也可以看到,就是定位不到,这种情况很有可能是frame在搞鬼;

      frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe会影响selenium定位;

二、详细使用

1.切入frame

selenium提供了 switch_to.frame() 方法来切入frame;

switch_to.frame(reference)

reference是传入的参数,用来定位frame,可以传入id、name、index以及selenium的WebElement对象;

举例:假如有如下HTML代码:

<html>  
    <head><title>iframe test</title></head>  
    <body>  
        <iframe id="frame1" src="" name="name1"></iframe>  
        <br>  
        <iframe id="frame2" src="" name="name2"></iframe>  
    </body>  
</html>

需要切入frame,方法如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.switch_to.frame(0)  # 1.用frame的index来定位,第一个是0
# driver.switch_to.frame("frame1")  # 2.用id来定位
# driver.switch_to.frame("name1")   # 3.用name来定位
# driver.switch_to.frame(driver.find_element_by_id("frame1"))  # 4.用WebElement对象来定位

2.切出frame(切回主目录)

selenium提供了 switch_to.default_content() 方法来切出 frame;

driver.switch_to.default_content()

3.嵌套frame的操作

举例:假如有如下HTML代码:

<html>
    <head><title>iframe test</title></head>
    <body>
        <iframe id="frame1" src="" name="name1">
            <iframe id="frame2" src="" name="name2"> </iframe>
        </iframe>
    </body>
</html>

(1)嵌套切入 frame2,需要一层一层切入,先切入 frame1 再切入 frame2 :

from selenium import webdriver

driver = webdriver.Chrome()
driver.switch_to.frame("frame1")  #用id来定位
driver.switch_to.frame("frame2")  #用id来定位 

(2)从 frame2 再切回 frame1:

selenium 提供了一个方法能够从子frame切回到父frame,类似于后退;

driver.switch_to.parent_frame()


  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值