selenium元素定位
find_element和find_elements
元素定位有两个表达式,分别为find_element()和find_elements(),它们的不同点如下:
find_element():找出的为单个元素,若有多个元素为同一表达式,则默认定位第一个元素,可以直接进行点击,输入等操作。
find_elements():找出的为一组列表,不能直接对元素进行点击等操作,需要加索引,取列表的第n个元素。
Xpath定位
Xpath定位方法是基本的一类定位方法,XPath(XML Path Language)是一种用于定位XML和HTML文档中元素的语言。其在自动化脚本中使用的例子如下:
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 通过xpath定位输入框,输入内容selenium
browser.find_element(By.XPATH, '//input[@id="kw"]').send_keys('selenium')
# 停留五秒后关闭浏览器
time.sleep(5)
browser.quit()
这个XPath表达式将会匹配id为kw的input元素。
css定位
CSS选择器是一种强大且常用的定位方式。它能够通过元素的属性、标签名、类名等准确地定位到页面元素。其在自动化脚本中使用的例子如下:
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 通过css定位输入框,输入内容selenium
browser.find_element(By.CSS_SELECTOR, '.s_ipt').send_keys('selenium')
# 停留五秒后关闭浏览器
time.sleep(5)
browser.quit()
id定位
根据元素的id属性值定位,最为方便且唯一,但是现在很多元素的id都是动态生成的,在使用id属性定位时需要注意。其在自动化脚本中使用的例子如下:
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 通过ID定位输入框,输入内容selenium
browser.find_element(By.ID, 'kw').send_keys('selenium')
# 停留五秒后关闭浏览器
time.sleep(5)
browser.quit()
name定位
根据元素的name属性值定位,但是我们需要注意,定位到的元素可能并不是唯一的。其在自动化脚本中使用的例子如下:
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
# 通过name属性选择文本框元素,并设置内容
browser.find_element(By.NAME,'wd').send_keys("selenium")
# 通过通过ID属性获取“百度一下”按钮,并执行点击操作
browser.find_element(By.ID,"su").click()
# 停留五秒后关闭浏览器
time.sleep(5)
browser.quit()
class定位
class定位,根据元素的class属性值定位,但可能受JS影响动态变化。定位到的标签不一定是唯一的。其在自动化脚本中使用的例子如下:
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
time.sleep(2)
# 通过class属性选择元素
browser.find_element(By.CLASS_NAME,'s_ipt').send_keys("selenium")
time.sleep(2)
browser.find_element(By.ID,"su").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()
tag定位
tag name定位,根据元素的标签名定位,定位到的标签不一定是唯一的。其在自动化脚本中使用的例子如下:
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("https://www.baidu.com")
time.sleep(2)
# 选择<button></button>标签(搜索按钮),执行点击操作
browser.find_element(By.TAG_NAME, "button").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()
link定位
link表示包含有属性href的标签元素,如:<a href="https://www.csdn.net">linktext</a>可以通过LINK_TEXT进行定位。
find_element(By.LINK_TEXT,'XX')根据链接文本全匹配进行精确定位。
find_element(By.PARTIAL_LINK_TEXT,'XX')根据链接文本模糊匹配进行定位。
By.LINK_TEXT精确定位
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 选择https://news.baidu.com/标签,执行点击操作
browser.find_element(By.LINK_TEXT, "新闻").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()
By.PARTIAL_LINK_TEXT模糊定位
import time
# 导入selenium包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
# 选择https://news.baidu.com/标签,执行点击操作
browser.find_element(By.PARTIAL_LINK_TEXT, "新").click()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()
相关文章:
selenium元素定位
find_element和find_elements 元素定位有两个表达式,分别为find_element()和find_elements(),它们的不同点如下: find_element():找出的为单个元素,若有多个元素为同一表达式,则默认定位第一个元素&#…...
美畅物联丨视频汇聚从“设”开始:海康威视摄像机设置详解
在运用畅联云平台进行视频汇聚与监控管理时,海康威视的安防摄像机凭借其卓越的性能与广泛的应用兼容性,成为了众多用户的首选产品。海康威视摄像机参数设置与调试对于实现高效的安防监控至关重要。今天,让我们一同深入学习海康摄像机的参数设…...
聊天机器人羲和的代码04
进一步完善和优化聊天机器人GUI,使其更加丰富和美观,采取了以下措施: 添加图标:为应用程序添加一个图标。 调整布局:进一步优化布局,使其更加美观。 增加样式:使用更多的样式和主题来提升视觉效果。 添加动画:增加加载动画以提高用户体验。 优化控件:使用更现代的控件…...
Linux安装配置Jupyter Lab并开机自启
文章目录 1、安装配置jupyter lab首先需要使用pip3安装:生成配置文件和密码: 2、设置开机自启首先通过which jupyter查询到可执行文件路径:设置自启服务: 1、安装配置jupyter lab 首先需要使用pip3安装: pip3 instal…...
Java基础——`UUID.randomUUID()` 方法详细介绍
这里写自定义目录标题 UUID.randomUUID() 方法详细介绍1. 概述2. UUID 的结构与格式UUID 的 128 位结构划分: 3. UUID.randomUUID() 方法详解3.1 方法签名3.2 使用示例3.3 生成原理3.4 随机数生成的范围3.5 随机字符的取值范围 4. UUID 的版本与特性4.1 UUID 版本 4…...
前端面试常见手写代码题【详细篇】
文章目录 前言:防抖节流函数柯里化函数组合instanceof 实现实现new操作符的行为深拷贝继承实现:手写Promise数组中常见函数的实现 前言: 在前端面试中,经常会遇到要求手写的代码的题目,主要是考察我们的编程能力、和对…...
当代最厉害的哲学家改名大师颜廷利:北京、上海、广州和深圳房价精准预测
在2024年国庆节期间,北京、上海、广州和深圳的房地产市场异常活跃。作为山东济南籍的国际易学权威颜廷利教授,连续收到了这些大城市客户的感谢信和电话。 来自北京的王先生在信中写道:“非常感谢颜廷利教授这几年来对我们的鼓励和支持。在经历…...
MySQL常用指令码
本文精心挑选了一系列MySQL指令码,助你提升资料库效率、解决常见问题,让你的资料储存体验更加高效、可靠。 常用功能指令码 1.汇出整个资料库 mysqldump - u 使用者名称- p – default - character - set latin1 资料库名>汇出的档名(资料库预设编…...
OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【扩展组件】
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… C支持 基本概念 C作为目前使用最广泛的编程语言之一,…...
官方ROM 免费下载! 王者归来! 华为秘盒media Q M310(续)
最近在捣鼓电视盒子, 前帖讨论了如何拯救华为华为秘盒media Q M310, 详情请点击这里! https://blog.csdn.net/weixin_62598385/article/details/142658048 CSDN上有精简版的M310 ROM下载, 但是我点不进去, 要收年费&am…...
【Docker】05-Docker部署前端项目
1. nginx.conf worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/json;sendfile on;keepalive_timeout 65;server {listen 18080;# 指定前端项目所在的位置location / {root /usr/share/nginx…...
SQL进阶技巧:如何优化NULL值引发的数据倾斜问题?
目录 0 场景描述 1 问题分析 1.1 问题剖析 1.2 解决方案 2 小结 0 场景描述 实际业务中有些大量的null值或者一些无意义的数据参与到计算作业中,表中有大量的null值,如果表之间进行join操作,就会有shuffle产生,这样所有的null值都会被分配到一个reduce中,必然产生数…...
【09】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Class类基础全解(属性、方法、继承复用、判断)
序言: 本文详细讲解了关于我们在程序设计中所用到的class类的各种参数及语法。 笔者也是跟着B站黑马的课程一步步学习,学习的过程中添加部分自己的想法整理为笔记分享出来,如有代码错误或笔误,欢迎指正。 B站黑马的课程链接&am…...
快速提升波段交易技能:4种实用策略分享
每个交易员的交易偏好是各不相同的,有人偏爱短线交易的迅速反应,有人钟情于中长线的稳健布局,还有人则热衷于波段交易的灵活操作。我们经常探讨短线与中长线的策略,但你了解波段交易的策略吗? 波段交易是什么…...
LeetCode 11 Container with Most Water 解题思路和python代码
题目: You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]). Find two lines that together with the x-axis form a container, such that the co…...
【深度学习】损失函数
损失函数(Loss Function)是机器学习和深度学习模型中的一个核心概念,它用于衡量模型的预测输出与真实标签之间的差异。通过优化(最小化)损失函数,模型可以不断调整其内部参数,提升预测性能。不同…...
力扣 中等 46.全排列
文章目录 题目介绍题解 题目介绍 题解 代码如下: class Solution {List<List<Integer>> res new ArrayList<>();// 存放符合条件结果的集合List<Integer> path new ArrayList<>();// 用来存放符合条件结果boolean[] used; // 标记…...
LabVIEW机床加工监控系统
随着制造业的快速发展,机床加工的效率与稳定性成为企业核心竞争力的关键。传统的机床监控方式存在效率低、无法远程监控的问题。为了解决这些问题,开发了一种基于LabVIEW的机床加工监控系统,通过实时监控机床状态,改进生产流程&am…...
第五届智能设计国际会议(ICID 2024)
文章目录 一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询 一、会议详情 二、重要信息 大会官网:https://ais.cn/u/vEbMBz提交检索:EI Compendex、IEEE Xplore、Scopus大会时间:2024年10月25-27日大会地点࿱…...
厨房用品分割系统源码&数据集分享
厨房用品分割系统源码&数据集分享 [yolov8-seg-C2f-DCNV3&yolov8-seg-AFPN-P345等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al ln…...
ollama运行QwQ-32B多场景落地:芯片设计文档理解、RTL代码生成
ollama运行QwQ-32B多场景落地:芯片设计文档理解、RTL代码生成 1. 引言:当AI遇到芯片设计 芯片设计工程师每天都要面对海量的技术文档和复杂的RTL代码编写工作。传统的手工方式不仅效率低下,还容易出错。有没有一种方法能让AI帮助我们理解技…...
计算机毕业设计springboot基于的养老平台的设计与实现 SpringBoot架构下智慧养老综合服务系统的设计与实现 基于Java的社区养老数字化管理平台开发
计算机毕业设计springboot基于的养老平台的设计与实现(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。我国正加速步入老龄化社会,老年人口规模持续扩大,传…...
AI 辅助开发实战:构建高可用毕设深度学习系统的工程化路径
最近在帮学弟学妹们看毕业设计,发现一个挺普遍的现象:很多同学算法思路不错,但一到工程实现就各种“翻车”。环境配一天跑不起来,模型调参全靠手动“玄学”,好不容易训出来的模型,不知道怎么部署给别人用。…...
OpenClaw多模型比较:GLM-4.7-Flash与其他模型性能测试
OpenClaw多模型比较:GLM-4.7-Flash与其他模型性能测试 1. 测试背景与动机 最近在折腾OpenClaw自动化任务时,我发现模型选择对最终效果影响巨大。同一个文件整理任务,用不同模型可能差出几分钟响应时间,甚至出现完全错误的操作路…...
ARM海思平台udev启动报错:深入剖析与实战解决
1. 问题现象与背景分析 最近在调试一块搭载海思HI3531D芯片的开发板时,遇到了一个让人头疼的问题:系统启动过程中频繁出现"random: udevd: uninitialized urandom read (16 bytes read)"的错误提示。这个错误看似无害,但实际上会导…...
Docker 网络与 Compose :部署前后端分离项目(MySQL + Java + Nginx)
上一篇文章中,学习了如何将 Java 应用打包成 Docker 镜像。但一个完整的项目往往需要多个容器协同工作,比如应用容器、数据库容器、前端 Nginx 容器。本文将从 Docker 网络基础讲起,通过自定义网络实现容器互联,最后使用 Docker C…...
Chatbot、Composer与Agent架构深度解析:如何选择最优对话系统方案
Chatbot、Composer与Agent架构深度解析:如何选择最优对话系统方案 想象一下,你正在为一个电商平台设计智能客服。老板要求:既要能秒回“我的订单到哪了”这种简单问题,又要能处理“帮我推荐几款适合周末露营的装备,预…...
【MySQL】7.MySQL基本查询(2)
文章目录6. 表的增删改查6.2 Retrieve(读取/筛选)6.2.2 WHERE 条件6.2.2.1 英语不及格的同学及英语成绩 ( < 60 )6.2.2.2 语文成绩在 [80, 90] 分的同学及语文成绩6.2.2.3 数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩6.2.2.4 姓孙的同学 及 孙某同学6.2.2.5 …...
git不跟踪文件夹
git不跟踪文件夹假设你有一个名为build的文件夹,你想从Git跟踪中移除它: 1.移除跟踪: bash git rm -r --cached build/ 2.提交更改: bash git commit -m “Remove logs folder from tracking” 3确保未来不被跟踪: bas…...
网络安全专业的就业前景到底如何?给大家来分析一波
网络安全专业就业前景怎么样? 网络的安全是指通过采用各种技术和管理措施,使网络系统正常运行,从而确保网络数据的可用性、完整性和保密性。网络安全的具体含义会随着“角度”的变化而变化。比如:从用户(个人、企业等…...
