前言

在用Python写一些自动登录脚本的时候,发现老是定位元素失败,仔细检查了xpath没有错误,运行报错selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/div/div/div/div[4]/button[1]"},换用css定位器等等都还是无法解决
关键代码如下

xpath4 = '/html/body/div/div/div/div/div[4]/button[1]'
answer_4 = driver.find_element_by_xpath(xpath4)
answer_4.click()

分析

检查所在位置是否隶属于iframe标签
iframe 元素会创建包含另外一个文档的内联框架(即行内框架)。selenium无法定位到内联框架,所以报错没有这个元素
在这里插入图片描述

解决

使用switch_to.frame()切换到内联框架

driver.switch_to.frame("iframe0")#注意,这里的iframe0改为需求网页的iframe的id名
xpath4 = '/html/body/div/div/div/div/div[4]/button[1]'
answer_4 = driver.find_element_by_xpath(xpath4)
answer_4.click()

参考博客
1.Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)

2.selenium - switch_to.frame()- 内嵌表单的切换

GitHub 加速计划 / eleme / element
15
2
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:2 个月前 )
c345bb45 1 年前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 1 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐