| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> Python知识库 -> iframe中碰到的问题及解决方法 -> 正文阅读 |
|
|
[Python知识库]iframe中碰到的问题及解决方法 |
前言? ? ? ?今天在做验证码识别项目的时候,一开始就碰到了一个问题,出了各种各样的报错,研究查询了很久终于解决了,在这里归纳分享一下。 碰到的问题及解决方法? ? ? ? ?在我定位验证码滑块元素的时候一直显示我定位语句错误,多次调试定位方法及路径未果,后来发现这里验证码的部分是用iframe写入的,也就是子Frame,相当于页面的子页面,它的结构与外部网页完全一致,selenium在打开网页后,默认在父级Frame里面操作,所以获取不到子Frame的节点。
? ? ? ? ?这时需要用switch_to.frame()的方式切换到iframe:
? ? ? ? 但是这里最后报错显示:NoSuchFrameException: Message: tcaptcha_iframe_dy,经过查询对比发现原来这个网页里面有两个iframe
? ? ? ? 这时候我以为定位近的一个就行了,结果很不幸,又是一样的报错,我只能再去查找原因,终于知道了问题所在,这里参考:selenium.common.exceptions.NoSuchFrameException: Message:xxx_liulanba的博客-CSDN博客 我用亿图照着画了两个。 ? ? ? ? iframe有两种嵌套方式?: 1.平行嵌套
?2.层级嵌套
? ? ? ? ?层级嵌套需要一层一层的进入,最后再一层一层的退出,结果按照方法尝试后还是定位不到iframe,这下就又蒙了,好在只要肯查大概率就能解决问题,毕竟csdn上还是挺多优秀博主的,结合分析对比后发现,这里的iframe标签属性是动态的,要改变定位方式:selenium里的iframe 报错 NoSuchFrameException: Message: no such frame: element is not a frame_Binyee的博客-CSDN博客?在这我找到了解决方法,直接定位iframe标签:
????????但是有意思的是我在使用时又有了新的报错:IndexError: list index out of range,这个报错有两种可能,1.索引超出范围;2.列表是空的没有元素,我估计也就是根本没找到这个标签,原因是这里其实是平行嵌套,但我理解错了用了层级嵌套的方法,先进入了第一个iframe,没回到Frame,所以查不到第二个标签元素。 最后代码如下
? ? ? ? 测试成功,这里的属性内容在父frame里是大写的,子frame为小写:
? ? ? ? ?在这里感谢以上博主,同时欢迎大家指正交流。 |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/26 23:18:22- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |