当前位置: 首页 > news >正文

Selenium核心技巧:元素定位与等待策略

Selenium核心技巧

  1. WebDriver:浏览器(交互)  
  2. find_element:元素定位
  3. WebElement元素(交互)     

重点内容:

  1. 元素定位
  2. 等待
  3. 元素交互
    1. 文件上传(3种)
    2. 滚动条处理
    3. JS代码(强制操作)

1、元素定位

  • 方法
    • find_element:如果成功返回元素,如果失败抛出异常。
    • find_elements:如果成功返回list,如果失败返回list(空)
  • 策略
    • 基于元素的属性进行定位
      ID = "id"
      NAME = "name" 
      TAG_NAME = "tag name" 
      CLASS_NAME = "class name"基于链接文件进行定位
      LINK_TEXT = "link text"
      PARTIAL_LINK_TEXT = "partial link text"可以定位任意元素
      XPATH = "xpath"
      CSS_SELECTOR = "css selector"

2、等待

  • 隐式等待
    • driver = webdriver.Edge(options=options, service=service)
      driver.implicitly_wait(20)     #隐式等待(放在浏览器启动之后,等待浏览器加载完成)
  • 显示等待
    • #显示等待(一般放在需要等待的上一个执行代码段)
      # WebDriverWait(driver,timeout=10).until(lambda x: driver.find_element(By.XPATH, value='//*[@id="s-top-left"]/a[1]'))wait=WebDriverWait(driver, 10)
      wait.until(lambda d: 1==1)   #等待条件#el=driver.find_element(by='xpath', value='//*[@id="s-top-left"]/a[1]')
      el=driver.find_element(By.XPATH, value='//*[@id="s-top-left"]/a[1]')
  • 流畅等待(更高级的等待)
  • 强制等待(休眠)
    • #强制等待
      import time
      time.sleep(3)

文章转载自:

http://Yk5ZIQmX.khcLr.cn
http://ABIhZqnm.khcLr.cn
http://yS9L6mS2.khcLr.cn
http://4CmatJMs.khcLr.cn
http://WSc3ARSX.khcLr.cn
http://t1l5a6Zo.khcLr.cn
http://9XDR0sGn.khcLr.cn
http://RDDbeeFZ.khcLr.cn
http://oVAYJuLB.khcLr.cn
http://VdVecJEf.khcLr.cn
http://Yez5Lgkg.khcLr.cn
http://Y4XjUVtf.khcLr.cn
http://YGwuFdsy.khcLr.cn
http://caoA99uD.khcLr.cn
http://6THMHa25.khcLr.cn
http://SsC5eFXY.khcLr.cn
http://p4eIbAQC.khcLr.cn
http://S6XrCOO0.khcLr.cn
http://K3yyy3QS.khcLr.cn
http://Yic3orvb.khcLr.cn
http://mpQYbhnY.khcLr.cn
http://ns91oMfc.khcLr.cn
http://Y7Ikqrq1.khcLr.cn
http://CLFc2uvZ.khcLr.cn
http://7qn3TAU6.khcLr.cn
http://w4Hfdpqn.khcLr.cn
http://WHkwGr4C.khcLr.cn
http://y1ReVLmS.khcLr.cn
http://qeN1WNSE.khcLr.cn
http://RNDjU7GL.khcLr.cn
http://www.dtcms.com/a/363234.html

相关文章:

  • 苹果内部 AI聊天机器人“Asa”曝光,为零售员工打造专属A
  • 【国内外云计算平台对比:AWS/阿里云/Azure】
  • react用useImages读取图片,方便backgroundImage
  • 硬件开发_基于物联网的自动售卖机系统
  • Spring Boot数据校验validation实战:写少一半代码,还更优雅!
  • arm架构本地部署iotdb集群
  • 物联网开发学习总结(1)—— IOT 设备 OTA 升级方案
  • 没有天硕工业级SSD固态硬盘,物联网痛点如何解决?
  • Sping Web MVC入门
  • Spring MVC BOOT 中体现的设计模式
  • Web基础学习笔记01
  • 我的项目我做主:Focalboard+cpolar让团队协作摆脱平台依赖
  • 【Vue2 ✨】 Vue2 入门之旅(五):组件化开发
  • 2024年全国研究生数学建模竞赛华为杯D题大数据驱动的地理综合问题求解全过程文档及程序
  • 【硬核干货】把 DolphinScheduler 搬进 K8s:奇虎 360 商业化 900 天踩坑全记录
  • 复杂PDF文档如何高精度解析
  • 【Flask + Vue3 前后端分离管理系统】
  • GitHub 热榜项目 - 日榜(2025-09-02)
  • 详解 C++ 中的虚析构函数
  • 电机控制(二)-控制理论基础
  • 撤销回退 情况⼆:已经 add ,但没有 commit
  • Linux 文本处理神器——sed
  • 手写Muduo网络库核心代码2--Poller、EPollPoller详细讲解
  • 《WINDOWS 环境下32位汇编语言程序设计》第10章 内存管理和文件操作(2)
  • Laravel 权限控制新选择:使用 Laravel-authz 集成 PHP-Casbin
  • IEEE 802.11 MAC架构解析:DCF与HCF如何塑造现代Wi-Fi网络?
  • 从实操到原理:一文搞懂 Docker、Tomcat 与 k8s 的关系(附踩坑指南 + 段子解疑)
  • 避坑指南!解决Navicat运行SQL成功但没有表的问题
  • 当AI“读懂”你的心:NLP如何让机器拥有真正的“语言智能”?
  • 最大熵强化学习相比传统强化学习,有什么缺点?