三次iframe框架切换

2023-11-19

记录一次坑。
做UI自动化,页面是嵌套的frame框架, 整个页面是一个iframe。在iframe里面,上方是一个frame,下方是一个frame。下方frame里又分为左右两个frame。所以要定位右侧页面元素,需要三次切入frame框架。
在basepage里有如下代码:
#切三层进入下方右侧frame
def switch_right_frame(self):
# 定位iframe框架
iframe1 = self.locate_element(’//*[@id=“form1”]/div[3]/iframe’)
# 切换进iframe
self.driver.switch_to.frame(iframe1)

    # 定位下方iframe
    frame2 = self.locate_element('/html/frameset/frame[2]')
    self.driver.switch_to.frame(frame2)
    frame_right = self.locate_element('//*[@id="content"]/frame[2]')
    self.driver.switch_to.frame(frame_right)

运行提示定位不到frame2
在没有写函数的时候,是可以成功定位到右侧元素的。所以找不到原因。

尝试解决方法:
1.在自己定义的locate_element函数里加上显示等待。
#根据元素类型进行元素定位
#显示等待元素存在
def locate_element(self,locator,type=‘xpath’):
if type==‘xpath’:
WebDriverWait(self.driver,10).until(EC.presence_of_element_located((By.XPATH,locator)))
self.driver.find_element_by_xpath(locator)

结果运行超时也没有定位到。

2.猜测是没有切入到iframe框架里。
问题在这行代码里
iframe1 = self.locate_element(’//*[@id=“form1”]/div[3]/iframe’)
我用变量去接收定位到的元素,但是locate_element函数没有return,其实这个变量什么也没接收到,所以根本没有切入iframe。
改代码:
#根据元素类型进行元素定位
#显示等待元素存在
def locate_element(self,locator,type=‘xpath’):
if type==‘xpath’:
WebDriverWait(self.driver,10).until(EC.presence_of_element_located((By.XPATH,locator)))
return self.driver.find_element_by_xpath(locator)
定位成功,用例通过。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三次iframe框架切换 的相关文章

  • MySQL基本SQL语句2(DML)

    目录 前言 一 添加数据 INSERT 1 给指定的字段添加数据 2 给所有的字段添加数据 3 添加多条数据 二 修改数据 UPDATE 修改数据语法 三 删除数据 DELETE 删除数据语法 总结 前言 DML英文全称是Data Mani
  • vue导出Excel和包含echarts的页面导出pdf

    目录 Vue用Export2Excel导出excel单表头和多表头 vue json excel插件实现导出 前端将Blob流文件转为文件导出 vue 导出HTML页面 包含echarts 为PDF Vue用Export2Excel导出ex
  • vmware fusion个人版

    个人免费版虚拟机 不要访问中文网站 以下链接都是英文网站 如果之前将该网站的国家设置成中国 请将其设置回美国后再打开链接 首先注册VMware Fusion Player 账号 并激活 https my vmware com web vmw
  • 目录以及目录下的重要文件

    第1章 mv mv move 移动 remove 移除 类似于windows的剪切 语法格式 mv 参数选项 源文件 目标文件 mv 源文件 新的文件名 root oldboyedu lnb 移动 oldboy下的oldboy txt文件
  • css line-height

    项目中看到 line height 1 所以来总结一下 line height 属性 line height 定义 line height 属性设置行间的距离 行高 line height 不允许使用负值 属性可能的值 值 描述 norma
  • RT-Thread操作系统 AT组件源码分析(以 EC20 为例)

    文章目录 1 AT 组件 1 1 AT 组件调试信息级别设置 1 2 AT 命令打印使能设置 1 3 GPRS 网络注册状态检查 1 4 EC200x 是否能连接外网日志输出 1 5 AT 设备注册过程 1 6 AT 设备类注册过程 1 7
  • win10java jdk安装

    配置环境变量 右击我的电脑 属性 点击Path 新建 添加最后两行到自己的Path环境中 转载链接 https www cnblogs com suni p 8279672 html
  • 求二叉树中两个指定节点的最短距离

    给定一个二叉树 找到该树中两个指定节点间的最短距离 思路 求最近公共祖先节点 然后再求最近公共祖先节点到两个指定节点的路径 再求两个节点的路径之和 const shortestDistance function root p q let l
  • Vue练习题(带解析)

    Vue基础入门 一 填空题 Vue是一套构建 用户界面 的渐进式框架 MVVM主要包含3个部分 分别是Model View和 ViewModel Vue中通过 refs 属性获取相应DOM元素 在进行Vue调试时 通常使用 vue devt
  • Qt实现隐藏按钮功能

    在Qt design界面中添加pushbutton 按钮 选中pushbutton 在右下角有按钮属性相关的修改内容 选中flat 按钮外围边框已消失 此时还差一步 需要修改一下 找到stylesheet 输入以下内容 输入 backgro
  • Go并发异步请求秀动抢票

    继上次python请求秀动接口 这次我将采用性能最佳的Go语言重构 tips 因分享了太多人 有人以此向外获利 所以停止分享 之前采用python异步请求 三次请求购票接口的思路 鉴于秀动app的防护措施愈来愈强 我将采用发挥go语言的协程

随机推荐

  • 实现一个在线抽奖系统,就算是个小白看了也能做出来(附源码)

    在线抽奖系统 1 项目介绍 1 功能介绍 2 开发环境与技术栈 3 项目演示 2 项目准备 1 代码框架 源码 2 数据库设计 3 后端对前端接口的实现 1 用户的登录 注册 注销 2 查询奖项设置 修改抽奖人数 3 新增 修改 删除奖项
  • JavaScript Table行填充

    使用JS脚本操作Table元素 在不同浏览器中操作方法不尽相同 当新建一行之后 IE中可以使用单元格操作来完成单元格的添加 而在FireFox中无法正确通过单元格来操作 而只能使用 td td 来实现 因此 在编写填充函数时 要注意检测浏览
  • 基础算法题——帅到没朋友(唯一性)

    帅到没朋友 当芸芸众生忙着在朋友圈中发照片的时候 总有一些人因为太帅而没有朋友 本题就要求你找出那些帅到没有朋友的人 输入格式 输入第一行给出一个正整数N 100 是已知朋友圈的个数 随后N行 每行首先给出一个正整数K 1000 为朋友圈中
  • 用TensorFlow.js实现AI换脸 !所以你知道某些网站视频的明星是怎么来的了吗?

    前言 相信很多小伙伴对TensorFlow js早已有所耳闻 它是一个基于JavaScript的深度学习库 可以在Web浏览器中运行深度学习模型 AI换脸是一种基于深度学习的图像处理技术 将一张人脸照片的表情 头发 嘴唇等特征转移到另一张人
  • python遇到can not import xxx错误

    一种不容易被发现的问题是循环引用导致该问题的发生 具体可参考 ImportError cannot import name xxxxxx 的三种类型的解决方法 Activewaste的博客 CSDN博客 cannot import name
  • Android NDK 编译 三方库记录 及 jni库封装问题

    因工作需求 要将原先的c 库跨平台编译 在Android上运行 其依赖了几个第三方库 也需要一起编译 在此做个记录 所需工具 centos 系统上完成 1 cmake 3 15 6 2 ndk android ndk r21e NDK 下载
  • Python自动抢红包,从此再也不会错过微信红包了!

    作者 上海小胖 来源 Python专栏 ID xpchuiit 目录 0 引言 1 环境 2 需求分析 3 前置准备 4 抢红包流程回顾 5 代码梳理 6 后记 0 引言 提到抢红包 就不得不提Xposed框架 它简直是个抢红包的神器 但使
  • windows禁用输入法

    Rime 呼出菜单的快捷键 ctrl grave 跟 vs code 呼出底部命令行的快捷键冲突了 每次用 vs code 时都会用 ctrl space 将输入法禁用 让它变成一个圈叉 由 1 这个快捷键是 windows 系统禁用输入法
  • vue中的事件修饰符

    vue中的事件修饰符 1 prevent 阻止默认事件 常用 a href http www baidu com a 2 stop 阻止事件冒泡 常用 margin top 20px demo1 height 50px background
  • Es中查询数据存在某个字段或者数据的不存在某个字段(must_not,must的使用)

    一 存在 二 不存在 包含两种意思 1 这条数据根本就没有这个字段 2 这条数据的字段的值为null
  • 区块链大作业前期热身报告

    作业内容 使用已有的开源区块链系统FISCO BCOS 完成私有链的搭建以及新节点的加入 截图说明搭建流程 自行编写一个智能合约并部署到私有链上 同时完成合约调用 截图说明部署流程 使用命令查看一个区块 并对各个字段进行解释 单群组FISC
  • 利用pytorch训练网络---垃圾分类,(resnet18)

    数据集包含6种垃圾 分别为cardboard 纸箱 glass 玻璃 metal 金属 paper 纸 plastic 塑料 其他废品 trash 数据数量较小 仅供学习 数据集标准备工作 包括将数据集分为训练集和测试集 制作标签文件 代码
  • redhat7.6 19c Rac禁用透明大页问题-/etc/default/grub:行8: 寻找匹配的 `“‘ 是遇到了未预期的文件结束符

    在安装redhat7 6的oracle 19c rac中 由于之前参考文档为centos版本 在执行禁用透明大页操作时报以下错误 原过程为 1 修改grub文件 cp etc default grub etc default grub ba
  • 百度智能云助力华瑞园智慧社区项目荣获IDC大奖

    在当今数字化 智能化的时代 科技的力量正日益显现 它改变着我们的生活方式 提高着我们的生活质量 9月15日 2023年IDC中国未来企业大奖优秀奖名单公布 在公众投票与专家评选团的严格评选下 百度智能云提供技术支持的 华瑞园智慧社区 项目荣
  • 运维_win server2008关闭危险端口445,135,137,138,139的方法

    昨晚爆出的onion勒索病毒 通过校园网传播 感染了很多同学的电脑 新闻 就在刚刚过去的5月12日晚上20点左右 全国各地的高校学生纷纷反映 自己的电脑遭到病毒的攻击 文档被加密 壁纸遭到篡改 并且在桌面上出现窗口 强制学生支付等价300美
  • 最短Hamilton路径

    题目 题目链接 题解 状压dp f i j 表示从0点按照路径i走到j点的最短距离 其中i为二进制数 1表示走过某点 0表示未走过某点 比如10010表示经过了1 4两个点 而不经过0 2 3点 状态转移为 假设沿路径i走到j点经过k点 且
  • UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position 0: illegal multibyte sequence

    f open testData testData pickle load f 错误提醒 gt UnicodeDecodeError gbk codec can t decode byte 0x80 in position 0 illegal
  • 如何在linux下开启FTP服务

    1 首先服务器要安装ftp软件 查看是否已经安装ftp软件下 which vsftpd 如果看到有vsftpd的目录说明服务器已经安装了ftp软件 2 查看ftp 服务器状态 service vsftpd status 3 启动ftp服务器
  • Ubuntu 16 安装IDEA

    1 安装JDK sudo mkdir usr local java cd usr loca java 将jdk 8u171 linux x64 tar gz移动到此处 然后 sudo tar zxvf jdk 8u171 linux x64
  • 三次iframe框架切换

    记录一次坑 做UI自动化 页面是嵌套的frame框架 整个页面是一个iframe 在iframe里面 上方是一个frame 下方是一个frame 下方frame里又分为左右两个frame 所以要定位右侧页面元素 需要三次切入frame框架