Python_selenium: 元素定位不到的罪魁祸首之一:iframe

这篇具有很好参考价值的文章主要介绍了Python_selenium: 元素定位不到的罪魁祸首之一:iframe。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:组内同事最近在写脚本,使用复制的xpath始终定位不到元素,报错内容:selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":"//table[text()='contentTable']/tbody/tr/td[16]/a[2]/i"}

解题思路:

1. 由于提供的html截图信息,发现存在多层body消息体拼接成一个html页面的情况,所以推荐使用模糊查询的xpath定位元素,也就有了这个xpath:"//table[text()='contentTable']/tbody/tr/td[16]/a[2]/i"【如果不清楚模糊查询xpath怎么写,可以在评论区提问】

改了后,不好用,还是报错。

2. 是不是等待没加?

不是,等待了10秒,肯定能够加载

3. 当前元素父节点,是否存在iframe?:存在!!!

Python_selenium: 元素定位不到的罪魁祸首之一:iframe

如果父节点存在图上这种iframe消息体就需要先跳转到iframe,才能够定位到元素:

跳转方式有很多,这里推荐使用:driver.switch_to.frame(0)

后面的0代表跳转到第一个iframe,如果页面有多个iframe,需要看看这个元素所在iframe是第几个,如果是第二个,就修改成1

问题解决。

问题升级:

就是这个页面,在进行后续操作的时候,又报错了,还是一样的!

也是一番错误的定位,最终定位到了这个html结构

Python_selenium: 元素定位不到的罪魁祸首之一:iframe

通过这个html结构发现,需要定位的元素,不在iframe窗口下。如果之前已经跳转到了iframe,之后定位的元素也只能够定位到iframe窗口下的元素了。

这时:需要跳出之前进入的iframe页面: driver.switch_to.default_content()

总结:

1. 如果父节点存在iframe,需要先跳转到iframe才能够定位到元素

2. 如果之前跳转过iframe,当需要定位不在同iframe的脚本,需要先跳出之前的iframe窗口,才能够继续定位

3. 定位不到元素的原因,可以优先考虑iframe~文章来源地址https://www.toymoban.com/news/detail-441260.html

到了这里,关于Python_selenium: 元素定位不到的罪魁祸首之一:iframe的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 解决selenium定位不到xpath元素: “NoSuchElementException: Message: no such element: Unable

    在使用selenium爬取的时候用xpath定位元素,最常见的报错就是这个,通常要么是xpath写错了,要么就是元素还没加载出来。 如果是前者可以用谷歌浏览器的xpath helper插件检查xpath是否正确,后者可以增加等待时间或使用以下语句等到元素可见再执行后续操作: 这次我遇到的问题

    2024年02月16日
    浏览(36)
  • selenium--面试官问元素定位不到怎么办?工作中还在为元素定位不到而烦恼?看这一文就够了--内附解析跟代码解决案例!让面试官对你刮目相看

    未切换句柄 ===== 切换句柄是什么意思呢。就是你从百度搜索到下面例子的京东界面,浏览器中打开了两个网页,你需要从百度的界面跳转到这么界面。如下: 这里元素定位输入框是id=key但是你会发现定位不到。 from time import sleep from selenium import webdriver fox = webdriver.Firefox() f

    2024年04月13日
    浏览(57)
  • Python - selenium-元素定位

    目录 一.前序工作 二.webdriver测试 三.元素定位方式    根据ID定位                a = wd.find_element(By.ID, \\\'值\\\') 根据NAME定位                 a = wd.find_element(By.NAME, \\\'值\\\') 根据CLASS_NAME定位            a = wd.find_element(By.CLASS_NAME, \\\'值\\\')   根据TAG_NAME定位      

    2024年02月01日
    浏览(70)
  • Python selenium元素的定位

    视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他 会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在

    2024年02月08日
    浏览(40)
  • Python爬虫——selenium_元素定位

    元素定位:自动化要做的就是模拟鼠标和键盘来操作这些元素,点击,输入等等。操作这些元素前首先要找到它们,WebDriver提供很多定位元素的方法 根据id来找到对象【常用】 根据标签属性的属性值来获取对象 根据xpath语句来获取对象【常用】 find_elements_by_xpath可以返回多个

    2024年02月13日
    浏览(42)
  • 自学Python 69 Selenium八大元素定位方法(新版BY方法)_selenium定位元素的方法和优缺点

    文章目录 Python Selenium八大元素定位方法(新版BY方法) 前言 一、常用的八种定位方法(新旧对比) 二、查看网页元素 三、八大元素定位示例 1、id定位 2、name定位 3、class定位 4、tag定位 5、link定位 6、partial_link定位 7、xpath定位 8、CSS定位 在学习使用Selenium对网页元素进行定位时

    2024年04月22日
    浏览(57)
  • Python学习笔记——selenium定位iframe和元素(快速定位)

    在使用selenium过程,发现定位iframe、元素比较困难,所以制作一个辅助小工具。  当前界面没有,调整driver位置 1.Xpath定位  2,.其他定位方式 获取元素、操作失败重复操作,直至操作成功。

    2024年02月13日
    浏览(48)
  • Python Selenium 八大元素定位方法(下)

    今天我们来学习UI自动化中,剩余五个元素定位方法:tag_name、link_text、partial_link_text、Xpath、css_selector 以tag_name元素定位为例 HTML是由不同的标签组成的,每个标签都是指的同一类,所以用tag定位效率低下,一般不建议使用。 以link_text元素定位为例 1、使用F12,定位到含有链接

    2024年02月12日
    浏览(42)
  • 2.Python中selenium八大元素定位

    目录 如何进行元素定位 浏览器开发者工具介绍 一、id属性定位 二、name定位 三、class_name定位 四、tag_name定位 五、link_text定位 六、partail_link_text定位 七、xpath定位 7.1 选取节点 7.2 谓语 7.3 轴 7.4 函数 7.5 逻辑运算 八、css定位 8.1 css的定义 8.2 css定位策略 1.id选择器 2.class选择器

    2024年02月04日
    浏览(44)
  • 【Python中Selenium元素定位的各种方法】

    1、元素定位操作: 2、创建浏览器驱动操作,导入By模块: 3、ID元素定位 4、name元素定位 5、class_name:class属性元素定位 6、tag_name:标签名元素定位 7、link_text:超链接标签元素定位 8、partial_link_text:超链接标签(模糊)元素定位 9、xpath:路径(绝对路径、相对路径)元素定位

    2024年02月19日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包