zoukankan      html  css  js  c++  java
  • Selenium(五)---frame切换的运用

    frame切换

    frame/iframe在我们webdriver运用中比较特别,它们的定位方式在selenium中与其他的标签是不一样的。

    如果我们要操作被嵌入到frame/iframe中的 html 文档中的元素, 就必须切换webdriver的范围到被嵌入的文档中。

    那么我们如何切换范围呢?

    这里可能很多人第一时间就想到了switch_to_frame()方法,但是在Pycharm里面敲出来,我们会发现这个方法被画上了横线,显然这个方法已经过时了!

    wd.switch_to_frame()

    这里我们采用selenium提供的switch_to.frame(frame_reference)方法来切换frame

    其中, frame_reference 可以是 frame 元素的属性 name 或者 ID 。

    例如 iframe元素的id ‘frame1’ 或者 name属性值 ‘frame2’。

    我们可以用以下代码切换

    # id为frame1
    wd.switch_to.frame('frame1')
    # name为frame2
    wd.switch_to.frame('frame2')

    我们也可以通过切换

    wd.switch_to.frame(wd.find_element_by_tag_name("iframe"))

    当我们切换到某个iframe里面进行操作了,那么后续选择和操作界面元素就都是在这个frame里面进行的。

    这时候我们如果要切换为最开始的html这时候我们怎么做呢?我们可以使用以下方法

    wd.switch_to.default_content()

    多层frame切换

    这里假设一个情况,假如一个frame里面嵌套了一个frame这时候怎么办?假设外层frame id为frame1,嵌套在内的frame的id为frame2,我要从主html进入被嵌套的frame

    这时候我们可以通过层层切入的方式

    # 进入第一个frame
    wd.switch_to.frame("frame1")
    # 进入第二个frame
    wd.switch_to.frame("frame2")

    这时候我们想要从frame2再切回frame1,可以使用

    wd.switch_to.parent_frame()

    该方法返回父级标签,若当前已经是主html则该方法无效

  • 相关阅读:
    【数据库】-数据库显示不允许保存更改
    C#编程:从控制台读取数字的两种方式
    【终结版】C#常用函数和方法集汇总
    运行supervisord -c /etc/supervisor/supervisord.conf 出错,解决办法
    supervisord监控服务必备命令
    【持续更新中···】Linux下的小技巧
    运行supervisorctl reload报错解决方法
    ASP.NET Core 发布 centos7 配置守护进程
    【C++】std::是什么?
    DNS查询相关
  • 原文地址:https://www.cnblogs.com/xxxyang/p/11854180.html
Copyright © 2011-2022 走看看