selenium中关于iframe元素定位的问题

轻量级替代方案:用AIFlowy + Ollama在本地快速搭建一个可用的AI智能体平台 本文介绍了如何使用AIFlowy和Ollama在本地快速搭建轻量级AI智能体平台,涵盖从环境准备到智能体集成的全流程。通过简化部署步骤和优化性能,15分钟内即可完成搭建,适用于原型验证和小团队协作,显著提升开发效率。 阅读详情

selenium中关于iframe元素定位的问题

selenium中关于iframe元素定位的问题

最近在学习selenium的元素定位,接触到iframe后,遇到元素定位失败的情况,本文主要针对什么情况需要进入iframe,以及什么时候需要跳出iframe进行总结。比较浅显,纯属个人学习见解,不正之处可指教。
在这里插入图片描述
如图所示,脚本需要完成的动作是:
进入调车列表->点击【预约用车】按钮–>输入用车条件后点击【提交】->【申请用车】->【确定】->【关闭】

在各个按钮和界面中间,有不同的iframe。想要操作以上按钮,就必须跳入指定的iframe中进行元素定位,否则就会报错提示元素定位失败。

脚本报错时的原因分析

我因为刚学习selenium,只知道元素在iframe内的,要跳转进入iframe后才能对元素进行定位,并没有意识到,元素定位后还需要跳出iframe。所以脚本一直报错定位不到元素。以下为错误脚本编写示例:
driver.switch_to.frame(“iframe0”)
time.sleep(1)
driver.find_element_by_id(“bt0”)

driver.switch_to.frame(“iframe1”)
time.sleep(1)
driver.find_element_by_id(“bt1”)

driver.switch_to.frame(“iframe2”)
time.sleep(1)
driver.find_element_by_id(“bt2”)
driver.find_element_by_id(“bt3”)
driver.find_element_by_id(“bt4”)

脚本运行时,在driver.switch_to.frame(iframe2)这句提示定位不到iframe2

原因是因为,iframe2和iframe1是平级的,我前面已经跳转进入了iframe1,不能直接定位到iframe2,如果iframe2是iframe1的子级,就可以直接定位。
因此,我想定位到iframe2,就需要先从iframe1中跳到父级iframe0,可以使用的方法有以下两种:
#方法一:退出到父级
driver.switch_to.parent_frame()

#方法二:退出全部的frame嵌套层,回到主界面
driver.switch_to.default_content()
我这个场景因为iframe1和iframe2都是0的子级。因此使用退出到父级的方式直接再进入iframe2就可以了。
如果我使用退出全部frame的方法,那么定位iframe2之前,需要先进入iframe0才可以。

正确的脚本示例

driver.switch_to.frame(“iframe0”)
time.sleep(1)
driver.find_element_by_id(“bt0”)

driver.switch_to.frame(“iframe1”)
time.sleep(1)
driver.find_element_by_id(“bt1”)

driver.switch_to.parent_frame()

driver.switch_to.frame(“iframe2”)
time.sleep(1)
driver.find_element_by_id(“bt2”)
driver.find_element_by_id(“bt3”)
driver.find_element_by_id(“bt4”)

从SIGGRAPH审稿人视角看:什么样的TOG论文更容易被接收? 本文从SIGGRAPH审稿人视角深入解析TOG论文的审稿标准与投稿策略,揭示如何提升论文接收概率。重点探讨创新性、技术深度、实验验证等核心评分维度,并提供写作技巧与审稿意见应对策略,帮助研究者优化ACM Transactions on Graphics投稿质量。 阅读详情

相关推荐

Super4PCS文章阅读笔记

Super4PCS阅读笔记 Super4PCS阅读笔记 前言 前言 今天给大家分享一下点云配准四点法4PCS0的变种——Super4PCS。此算法的原文在:Super4PCS: Fast Global Pointcloud Registration via Smart Indexing。稍微我也会写一篇关于如何使用这篇文章的里所提供的代码进行点云粗配准。关于四点法...

Vodake的博客 4539

【python+selenium】iframe定位报no such element,解决方法总结

在做自动化用例写作的过程中,发现使用 xpath无法定位到页面元素, 报如下错误 需要定位的页面如下 很多的页面都是这样的结构,实际需要定位的元素例如查询按钮、新增按钮之类的业务控件都是内嵌在框架页面中,而我们用selenium定位打开的页面只能定位到最外层的页面内而嵌套的页面是无法访问的,要想访问嵌套的页面内的元素必须先切换到iframe内才能进行定位,所以第一步要解决的就是定位到iframe,然后通过driver.switch_to.frame(iframe)进行切换 定位iframe有三大类六种方

小衫虎 1911

关于MOS管栅极和栅介质(氧化物)的材料选择

大概解释了高K材料作为栅介质的好处,以及为什么会带来好处,同时引出了金属栅的优点,总结了使用高K材料和金属栅的原因。

qq_52054477的博客 1万+

​selenium中元素定位正确但是操作失败,6种解决办法全稿定

selenium中元素定位正确但是操作失败的原因无外乎以下4种: 一、页面没加载好 解决方法:添加等待方法,如: time.sleep() 二、页面提交需要等待给数据后台 解决方法:添加等待方法,如: time.sleep() 三、浏览器没有以最大化方式打开,导致元素被隐藏,定位不到 解决方法: 将网页最大化:driver.maximize_window() 如果屏幕比例固定,分辨率有限,通过网页最大化也没办法解决的话,可以通过执行JS方法来实现。 browser.execute_script

qq_48811377的博客 2901

MIPI video mode 和 command mode 的区别

1、何为LCD RAM? LCD 是指字面意思是液晶显示屏(Liquid Crystal Display), 而RAM: 随机存取存储器(Random-Access Memory),两者完全是风马牛不相及的东西。 下图是一个标准的LCD的爆炸图(不含TP),请注意图中红色mark的地方:控制IC-- LCD的大脑。所谓的LCD RAM自然是指此大脑是否包含RAM. 题外话<不感兴趣的...

精诚所至 4690

R语言分布式滞后非线性模型DLNM实战:空气污染与健康数据的动态效应可视化与政策启示

本文详细介绍了R语言中分布式滞后非线性模型(DLNM)的应用,特别关注空气污染与健康数据的动态效应可视化。通过dlnm包实现PM2.5等污染物的滞后效应分析,提供从数据预处理、模型构建到结果可视化的完整流程,并探讨了其在公共卫生政策制定中的实际应用价值。

weixin_29079643的博客 514

iOS 下,iframe 页面中的 position:fixed 定位无效的解决办法

iOS 下,iframe 页面中的 position:fixed 定位无效的解决办法

codeRainbow的博客 754

保姆级教程:在K230开发板上为张大头步进电机实现位置、速度、回零全功能控制

本文提供了一份详细的K230开发板与张大头步进电机的控制教程,涵盖硬件连接、协议解析、模块化代码实现及实战案例。通过位置、速度和回零功能的全面讲解,帮助开发者快速掌握步进电机的高级控制技术,适用于自动化、机器人等应用场景。

weixin_42629671的博客 713

关于iframe页面嵌入后在ios设备上position=fixed属性失效的解决办法

项目中有个需求时在页面的最下面有一排按钮,这排按钮需要固定到页面的最下面,不能随着屏幕的滚动为滚动。 问题: 功能是使用css的position:fixed; bottom:0;属性设置的。 单独一个页面访问,不管在PC上还是移动设备上都可以正常显示。 But

MarkAsh的专栏 8733

【agent实战教程】OpenClaw多个agent一文通

一个合格的独立agent,必须具备6个完全独立的专属组件独立组件路径规则核心要求不独立的严重后果唯一agentId配置文件中全局唯一,不能重复,建议用英文+数字,不要有特殊字符agent配置冲突,消息派单错误,会话串线独立工作区(workspace)建议每个agent一个独立文件夹,不要共用人设、记忆、规则混在一起,agent人设崩塌,对话串线独立状态目录(agentDir)固定系统自动生成,绝对禁止多个agent复用同一个agentDir。

海兰 649

2024年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

他尝试编写了如下程序,请你完善划线处的代码,计算出在h点s分放学时,三个时针分别经过3点位置的次数,用一个元组表示各指针经过3点位置的次数 (时针次数,分针次数,秒针次数) ,并输出。所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。匿名函数,冒号之前表示的是这个函数的参数,冒号之后表示返回值,可以使用默认值,使用时需要将它赋值给一个变量,设置默认值不是必须,如无传入实参则使用默认值,如有传入实参则使用实参。

人生就是一个不断学习的过程 371

iframe子页面position的fixed

iframe子页面position的固定定位

香蕉猪的专栏 1万+

信捷PLC XD5系列运动控制(10轴)编程应用篇

项目PLC采用XD5-60T10-E,36DI 24DO 晶体管输出,支持10路脉冲输出功能。TMR指令定时器时基可以自己设定,这点比其他品牌PLC方便。ZRN指令我们需要上升沿指令触发。 5、变址寻址 该说不说这个变址寻址是真的强,比西门子指针、三菱的变址寄存器Z 、V都要更加灵活。 7、特殊寄存器:时钟 8、如何建立PLC通讯...............

RXXW_Dor的博客 1万+

python+selenium找不到元素问题——pageObject设计模式实现定位iframe框架中的元素,定位没有id和name的iframe

找不到元素的原因大致有两点: 1. 页面没有加载出来,找不到定位的元素,设置等待时间即可; 2. 定位的元素在iframe框架内,所以定位不到。 firebug中如下图显示为Top Window的话,就是可以直接定位的元素 firebug中如下图显示为iframe的话,该元素就是在iframe框架中,需要使用switch_to.frame()方法来切换到iframe框架内再定位。 ...

Missshi的博客 1414

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Selenium遇到iframe,直接定位元素no such element问题

Selenium遇到iframe,直接定位元素no such element问题 这是因为 Selenium 只知道顶层文档中的元素。 WebDriver 提供了三种切换到帧的方法。 a、使用 WebElement b、使用 name 或 id c、使用索引 操作完成退出iframe回到上一层html

fenghuashao的博客 1962

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Selenium定位不到元素问题--iframe准确定位元素

废话不多说,直接开干! 原因是今天上午找了半天,定位不到selenium的元素,一直纠结中,好在之前也遇到类似情况!细细分析是iframe问题! 如图: 直接上代码 ## 切换Iframe driver.switch_to.frame('nest-other-iframe') time.sleep(3) # 转换方式点击 driver.find_element_by_xpath('//*[@id="orderMQueryForm_add_billType"]').click() time.sleep

weixin_37254196的博客 443

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

解决iframe对selenium定位元素的干扰问题

解决iframe对selenium定位元素的干扰问题场景还原解决思路 场景还原 我们在通过selenium的find_element方法定位页面元素的时候会发现一个问题,我的定位条件没有问题,定位元素也是非隐藏元素,可代码执行时总提示Message: no such element: Unable to locate element,百思不得其解时,最后发现元素嵌套在了iframe当中,无法直接定位。 这个时候我们通常的解决办法就是,查看元素所在的iframe,然后调用selenium的switch_to

qq_40788412的博客 698

多层级iframe时,selenium定位页面元素失败问题总结

昨晚在用selenium写网易相册首页(http://photo.163.com)的登录自动化代码时,发现怎么也定位不到登录框的用户名元素,如下图: 代码如下: import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; impor

Hanweijin_Kevin的博客 1339

Selenium定位iframe标签中元素的问题

最近做自动化遇到了iframe的问题,正好趁着现在解决一下,网页源代码是这样的 #进入iframe方法 iframe = driver.find_element_by_xpath(’//*[@id=“mini-3$body$3”]/iframe’) #切换到iframe里 driver.switch_to.frame(iframe) 接下来我们进入之后要退出才能在重新定位其他iframe中的东西,如果是在同一个iframe中可以不退出继续定位 代码 driver.switch_to_default_co

langyichen的博客 397

Python selenium解决弹框中元素定位问题,iframe、frame和frameset

在自动化测试过程中,经常会遇到填写的定位应该是正确的啊,为什么就是定位不到呢?通过浏览器工具检查定位也没问题呢? 首先检查填写定位内容是否错误,可通过浏览器检查来验证,做法如下,下面的代码是我的一个简单的例子。 # 一个简单的demo,可以拿来简单跑一下 from selenium import webdriver import time driver = webdriver.Chrom...

songlh1234的博客 3057

selenium自动化测试多层iframe 嵌套定位元素问题

自己想搭建一个自动填单的框架,就看了看Python3.7.4+selenium 其实selenium定位很简单,主要是前端页面如果有iframe,就得使用switch_to.frame() 先切入iframe 括号里可以填写iframe的index、id、name 第一层一般都比较好切入 我遇到了一个问题 页面结构如下: 我进入第一层iframe之后,做了一个click的操作,接...

u012404532的博客 2279

python + selenium 操作浏览器 常用操作、常见问题及解决 [ 元素定位 CSS选择器 无法定位元素 iframe ]

selenium是一个用以操作浏览器的库,常被应用于自动化测试和爬虫。 先把相关的文档放上来:https://selenium-python.readthedocs.io/ 安装及入门 模块的安装就不赘述了,但安装完模块以后需要同时安装对应浏览器的驱动,并放到python的文件目录下,才能正常的打开浏览器。 具体驱动的安装在上面的文档中可以找到。 元素定位 selenium通过正确打开...

weixin_41563274的博客 2943

关于selenium定位不到元素的问题(页面结构为iframe,iframe 跳转至内嵌网页)

关于selenium定位iframe问题,可以使用开发者工具

weixin_63597751的博客 818

RPA手把手——Selenium 由于 iframe 定位不到元素

艺赛旗 RPA9.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 场景分析 使用 Selenium 来模拟登陆 QQ 邮箱时,发现通过diver.find_element_by_id(‘u’)无法定位到账号输入框,通过 ctrl+u 查看源码分析,发现账号输入窗口是在 iframe 中,窗口相关标签并不在最初 dom ...

weixin_44447687的博客 1206

Selenium中元素定位失败(iframe嵌套网页)

元素定位失败 【163网易云邮箱】登录实例: from selenium import webdriver import time driver = webdriver.Chrome() driver.get("http://mail.163.com/") driver.find_element_by_name("email").send_keys("C18325528709") time.sleep(3) driver.find_element_by_name("password").send_.

qq_50729944的博客 8622

selenium webdriver 定位元素定位不到 原因之一该元素处于iframe中

当selenium webdriver 在定位方式没有问题的情况下仍然定位不到该元素,可以查看页面源代码查看该元素是否在iframe中,如果在iframe中通过switchTo().frame(int arg0),先选中该frame再定位该元素即可解决问题。

671
上一篇: pip安装的时候出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after conne
下一篇: appium环境安装
summer_learn
博客等级 码龄8年 17粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值