自动化测试定位不到元素?可能是 frame 在搞鬼
很多人在用Splinter或Selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,就是定位不到,这种情况很有可能是frame在搞鬼。
说白了就是网站上的网页A,又嵌入了其他网页B。你访问了网页A,在里面可以看到网页B的元素,但使用工具就是无法操作B,笨方法就是找到B的链接,去访问B,再来操控B上的元素。
聪明的方法就是使用Selenium提供的 switch_to.frame() 方法来切换frame。
切换 frame 的方法
假如有这样的网页:
<html>
<head> <title>FrameTest</title>
</head>
<body>
<iframe src="a.html" id="frame1" name="myframe">
</iframe>
</body>
</html>
可以使用如下的方法:
from selenium import webdriver
driver = webdriver.Firefox()
driver.switch_to.frame(0) # 1.用frame的index来定位,第一个是0
或使用 id 来定位:
driver.switch_to.frame("frame1") # 2.用id来定位
或用 name 来定位:
driver.switch_to.frame("myframe") # 3.用name来定位
或使用 WebElement对象来定位:
#driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) # 4.用WebElement对象来定位
如果是 splinter,则可以这样:
mybrowser.driver.switch_to.frame(0)
切回主文档的方法
切到 frame 中之后,我们便不能继续操作主文档的元素,这时如果想操作主文档内容,则需切回主文档。
driver.switch_to.default_content()
有时候我们会遇到嵌套的 frame,如下:
<html> <iframe id="frame1"><iframe id="frame2" / > </iframe>
</html>
driver.switch_to.frame("frame1")
driver.switch_to.frame("frame2")
则可以使用以下方式切回父 frame:
driver.switch_to.parent_frame() # 如果当前已是主文档,则无效果
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
加入我的软件测试交流群:632880530免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取
相关文章:
自动化测试定位不到元素?可能是 frame 在搞鬼
很多人在用Splinter或Selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,就是定位不到,这种情况很有可能是frame在搞鬼。 说白了就是网站上的网页A,又嵌入了其他网页B。你访问了网页A,在里面可以看到…...
uni-app 开发中,监听 input 键盘事件获取不到按下按键值怎么办?
uniapp 开发 H5 时,无法监听按钮键盘事件的原因以及解决方法。 问题描述: 不少 uni-app 开发者在使用 input 组件时,监听 keyup 事件时,获取不到键盘的 keyCode。编写的代码如下: <template><input keyup&…...
【juc】countdownlatch实现并发网络请求
目录 一、截图示例二、代码示例2.1 测试代码2.2 接口代码 一、截图示例 二、代码示例 2.1 测试代码 package com.learning.countdownlatch;import lombok.extern.slf4j.Slf4j; import org.springframework.web.client.RestTemplate;import java.util.Arrays; import java.uti…...
在供应链管理中,如何做好库存分析?库存分析有哪些监控指标?
在供应链管理中,库存分析是其重要的一环。库存分析的方法繁杂且广泛,选择正确的方法才能更好的进行库存分析,下面就为大家盘点一些常用的库存分析方法和监控指标,全程干货,建议收藏! 01 如何进行库存分析&…...
黑豹程序员-架构师学习路线图-百科:Database数据库
文章目录 1、什么是Database2、发展历史3、数据库排行网4、总结 1、什么是Database 当今世界是一个充满着数据的互联网世界,各处都充斥着大量的数据。即这个互联网世界就是数据世界。 支撑这个数据世界的基石就是数据库,数据库也可以称为数据的仓库。 …...
你相信光吗?黑灯工厂重新相信“光”
你知道“黑灯工厂”吗?望文生义,所谓黑灯工厂,就是可以不需要照明的工厂。全程流水线自动化生产,无人干预、无人值守,工厂变成黑匣子,原材料进去,成品出来,流水线上百分百自动化。 完…...
Ubuntu 20.04使用源码安装nginx 1.14.0
nginx安装及使用(详细版)是一篇参考博文。 http://nginx.org/download/可以选择下载源码的版本。 sudo wget http://nginx.org/download/nginx-1.14.0.tar.gz下载源代码。 sudo tar xzf nginx-1.14.0.tar.gz进行解压。 cd nginx-1.14.0进入到源代码…...
springboot框架拦截器中HttpServletRequest 请求如何区分是图片上传流还是普通的字符流?
在Spring Boot框架中的拦截器(Interceptor)中,可以通过检查Content-Type请求头来区分图片上传流和普通的字符流。 当客户端发送POST请求并携带文件时,Content-Type请求头通常会包含multipart/form-data或者类似的值。这表明该请求…...
简单聊聊 TCP 协议
简单聊聊 TCP 协议 如何实现可靠传输 ?完全可靠存在比特差错存在丢包流水线可靠数据传输协议回退N步 (GBN)选择重传 (ARQ) 小结 TCPTCP 连接报文段结构序号和确认号 可靠数据传输避免重传超时时间加倍快速重传回退N步还是选择重传 流量控制连接管理拥塞控制拥塞原因拥塞控制方…...
钡铼BL124PN:简单快速转换Profinet到Ethernet/IP
钡铼技术BL124PN是一款高性能的Profinet转Ethernet/IP网关设备。该网关专为工业自动化领域设计,用于实现不同协议之间的互连和通信。BL124PN采用可靠稳定的硬件和先进的通信技术,具有以下主要特点: 协议转换能力:BL124PN能够将Pr…...
【golang】go 空结构体 详解 空结构体内容占用及大小
一、空结构体基础 空结构实例 和 空结构体变量 本质是一样的 1、所有空结构体地址都是一样的2、大小都为0(最独特的) package mainimport ("fmt""time""unsafe" )type EST struct { }func main() {// 一、基础// 空结构…...
身为产品经理该如何向客户推广API商品数据接口
在当今数字化的时代,API(Application Programming Interface,应用程序编程接口)已成为各种软件应用程序之间交互数据的主要方式。API商品数据接口作为一种特殊类型的API,能够让不同的系统之间共享商品数据,…...
【数据结构】460. LFU 缓存
460. LFU 缓存 解题思路 get操作 返回key对应的val 然后增加对应的freq插入操作 如果key已经存在 直接进行更新 如果不存在 但是容器已经满了 直接进行删除freq最小的Key 之后进行插入 class LFUCache {// key到 val的映射 KVHashMap<Integer,Integer> keyToVal;// …...
文字转语音播报模块(一):阿里云nls服务使用示例
一、业务场景 最近笔者在业务中涉及到语音告警的模块,需要讲告警内容以文件或流形式返回给前端进行语音播报,具体的分析与处理如下 二、业务分析 首先告警内容提示信息这里做的处理是通过专门字段去存储、编辑,根据拟定好的代码逻辑判断是…...
Vscode配置C#编程环境(win10)
目录 1、安装好Vscode 2、下载安装.NetCore SDK 3、配置C#环境 3.1 打开Vscode并下载扩展 3.2 Vscode中打开文件夹并配置环境 3.3 调试运行 1、安装好Vscode 2、下载安装.NetCore SDK 官网如下,下载完成后双击打开一路走到底就行.NetCore SDK官网 软件显示安…...
python:xlrd 读取 Excel文件,显示在 tkinterTable 表格中
pip install xlrd xlrd-1.2.0-py2.py3-none-any.whl (103 kB) 摘要: Library for developers to extract data from Microsoft Excel (tm) spreadsheet files pip install tkinterTable tkintertable-1.3.3.tar.gz (58 kB) 摘要: Extendable table class for Tkinter 源代…...
深度学习——深度学习计算一
深度学习——深度学习计算一 文章目录 前言一、层和块1.1. 自定义块1.2. 顺序块1.3. 在前向传播函数中执行代码1.4. 小结 二、参数管理2.1. 参数访问2.1.1. 目标参数2.1.2. 一次性访问所有参数2.1.3. 从嵌套块收集参数 2.2. 参数初始化2.2.1. 内置初始化2.2.2. 自定义初始化 2.…...
yolov5及yolov7实战之剪枝
之前有讲过一次yolov5的剪枝:yolov5实战之模型剪枝_yolov5模型剪枝-CSDN博客 当时基于的是比较老的yolov5版本,剪枝对整个训练代码的改动也比较多。最近发现一个比较好用的剪枝库,可以在不怎么改动原有训练代码的情况下,实现剪枝的…...
力扣第257题 二叉树的所有路径 c++ 树 深度优先搜索 字符串 回溯 二叉树
题目 257. 二叉树的所有路径 简单 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [1,2,3,null,5] 输出:["1->2-&g…...
保研之旅·终
一.背景 学校: 中211 通信工程专业 成绩: 绩点前3% 英语: CET4:523 CET6:505 竞赛:两个国奖,若干省奖 科研:两项校级大创,无论文产出 二.基本情况 夏令营入营: 哈工大…...
达梦数据库 视图 错误 [22003]: 数据溢出
今天通过DBeaver连接访问达梦数据库的一个视图,报错:错误 [22003]: 数据溢出 经过分析,原因是视图字段的数据类型和原表的数据类型不一致造成的...
【文献阅读】【NMI 2022】LocalTransform :基于广义模板的有机反应性准确预测图神经网络
预测有机反应产物是有机化学的一个基本问题。基于成熟有机化学知识,化学家现在能够设计实验来制造用于不同目的的新分子。但是,它需要经验丰富的专业化学家来准确预测化学反应的结果。为了进一步帮助有机化学家并在数字化学时代实现全自动发现࿰…...
QQ浏览器怎么才能设置默认搜索引擎为百度
问题: 打开QQ浏览器,搜索相关信息时发现总是默认为”搜狗搜索引擎“,想将其转为”百度搜索引擎“ 解决: 1、点击浏览器右侧”菜单“图标,选择”设置“,如下图所示: 2、在”常规设置“中的”搜…...
Go Gin Gorm Casbin权限管理实现 - 3. 实现Gin鉴权中间件
文章目录 0. 背景1. 准备工作2. gin中间件2.1 中间件代码2.2 中间件使用2.3 测试中间件使用结果 3. 添加权限管理API3.1 获取所有用户3.2 获取所有角色组3.3 获取所有角色组的策略3.4 修改角色组策略3.5 删除角色组策略3.6 添加用户到组3.7 从组中删除用户3.8 测试API 4. 最终目…...
js 封装一个异步任务函数
// 异步任务 封装 // 1,定义函数 // 2,使用核心api(queueMicrotask,MutationObserver,setTimeout) function runAsynctask (callback){if(typeof queueMicrotask "function" ){queueMicrotask(callback)}else if( typeof MutationObserver "functio…...
目标检测YOLO实战应用案例100讲-基于无人机航拍图像的目标检测
目录 前言 国内外研究现状 目标检测研究现状 无人机航拍目标检测研究现状...
PyQt5配置踩坑
安装步骤比较简单,这里只说一下我踩的坑,以及希望一些大佬可以给点建议。 一、QtDesigner 这个配置比较简单,直接就能用,我的配置如下图: C:\Users\lenovo\AppData\Roaming\Python\Python311\site-packages\qt5_app…...
内网渗透笔记之内网基础知识
0x01 内网概述 内网也指局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的历程安排、电子邮件和传真通信服务等功能。 内…...
vue3+elementPlus:el-select选择器里添加按钮button
vue3elementPlus:el-select选择器里添加按钮button,在el-select的option后面添加button //html <el-select class"selectIcon" value-key"id" v-model"store.state.HeaderfilterText" multiple collapse-tagscollapse-…...
Android 模拟点击
Android 模拟点击 1.通过代码的方式实现 通过模拟MotionEvent的方式实现 //----------------模拟点击--------------------- private void simulateClick(View view, float x, float y) {long downTime SystemClock.uptimeMillis();final MotionEvent downEvent MotionEve…...
wordpress 卸载插件/广东清远今天疫情实时动态防控
目录 冯诺依曼体系 程序(program) 指令(instruction) 数据(data) CPU的基本工作原理 逻辑门:二级的电子开关 非门 与门 或门 异或门 算术逻辑单元 ALU(Arithmetic & Logic Unit) 算术单元(Arithmetic Unit) 逻辑单元(Logic Unit) ALU符号 控制单元 CU(Con…...
内贸在什么网站做/石家庄限号
支付宝沙箱环境支付demo 下载电脑网站的官方demo: 下载地址:https://docs.open.alipay.com/270/106291/ 解压导入demo项目 3.配置AlipayConfig 3.1 注册蚂蚁金服开发者账号 注册地址:https://open.alipay.com/platform/home.htm ÿ…...
网站建设难做吗/百度推广的渠道有哪些
一.概念 列表视图;用来显示多个可滑动项列表的ViewGroup;需要适配器Adapter 将集合中数据和每一个Item所对应的布局动态适配到ListView中进行显示。 1 <?xml version"1.0" encoding"utf-8"?>2 <LinearLayout xmlns:andro…...
做素材网站存储/百度sem代运营
最佳答案//index下标从0开始public static int[] remove(int[]ary,int index){int[]array new int[ary.length-1]; //返回数组int flag 0; //作为标识,表示是否已删除index位置处的值,0表示未到//满足以下条件,返回nullif(arynull||ary.length<1||i…...
湖南住房与城乡建设部网站/网站开发工具
1、升级docker compose ,docker官方安装方法 $ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 这个下载过程会比较慢 修改权限 $ sudo chmod x /usr/local/…...
产品介绍网站设计怎么做/网络营销有哪些例子
1. 前言 前文中讲了shuffleMapTask如何运行,输出Shuffle结果到Shuffle_shuffleId_mapId_0.data数据文件中,每个executor需要向Driver汇报当前节点的Shuffle结果状态,Driver保存结果信息进行下个Task的调度。 2. StatusUpdate消息 当Execut…...