selenium切换frame

这篇具有很好参考价值的文章主要介绍了selenium切换frame。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Frame标签框架区别

  • Frameset:可以直接按照正常元素定位
  • Frame:需要把驱动切换到Frame内再进行操作
  • IFrame:需要把驱动切换到Frame内再进行操作

切换总结

frame切换原理总结:

  • 针对同一层级的frame,如果要进行切换的话,需要切回到默认的首页,不能同级子页之间切换

  • 针对所要进入的frame,有多少个层级,就需要切换几次

  • 不管当前在哪个层级,如果要回到默认首页,只需要调用一次回到默认首页的方法 driver.switch_to.default_content()

frame切换原理方法:

driver.switch_to.frame(reference)
driver.switch_to.parent_frame()    # 切换到上一级frame
driver.switch_to.default_content()   # 切换到默认frame

selenium切换frame文章来源地址https://www.toymoban.com/news/detail-512791.html

selenium定位当前处于那个iframe(frame)中

#获取当前iframe的tag name,确定有几个iframe,你所在的元素和获取到页面的iframe之间的关系,来进行iframe的切换。

for child_frame in driver.find_elements_by_tag_name("iframe"):
    child_frame_id = child_frame.get_attribute("src")
    print(child_frame_id)

frame封装

def list_frame(self, locator):
    for child_frame in self.driver.find_elements(*locator):
        child_frame_id = child_frame.get_attribute("src")
        print(child_frame_id)


# 切换到主frame
def switch_body(self, locator, doc=''):
    logger.info('{0},body_frame切换到'.format(doc, locator))
    try:
        self.driver.switch_to.parent_frame()
    except:
        logger.info('{0},body_frame切换到失败!!!'.format(doc, locator))
        raise

# 切换到不同的frame
def switch_iframe(self, locator, doc=''):
    logger.info('{0},frame切换到'.format(doc, locator))
    try:
        to_frame = self.get_element(locator)
        self.driver.switch_to.frame(to_frame)
    except:
        logger.info('{0},frame切换到失败!!!'.format(doc, locator))
            raise

#根据实际需求进行切换
    # 切换到不同的frame
def switch_iframe(self, locator='', doc='', relation="child"):
    logger.info('{0},frame切换到'.format(doc, locator))
    try:
        if relation == "parent":
            self.driver.switch_to.default_content()
        else:
            to_frame = self.get_element(locator)
            self.driver.switch_to.frame(to_frame)
    except:
        logger.info('{0},frame切换到失败!!!'.format(doc, locator))
        raise

到了这里,关于selenium切换frame的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML <frame> 标签

    frame 标签在 HTML 4 中用于在 frameset 中定义特定的窗口(框架)。 简单的三框架页面: IE Firefox Chrome Safari Opera 所有浏览器都支持 frame 标签。 frame 标签定义 frameset 中的一个特定的窗口(框架)。 frameset 中的每个框架都可以设置不同的属性,比如 border、scrolling、noresize 等等。

    2024年02月11日
    浏览(23)
  • selenium-多窗口和frame处理

    1.切换窗口 适用场景:点击按钮后,重新打开一个窗口,想要在新的窗口定位操作,就需要切换窗口 原理:获取窗口的唯一标识就是句柄,获取到句柄,就可以切换到对应的窗口了 处理方法: 获取到当前的窗口柄(driver.current_window_handle) 获取到所有的窗柄 (driver.window_handles

    2024年02月16日
    浏览(43)
  • Selenium —— 网页frame与多窗口处理!

    点击某些链接,会重新打开⼀个窗⼜,对于这种情况,想在新页⾯上操作,就 得先切换窗⼜了。 获取窗⼜的唯⼀标识⽤句柄表⽰,所以只需要切换句柄,就可以在多个页⾯灵 活操作了 先获取当前窗口的句柄driver.current_window_handle 再获取所有的窗口句柄driver.windows_handles 然后

    2024年02月05日
    浏览(43)
  • 【iOS】Frame与Bounds的区别详解

    iOS特有的坐标是,是在iOS坐标系的左上角为坐标原点,往右为X正方向,向下为Y正方向。 bounds 和 frame 都是属于 CGRect 类型的结构体,系统的定义如下, 包含一个CGPoint(起点)和一个CGSize(尺寸)子结构体。 origin决定了View每个view的起点,size决定view的尺寸。 frame是每个view必

    2024年02月15日
    浏览(33)
  • 软件测试/测试开发丨Selenium 网页frame与多窗口处理

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27048 点击某些链接,会重新打开⼀个窗⼜,对于这种情况,想在新页⾯上操作,就 得先切换窗⼜了。 获取窗⼜的唯⼀标识⽤句柄表⽰,所以只需要切换句柄,就可以在多个页⾯灵 活操作了 先获

    2024年02月10日
    浏览(47)
  • Python3.6+selenium实现操作Frame中的页面元素

    有时网页中会嵌套一个或者多个Frame,此时我们直接去找嵌套在Frame里面的元素会抛出异常,所以在操作的时候我们需要将页面焦点切换到Frame里面,下面我们就以一个实例演示一下! 首先先创建三个html文件,文件代码如下: 1)frameset.html 2)frame_left.html   3)frame_right.html

    2024年01月19日
    浏览(48)
  • python自动化测试selenium定位frame及iframe示例

    这篇文章主要为大家介绍了python自动化测试selenium定位frame及iframe示例的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助 frame标签有frameset、frame、iframe三种,frameset和其它普通标签没有区别,不会影响正常定位,而frame与iframe对selenium定位而言是一样的。 Selenium有

    2024年01月20日
    浏览(43)
  • Django:六、使用iframe标签内嵌页面报错;拒绝了我们的连接请求;because it set ‘X-Frame-Options‘ to ‘deny‘.

    使用标签内嵌页面时报错: 127.0.0.1 拒绝了我们的连接请求。 查看错误代码,发现: Refused to display \\\'http://127.0.0.1:8000/\\\' in a frame because it set \\\'X-Frame-Options\\\' to \\\'deny\\\'. 由于x-frame-options设置了deny属性,导致了iframe失效,x-frame-options响应头是用来给浏览器设置允许一个页面可否在fra

    2024年02月03日
    浏览(48)
  • 在fixed frame栏中出现了 unknown frame map错误

    命令的时候,rviz成功打开,但在屏幕的左侧,在fixed frame栏中出现了 unknown frame map 错误,这是,我们需要找到mbot_description功能包中的launch文件夹下面的launch文件,在文件中添加以下命令 保存以后,重新启动launch文件,此时发现原来的错误消除了,但机器人模型还是没有显示

    2024年02月13日
    浏览(45)
  • R语言【taxa】——as_data_frame():将 taxa 的对象 转换为 data.frame

    Package  taxa  version 0.4.2         将 taxa 对象包含的信息转换为 data.frame,信息保存在列中。如果使用 as_tribble 则转换为表格。     参数【x】 :由 taxa 定义的一个对象。比如 taxon 或 taxon_id。 参数【row.names】 :NULL值,或者命名data frame行名的字符向量。不允许缺失值。 参数【

    2024年01月24日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包