driver.find_element 找不到元素的大坑

news2024/11/28 8:40:24

前端使用element框架。

登录进去使用开发人员工具能看到元素,复制xpath使用find_element死活找不到。

其中一次复制的xpath 注意红色部分:

  #先点击一下输入框

 driver.find_element(By.XPATH,'/html/body/div[1]/section/section/section/main/div/div[1]/div/form/div[1]/div/div/div/div/div/input').click()
    time.sleep(1)

#再点击弹出内容选项

driver.find_element(By.XPATH,'/html/body/div[3]/div[11]/div/div/div[1]/ul/li[1]')

我也是小白只能反复试试。

直到我关闭了几个标签页,刷新了一下页面。才发现页面div元素少了好几个。

我真是服了。

原因居然是因为是多标签页,每多打开一个页面,我找的那个元素所在div,前面就会多几个div元素。

问题难找的原因有很多,比如:

  • 框架没有使用原生控件,使用input+ul 实现下拉效果,页面没有显性value值。
  • 最坑的是我要操作的那个页面是个“”新增功能"页面,必须先打开列表页才能打开这个新增页。
  • 另外框架元素的很多值都是实时变化的。

耗费4个多小时能找到问题也是比较偶然,好在问题解决了。感谢百度,感谢努力的我。

这是查找元素方法。

def find_element_by_xpath(driver, xpath):  
    """  
    使用给定的XPath查找元素。  
  
    :param driver: Selenium WebDriver的实例。  
    :param xpath: 要查找的元素的XPath。  
    :return: 如果找到了元素,则返回True;否则返回False。  
    """  
    try:  
        # 设置隐式等待为0毫秒(通常不推荐这样做,但根据您的需求)  
        # 注意:隐式等待在这里实际上不会生效,因为是在查找元素之前设置的  
        # 且隐式等待会被每个find_element调用重置,所以这里设置为0影响不大  
        driver.implicitly_wait(0)  
          
        # 尝试找到元素  
        driver.find_element(By.XPATH, xpath)  
        return True  
    except NoSuchElementException:  
        # 如果没有找到元素,则捕获异常  
        return False  
    finally:  
        # 注意:通常我们不会在这里关闭浏览器,因为方法可能被多次调用  
        # 但如果您确定每次调用后都不再需要WebDriver,可以这样做  
        # 这里我将其注释掉,因为通常更好的做法是在方法外部管理WebDriver的生命周期  
        # driver.quit()  
        pass  
if find_element_by_xpath(driver, '/html/body/div[3]/div[2]/div/div/div[1]/ul/li[1]/span'):  
    print("找到了") 
else:  
    print("未找到指定元素")  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

迎接 Apple Intelligence.一:首次啟用

年 Apple 各平台的重點新功能,相信非 Apple Intelligence 莫屬。Apple 將會將人工智能整合到 iOS 18、iPadOS 18 和 macOS Squoia。在機械學習和大型語言模型加持下,預計 Siri 的對答會更加自然流暢,而且能直接提供答案,而不像過去…

作业8/21

client cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), socket(new QTcpSocket(this)) {ui->setupUi(this); // 设置 UI 界面// 控件初始状态设置为禁用,防止未连接…

储能系统---德业、禾迈、昱能产品布局及对比

一、公司介绍 德业、昱能、禾迈作为微逆行业的佼佼者,同样代表了中国制造行业的三种技术形态。 德业:代表传统制造行业,转型电力电子领域的代表。 昱能:代表海归人员回国创业,致力于技术本土化的代表。 禾迈&#…

socket 验证字符串是否是有效ip地址

import socketdef is_valid_ip(ip):try:# 尝试将字符串解析为IP地址socket.inet_aton(ip)return Trueexcept socket.error:return False# 测试 print(is_valid_ip("192.168.1.1")) # True print(is_valid_ip("256.256.256.256")) # False print(is_valid…

计算机存储原理——基础

文章目录 存储介质简介1. 光介质存储2. 磁介质存储3. flash(闪存) 硬盘存储原理磁盘组件磁盘是如何存储文件的磁盘的性能 存储接口与存储协议接口类型SCSISCSI的寻址方式windows下查看SCSI寻址 接口与总线与协议的对应关系cpu是如何控制存储的 文件系统常见的文件系统文件系统中…

《数据结构》顺序表+算法代码+动画演示-C语言版

目录 顺序表概念 顺序表初始化 顺序表销毁 顺序表尾插 顺序表尾删 顺序表头删 顺序表头插 顺序表pos位置插入 顺序表pos位置删除 顺序表全部代码如下: 顺序表概念 顺序表是用一段 物理地址连续 的存储单元依次存储数据元素的线性结构,一般情况下…

「OC」CAShapeLayer和UIBezierPath —— 抽屉视图之中圆角cell的实现

「OC」CAShapeLayer和UIBezierPath —— 抽屉视图之中圆角cell的实现 文章目录 「OC」CAShapeLayer和UIBezierPath —— 抽屉视图之中圆角cell的实现前言CALayer的子类CAShapeLayerpath 贝塞尔曲线应用实践参考资料 前言 上次我们学习了CALayer的相关知识 ,但好像忘…

2024计算机软考报名流程(电脑报名)

1.24年下半年软考报名时间,各省报名时间不一样, 报名时间大概集中在:24年8月19日~24年9月15日; 报名网站:中国计算机技术职业资格网; 广东:2024年8月21日9:00至29日17:00 安徽&#…

全面调研:19类AI Agent框架的对比与分析

代理(Agent)指能自主感知环境并采取行动实现目标的智能体,即AI作为一个人或一个组织的代表,进行某种特定行为和交易,降低一个人或组织的工作复杂程度,减少工作量和沟通成本。 背景 目前,我们在…

监听页面滚动到某个元素 设置入场动画

mounted() {this.eventScroll()}, eventScroll() {// 选择你想要监听的元素const targetLogo document.getElementById(logoanimation);// 创建并配置IntersectionObserverconst observer new IntersectionObserver((entries) > {entries.forEach(entry > {if (entry.…

回收站的文件删除了怎么恢复?4个技巧轻松找回文件!

在日常使用电脑的过程中,回收站作为我们删除文件的临时存放地,扮演着重要的角色。然而,有时我们可能会不小心从回收站中删除了重要文件,导致数据丢失。面对这种情况,许多用户会感到焦虑和无助。但别担心,本…

基于Spark实现大数据量的Node2Vec

基于Spark实现大数据量的Node2Vec Node2Vec 是一种基于图的学习算法,用于生成图中节点的低维度、高质量的向量表示。这种算法基于 word2vec 模型,将自然语言处理中的词嵌入技术应用于图结构的节点,以捕捉节点之间的复杂关系。Node2Vec 特别强…

glibc 2.24 下 IO_FILE 的利用

文章目录 glibc 2.24 下 IO_FILE 的利用介绍:新的利用技术fileno 与缓冲区的相关利用实例:1. _IO_str_jumps -> overflow实例: 2. _IO_str_jumps -> finish实例: 最后拓展一下上一篇博客house of orange题目的做法: glibc 2.24 下 IO_F…

6.4K+ Star!一个强大的本地知识库问答系统,支持多格式文件和跨语言检索,为企业提供高效、安全的数据洞察……

https://github.com/netease-youdao/QAnything 【阅读原文】跳转Github项目 转自AIGC创想者 项目简介 QAnything 是一个基于本地知识库的问答系统,它能够理解和回答基于任何类型文件的问题。 QAnything支持的文件格式非常广泛,包括PDF、Word、PPT、XL…

【GH】【EXCEL】P6: Shapes

文章目录 componentslinepicture components line picture Picture A Picture object Input parameters: Worksheet (Generic Data) A Worksheet, Workbook, Range Object, Excel Application, or Text Worksheet NameName (Text) An optional object nameLocation (Point) A p…

停车场管理系统--论文pf

TOC springboot544停车场管理系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域的…

推荐一个开源的kafka可视化客户端GUI工具(Kafka King)

大佬的博客地址: https://blog.ysboke.cn/posts/tools/kafka-king Github地址: https://github.com/Bronya0/Kafka-King Kafka-King功能清单 查看集群节点列表(完成)支持PLAINTEXT、SASL PLAINTEXT用户名密码认证(完…

基于数据挖掘的消费者商品交易数据分析可视化与聚类分析

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍项目实现实现流程实现过程数据预处理EDA探索性数据分析聚类分析每文一语 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 项目介绍 基于python的消费…

HexView 刷写文件脚本处理工具-命令行介绍(六)-CheckSum计算(/CS:)-CRC32

CheckSum计算 checksum计算是hexview最常用,也是比较实用的功能之一,每一版本支持的功能不同,最新的版本大概支持几十种CheckSum的计算。 界面计算 经常在操作的时候,如果是偶尔计算可以直接使用界面就可以了,非常清楚明了。 命令行介绍 通常使用计算的时候是在释放…

大话C语言:第43篇 结构体的位域

位域是结构体中的一个特殊成员,它允许我们指定该成员所占用的位数,而不是使用完整的字节或更大的单位。这在需要精确控制数据在内存中的布局时特别有用,例如在网络编程或硬件接口编程中。 位域的定义语法如下: struct 标签或者结…