码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Selenium教程(1)选择和查找基本元素


    目录


    Selenium教程(1)选择和查找基本元素

    Selenium教程(2)CSS元素操作

    Selenium教程(3)IFrame切换/窗口切换

    Selenium教程(4)操作选择框

    1.元素选择


    (1)根据id选择(id必须唯一的)

    1. # 根据id选择元素,返回的就是该元素对应的WebElement对象,对象可操作页面元素
    2. element = driver.find_element(By.ID, 'id_value')
    3. # 通过该 WebElement对象,就可以对页面元素进行操作了
    4. element.send_keys('通讯\n')

    (2)根据class属性

    1. #因为类名可能不唯一,查找所有元素;否则element只返回第一个
    2. driver.find_elements(By.CLASS_NAME, 'animal')
    3. for element in elements:
    4. print(element.text)
    【多class属性解决方式】
    • 注意: 若 有两个class属性, 分别是 chinese 和 student,而不是 chinese student属性
            
    • 解决:指定任意一个class 属性值
            

    (3)根据tag名选择

            如标签,input即tag名

    (4)根据xpath选择

            有很多xpath提取工具,了解下即可

    (5)通过WebElement对象选择元素内部子元素

    1. element = wd.find_element(By.ID,'container')
    2. # 限制选择元素的范围是 id 为container元素的内部。
    3. spans = element.find_elements(By.TAG_NAME, 'span')
    4. for span in spans:
    5. print(span.text)

    (6)显示等待和隐式等待

    • 显式:WebDriverWait(dr,10,1,NoSuchElementException).until(lambda dr: dr.find_element_by_id("kw"),message='没有此元素,超时!') 。# WebDriverWait(dr,10)的意思是10秒内每隔0.5秒扫描1次页面变化,直到出现指定的元素后结束,否则抛出异常。
    • 隐式:同上每0.5s扫描超时异常。不同的是, 隐式在全局起作用,即直到退出都要自动完成。 缺点不适合ajax局部加载 (一直判断找不到重新扫描),一般用于判断登录是否成功。
            
    • try-except:有时候显示和隐式都无法解决时候,直接用异常包围处理逻辑,例如js

    (7)判断元素存在解决方法

    1. try-except
    2. elment.is_XXX(); //判断是否存在
    3. 隐式/显示等待元素出现: 如果找不到元素, 每隔半秒 再去界面上查看一次, 直到找到该元素,或过了最大时长(10秒)
        

    (8)selenium 4版本更新变化

    2.元素操作


    (1)输入框输入和清除操作

         注输入框内文字无法通过text获取,见(2)

    (2)获取元素属性

    ①获取元素文本信息(展示在页面的内容)

    • text方法 (√推荐)
        
    • get_attribute('innerText')或 get_attribute('textContent')
      • get_attribute('innerText')= js里面的 element.value,只显示 元素可见文本内容
      • get_attribute('innerText')=  js里面的 element.innerText,显示 所有内容(包括display属性为none的部分)

    ②get_attibute('tag_name') 获取元素标签内属性

    ③获取整个元素对应html语法

    • 获取整个元素对应html语法: element.get_attribute(' outerHTML')
    • 获取内部html语法: element.get_attribute( 'innerHTML')

    ④获取输入框

  • 相关阅读:
    requests 2.13.0 版本的 https 连接慢漏提示
    修改ctags让fzf.vim插件显示C,C++方法声明的标签
    优质笔记软件综合评测和详细盘点 Notion、Obsidian、RemNote、FlowUs
    三、RTMP协议 视频Chunk和音频Chunk到底长啥样?
    前端开发常用工具库
    【ElementUI样式优化】el-input带自定义查询删除图标 ==> 图标点击可实现对应功能 ==> 一个input实现查询重置功能
    一文搞定Linux信号
    民族民俗景区3d智慧旅游系统提升游客旅游体验和质量
    微信小程序登录授权流程及所用API
    Linux---应用层获取usb设备描述信息&通过endpoint地址数据通讯
  • 原文地址:https://blog.csdn.net/qq_35494772/article/details/127565058
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号