selenium元素获取

from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.maximize_window()#最大化窗口
#隐式等待
driver.implicitly_wait(10)#打开网页
driver.get("https://www.zhipin.com/beijing/?ka=city-sites-101010100")#定位到搜索框,然后输入内容
# driver.find_element(By.CSS_SELECTOR,'input[name="query"]').send_keys("测试工程师")
driver.find_element(By.CSS_SELECTOR,'.ipt-search').send_keys("测试工程师")driver.find_element(By.XPATH, '//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/button').click()"""
id
如果某个元素的有id属性,那么如果id属性的值唯一,则可以利用该属性的值定位
如果id属性的值是一串无序的字母或者数字,则不能使用,有可能是动态id
driver.find_element(By.ID,"id属性的值")name
根据name的属性值来定位,但是如果name属性的值在当前页面不唯一,则是无法定位的
driver.find_element(By.NAME,"name值")class name
class 属性的值,不唯一的可能性很大
driver.find_element(By.CLASS_NAME,'btn btn-search')tag name(通过标签名本身选择,一般无法使用,不推荐)
driver.find_element(By.TAG_NAME,"标签名")link text(一般不要使用)partial link text(一般不要使用)xpathCSS_SELECTOR
例如driver.find_element(By.CSS_SELECTOR,'input[name="query"]')
根据<input name="query">而来
driver.find_element(By.CSS_SELECTOR,'.ipt-search')根据<input class='ipt-search'>而来
"""

补充知识:

1. CSS_SELECTOR 定位
CSS Selector 是一种通过 CSS 样式规则来选取 HTML 元素的方法。它基于元素的标签、类名、ID、属性等来进行定位。常见的 CSS_SELECTOR 语法:
tag:选择标签名的元素,例如 div。
.class_name:选择具有指定类名的元素。
#id:选择具有指定 ID 的元素。
[attribute=value]:选择具有特定属性值的元素。
示例:使用 CSS_SELECTOR 定位
假设我们有以下 HTML 代码:
<div id="container"><button class="btn" id="submitBtn">Submit</button><a href="https://example.com" class="link">Click Me</a>
</div>

使用 CSS_SELECTOR 定位按钮(button 标签,id=“submitBtn”):

from selenium import webdriver
from selenium.webdriver.common.by import By# 启动浏览器
driver = webdriver.Chrome()# 打开网页
driver.get('https://example.com')# 通过 CSS_SELECTOR 定位按钮
button = driver.find_element(By.CSS_SELECTOR, '#submitBtn')
button.click()  # 点击按钮# 关闭浏览器
driver.quit()

使用 CSS_SELECTOR 定位链接(a 标签,class=“link”):

link = driver.find_element(By.CSS_SELECTOR, 'a.link')
link.click()  # 点击链接
常见的 CSS_SELECTOR 示例:
通过类名:div.class_name
通过 ID:#element_id
通过属性:input[type="text"]
通过后代选择器:div > button(选择 div 中的 button 元素)
通过伪类:button:hover(选择被悬浮的按钮)
2. XPath 定位
XPath 是一种在 XML 文档中查找信息的语言,也可以用来定位 HTML 元素。它允许通过元素的路径、标签、属性、文本等来精确查找元素。常见的 XPath 语法:
/tag:选择根元素下的 tag 元素。
//tag:选择页面中所有的 tag 元素。
//tag[@attribute='value']:选择具有指定属性的 tag 元素。
//*[text()='text_value']:根据元素的文本内容查找。
//tag[contains(@attribute, 'value')]:根据属性包含的值进行匹配。
示例:使用 XPath 定位
假设我们有以下 HTML 代码:
<div id="container"><button class="btn" id="submitBtn">Submit</button><a href="https://example.com" class="link">Click Me</a>
</div>

使用 XPath 定位按钮(button 标签,id=“submitBtn”):

button = driver.find_element(By.XPATH, '//*[@id="submitBtn"]')
button.click()  # 点击按钮

使用 XPath 定位链接(a 标签,class=“link”):

link = driver.find_element(By.XPATH, "//a[@class='link']")
link.click()  # 点击链接
常见的 XPath 示例:
通过元素 ID://*[@id='element_id']
通过类名://*[contains(@class, 'class_name')]
通过文本://*[text()='Click Me']
通过属性://input[@type='text']
使用 contains://*[contains(@href, 'example')](查找包含特定文本的链接)

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

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

相关文章

生物化学笔记:医学免疫学原理15 超敏反应过敏反应(I型[蚊虫叮咬]+II型[新生儿溶血症、突眼型甲亢]+III型+IV型)

超敏反应 每个人都可能发生的过敏问题&#xff1a;被蚊子咬后起包 I型超敏反应 II型超敏反应 新生儿溶血症分为Rh血型不合和ABO血型不合两种情况。Rh血型不合通常从第二胎开始更容易发病&#xff0c;因为母体初次接触Rh阳性胎儿的红细胞后会产生抗D抗体&#xff0c;而这个致敏…

【android bluetooth 框架分析 02】【Module详解 2】【gd_shim_module 模块介绍】

1. 背景 上一章节 我们介绍了 module_t 的 大体框架 &#xff0c;本节内容我们就选择 我们的 gd_shim_module 模块为例子&#xff0c;具体剖析一下&#xff0c;它里面的逻辑。 static const char GD_SHIM_MODULE[] "gd_shim_module";// system/main/shim/shim.cc …

【包管理器】主流包管理器_对比_应用场景

不定期更新&#xff0c;建议关注收藏点赞。 链接&#xff1a; npm专题 目录 主流包管理器简介对比 主流包管理器简介 主流的包管理器其实有不少&#xff0c;不同语言和平台都有各自的一套系统。 前端&#xff08;JavaScript/TypeScript&#xff09; 名称简介开发者特点npmNo…

参照Spring Boot后端框架实现序列化工具类

本文参照Jackson实现序列化工具类&#xff0c;旨在于简化开发 JacksonUtil.class public class JacksonUtil {private JacksonUtil() {}/*** 单例*/private final static ObjectMapper OBJECT_MAPPER;static {OBJECT_MAPPER new ObjectMapper();}private static ObjectMappe…

Rust入门之迭代器(Iterators)

Rust入门之迭代器&#xff08;Iterators&#xff09; 本文已同步本人博客网站 本文相关源码已上传Github 前言 迭代器&#xff08;Iterators&#xff09;是 Rust 中最核心的工具之一&#xff0c;它不仅是遍历集合的抽象&#xff0c;更是 Rust 零成本抽象&#xff08;Zero-Co…

若依框架二次开发——RuoYi-AI 本地部署流程

文章目录 项目环境安装后端1. 下载项目2. 使用 IDEA 导入项目3. 配置 Maven4. 配置 Maven settings.xml5. 初始化数据库6. 启动 Redis7. 修改数据库配置8. 启动后端服务安装管理端1. 下载管理端项目2. 安装依赖3. 启动管理端4. 修改管理端配置安装用户端1. 下载用户端项目2. 安…

精品推荐-最新大模型MCP核心架构及最佳实践资料合集(18份).zip

精品推荐-最新大模型MCP核心架构及最佳实践资料合集&#xff0c;共18份。 1、2025年程序员必学技能&#xff1a;大模型MCP核心技术.pdf 2、MCP 架构设计剖析&#xff1a;从 Service Mesh 演进到 Agentic Mesh.pdf 3、MCP 架构设计深度剖析&#xff1a;使用 Spring AI MCP 四步…

DataWorks智能体Agent发布!基于MCP实现数据开发与治理自动化运行

在传统的数据开发工作中&#xff0c;企业用户或者开发者常常需要进行繁琐的配置、复杂的代码撰写、反复的性能调优和大量重复性的操作&#xff0c;才能实现数据开发、数据集成和数据治理等工作&#xff0c;效率十分低下。 近日&#xff0c;阿里云大数据开发治理平台DataWorks基…

IDEA 中右侧没有显示Maven

IDEA 中右侧没有显示Maven 1. 检查 Maven 项目是否正确加载 现象 • 项目是 Maven 项目&#xff0c;但右侧没有 Maven 工具窗口。 • 项目根目录下有 pom.xml&#xff0c;但 IDEA 没有识别为 Maven 项目。 解决方法 手动重新加载 Maven 项目&#xff1a; • 在 IDEA 中&…

罗技K860键盘

罗技蓝牙键盘的顶部功能键F1-F12的原本功能 单击罗技键盘的功能键时&#xff0c;默认响应的是键盘上面显示的快进、调节音量等功能。改变回F1~F12原本功能&#xff0c;同时按下 fn和esc组合键

什么是大型语言模型(LLM)?哪个大模型更好用?

什么是 LLM&#xff1f; ChatGPT 是一种大型语言模型 (LLM)&#xff0c;您可能对此并不陌生。它以非凡的能力而闻名&#xff0c;已证明能够出色地完成各种任务&#xff0c;例如通过考试、生成产品内容、解决问题&#xff0c;甚至在最少的输入提示下编写程序。 他们的实力现已…

css画右上角 角标三角形

.corner {position: absolute;top: -2rem;right: -2rem;width: 0;height: 0;border: 2rem solid red;border-bottom-color: transparent;border-top-color: transparent;border-left-color: transparent;transform: rotateZ(135deg); } 基本思路就是设置border&#xff0c;只设…

vue自定义颜色选择器

vue自定义颜色选择器 效果图&#xff1a; step0: 默认写法 调用系统自带的颜色选择器 <input type"color">step1:C:\Users\wangrusheng\PycharmProjects\untitled18\src\views\Home.vue <template><div class"container"><!-- 颜…

[Python] 企业内部应用接入钉钉登录,端内免登录+浏览器授权登录

[Python] 为企业网站应用接入钉钉鉴权&#xff0c;实现钉钉客户端内自动免登授权&#xff0c;浏览器中手动钉钉授权登录两种逻辑。 操作步骤 企业内部获得 开发者权限&#xff0c;没有的话先申请。 访问 钉钉开放平台-应用开发 创建一个 企业内部应用-钉钉应用。 打开应用…

[蓝桥杯 2023 国 Python A] 整数变换

P10985 [蓝桥杯 2023 国 Python A] 整数变换 题目背景 建议使用 PyPy3 提交本题。 题目描述 小蓝有一个整数 n n n。每分钟&#xff0c;小蓝的数都会发生变化&#xff0c;变为上一分钟的数 减去上一分钟的数的各个数位和。 例如&#xff0c;如果小蓝开始时的数为 23 23 …

【Linux】TCP_Wrappers+iptables实现堡垒机功能

规划 显示jumpserver的简单功能&#xff0c;大致的网络拓扑图如下 功能规划 & 拓扑结构 JumpServer&#xff08;堡垒机&#xff09;主要功能&#xff1a; 对访问目标服务器进行统一入口控制&#xff08;例如 nginx、mysql、redis&#xff09;。使用 iptables 做 NAT 转…

用HTML和CSS绘制佩奇:我不是佩奇

在这篇博客中&#xff0c;我将解析一个完全使用HTML和CSS绘制的佩奇(Pig)形象。这个项目展示了CSS的强大能力&#xff0c;仅用样式就能创造出复杂的图形&#xff0c;而不需要任何图片或JavaScript。 项目概述 这个名为"我不是佩奇"的项目是一个纯CSS绘制的卡通猪形象…

Spring 中 WebFlux 编写一个简单的 Controller

引言&#xff1a;响应式编程与 WebFlux 随着应用程序需要处理大量并发请求的情况越来越多&#xff0c;传统的 Servlet 编程模式可能无法满足高效和低延迟的需求。为了应对这种情况&#xff0c;Spring 5 引入了 WebFlux&#xff0c;一个基于响应式编程的 Web 框架&#xff0c;旨…

React十案例下

代码下载 登录模块 用户登录 页面结构 新建 Login 组件&#xff0c;对应结构: export default function Login() {return (<div className{styles.root}><NavHeader className{styles.header}>账号登录</NavHeader><form className{styles.form}>&…

100道C#高频经典面试题带解析答案——全面C#知识点总结

100道C#高频经典面试题带解析答案 以下是100道C#高频经典面试题及其详细解析&#xff0c;涵盖基础语法、面向对象编程、集合、异步编程、LINQ等多个方面&#xff0c;旨在帮助初学者和有经验的开发者全面准备C#相关面试。 &#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSD…