码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Selenium 元素不能定位总结


    目录

    元素不能定位总结:

    1、定位语法错误:

    定位语法错误,如无效的xpath,css selector,dom路径错误,动态dom

    定位语法错误,动态路径(动态变化)

    定位策略错误,如dom没有id用id定位当然定位,使用dom中不存在的属性定位

    解决办法:

    2、元素未显示

    等待时间不够

    解决办法:

    元素隐藏在其他元素下(如列表选项,二级窗口),需要交互才展示

    解决办法:

    3、元素在dom中存在多个,未使用正确的查找方法

    解决办法:

    解决办法:

    4、selenium自身问题:

    解决办法:

    5、元素不在当前视觉范围

    解决办法:

    6、其他原因

    网络异常

    浏览器窗口异常关闭

    网站后台异常页面无法加载


    元素不能定位总结:


    1、定位语法错误:

    • 定位语法错误,如无效的xpath,css selector,dom路径错误,动态dom

    • 定位语法错误,动态路径(动态变化)

    • 定位策略错误,如dom没有id用id定位当然定位,使用dom中不存在的属性定位

    解决办法:

    建议编码时现在浏览器调试模式下使用编写的xpath、css selector 在待测页面定位一下,看能不能识别到元素

    2、元素未显示

    • 等待时间不够

    一些页面需要加载的资源比较多:如图片、样式、js动态文件等,因此如果页面没有加载完的话,有些元素是不会显示的,也定位不到

    解决办法:

    使用webdriverwait +显性条件来增加等待时间

    • 元素隐藏在其他元素下(如列表选项,二级窗口),需要交互才展示

    一些元素隐藏在另外一些组件下面,如列表组件中的选项,窗口组件中的文字、按钮等

    解决办法:

    等其他条件满足再操作

    3、元素在dom中存在多个,未使用正确的查找方法

    例如定位语法在页面定位到多个元素未使用find_elements而是用find_element,find_element默认查找第一个就返回因此可能查不到想要查找的元素。这种情况如果要交互的元素不是第一个就会报异常了。

    解决办法:

    使用find_elements定位多个元素

    另外还有可能查找第一个dom在页面没有显示,这种情况是dom能找到,但是这个元素没有在页面展示。什么意思呢?就是说是个伪元素,这个元素在页面是没有宽度和高度的因此也会报错。这种情况可以使用显性条件(excepted condition)“visibility_of_element_located”来查找,它表示元素的长宽不为0,保证元素在页面是存在的。

    解决办法:

    使用显性条件避免定位到伪元素


    4、selenium自身问题:

    如图表元素(canvas,svg),由于图表元素是使用js绘制的,对selenium来说相当于一张图片,所以使用dom定位不到

    解决办法:

    借助第三方库或者图形识别来处理


    5、元素不在当前视觉范围

    待操作元素在其他windows、frame、iframe、alert等

    解决办法:

    这个时候需要需要切换到新窗口、frame、iframe、alert才能定位到。

    6、其他原因

    网络异常

    有些时候网络连接异常会导致页面未加载成功,故而无法操作页面

    浏览器窗口异常关闭

    测试清理使用了driver.close()关闭了窗口,导致后面的会话异常无法执行后续测试

    网站后台异常页面无法加载

    例如应用发版部署中,应用未完全启动,故而无法查找页面元素

  • 相关阅读:
    Lua解释器裁剪
    [Qualcomm][GPIO]高通芯片引脚相关知识记录
    基于DataX的海量时序数据迁移实战:从MySQL到TDengine3.x
    Springboot企业的信息管理系统5qs0a计算机毕业设计-课程设计-期末作业-毕设程序代做
    nginx的ip_hash算法
    怎么打造小红书爆款笔记账号?教你几招
    设计模式-结构型-适配器模式-Adapter
    Spring事务传播之嵌套调用
    node.js 快速入门
    小白都能轻松掌握,python最稳定的图片识别库ddddocr
  • 原文地址:https://blog.csdn.net/TalorSwfit20111208/article/details/134541396
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号