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')](查找包含特定文本的链接)
相关文章:
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/?kacity-sites-101010100&q…...
AI比人脑更强,因为被植入思维模型【50】邓克效应思维模型
giszz的理解:DK Effect,就是井底之蛙。这里有个启发,就是人的认知提升,有4个阶段,愚昧区、崩溃区、成长区、智慧区。也分别对应4个境界:自然境界、功利境界、道德境界、天地境界。我个人觉得自己刚刚过了崩…...
8、nRF52xx蓝牙学习(boards.h文件学习)
boards.h文件的代码如下: #ifndef BOARDS_H #define BOARDS_H#include "nrf_gpio.h" #include "nordic_common.h"#if defined(BOARD_NRF6310)#include "nrf6310.h" #elif defined(BOARD_PCA10000)#include "pca10000.h" #…...
声明文件.d.ts
在 TypeScript 中,.d.ts 文件是类型声明文件(Declaration Files),用于描述 JavaScript 库或模块的类型信息,但不包含具体实现。它们帮助 TypeScript 编译器进行类型检查,同时保持与纯 JavaScript 的兼容性。…...
java整合socket通信全流程
前言 大家好,由于工作上业务的需要,在java项目中引入了socket通信,特此记录一下,用以备份,本文章中的socket通信实现了,服务端与客户端的双向通讯,以及二者之间的心跳通信,服务端重启之后,客户端的自动重连功能。 原理 Socket通信是计算机网络中常用的一种通信机制…...
2025年常见渗透测试面试题-sql(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 SQLi 一、发现test.jsp?cid150 注入点的5种WebShell获取思路 1. 文件写入攻击 2. 日志文件劫持 3.…...
【RabbitMQ】队列模型
1.概述 RabbitMQ作为消息队列,有6种队列模型,分别在不同的场景进行使用,分别是Hello World,Work queues,Publish/Subscribe,Routing,Topics,RPC。 下面就分别对几个模型进行讲述。…...
StarRocks 助力首汽约车精细化运营
作者:任智红,首汽约车大数据负责人 更多交流,联系我们:https://wx.focussend.com/weComLink/mobileQrCodeLink/334%201%202/ffbe5 导读: 本文整理自首汽约车大数据负责人任智红在 StarRocks 年度峰会上的演讲…...
Springboot--Kafka客户端参数关键参数的调整方法
调整 Kafka 客户端参数需结合生产者、消费者和 Broker 的配置,以实现性能优化、可靠性保障或资源限制。以下是关键参数的调整方法和注意事项: 一、生产者参数调整 max.request.size 作用:限制单个请求的最大字节数(包括消…...
C++ 基类的虚析构函数与派生的析构函数关系
1、基类非虚析构函数,派生类析构函数,基类指针指向派生类 class Base { public:~Base() { // 非虚析构函数std::cout << "Base class destructor" << std::endl;} };class Derived : public Base { public:~Derived() { // 派生…...
解决Spring Boot上传默认限制文件大小和完善超限异常(若依框架)
文章目录 报错信息问题分析技术原理解决方法1️⃣调整 Spring Boot 配置文件2️⃣检查内嵌 Tomcat 配置(可选)3️⃣ 代码自定义配置(覆盖配置文件) 全局异常处理代码 报错信息 org.springframework.web.multipart.MaxUploadSizeE…...
AI平台如何实现推理?数算岛是一个开源的AI平台(主要用于管理和调度分布式AI训练和推理任务。)
数算岛是一个开源的AI平台,主要用于管理和调度分布式AI训练和推理任务。它基于Kubernetes构建,支持多种深度学习框架(如TensorFlow、PyTorch等)。以下是数算岛实现模型推理的核心原理、架构及具体实现步骤: 一、数算岛…...
痉挛性斜颈康复助力:饮食调养指南
痉挛性斜颈患者除了积极治疗,合理饮食也能辅助缓解症状,提升生活质量。其健康饮食可从以下方面着手: 高蛋白质食物助力肌肉修复 痉挛性斜颈会导致颈部肌肉异常收缩,消耗较多能量,蛋白质有助于肌肉的修复与维持。日常可…...
mysql镜像创建docker容器,及其可能遇到的问题
前提,已经弄好基本的docker服务了。 一、基本流程 1、目录准备 我自己的资料喜欢放在 /data 目录下,所以老规矩: 先进入 /data 目录: cd /data 创建 mysql 目录并进入: mkdir mysql cd mysql 2、镜像查找 docke…...
Dify平台
目录 安装介绍Dify:开源大语言模型应用开发平台核心功能应用场景架构设计优势 安装 基于RDS PostgreSQL与Dify平台构建AI应用 使用RDS PostgreSQL打造RAG应用 介绍 Dify是一个开源的大语言模型(LLM)应用开发平台,融合了后端即…...
荣耀90 GT信息
外观设计 屏幕:采用 6.7 英寸 AMOLED 荣耀绿洲护眼屏,超窄边框设计,其上边框 1.6mm,左右黑边 1.25mm,屏占较高,带来更广阔的视觉体验。屏幕还支持 120Hz 自由刷新率,可根据使用场景自动切换刷新…...
JavaEE——线程的状态
目录 前言1. NEW2. TERMINATED3. RUNNABLE4. 三种阻塞状态总结 前言 本篇文章来讲解线程的几种状态。在Java中,线程的状态是一个枚举类型,Thread.State。其中一共分为了六个状态。分别为:NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING, TERMI…...
spring mvc 在拦截器、控制器和视图中获取和使用国际化区域信息的完整示例
在拦截器、控制器和视图中获取和使用国际化区域信息的完整示例 1. 核心组件代码示例 1.1 配置类(Spring Boot) import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.spring…...
1021 Deepest Root
1021 Deepest Root 分数 25 全屏浏览 切换布局 作者 CHEN, Yue 单位 浙江大学 A graph which is connected and acyclic can be considered a tree. The height of the tree depends on the selected root. Now you are supposed to find the root that results in a highest…...
RuntimeError: Error(s) in loading state_dict for ChartParser
一 bug错误 最近使用千问大模型有一个bug,报错信息如下 raise RuntimeError(Error(s) in loading state_dict for {}:\n\t{}.format( RuntimeError: Error(s) in loading state_dict for ChartParser:Unexpected key(s) in state_dict: "pretrained_model.em…...
WHAT - React 惰性初始化
目录 在 React 中如何使用惰性初始化示例:常规初始化 vs. 惰性初始化1. 常规初始化2. 惰性初始化 为什么使用惰性初始化示例:从 localStorage 获取值并使用惰性初始化总结 在 React 中,惰性初始化(Lazy Initialization)…...
2025 年安徽交安安全员考试:利用记忆宫殿强化记忆
安徽考生在面对交安安全员考试繁杂的知识点时,记忆宫殿是强大的记忆工具。选择一个熟悉且空间结构清晰的场所作为记忆宫殿,如自己居住的房屋。将房屋的不同区域,如客厅、卧室、厨房等,分别对应不同知识板块,像客厅对应…...
安全编码课程 实验6 整数安全
实验项目 实现安全计数器:实现 Counter 结构,确保计数范围为 0~100。 实验要求: 1、使用 struct 封装计数值value; 2、计数器初值为 0; 3、increment() 方法增加计数,但不能超过 100; 4、decrem…...
解决上传PDF、视频、音频等格式文件到FTP站点时报错“将文件复制到FTP服务器时发生错误。请检查是否有权限将文件放到该服务器上”问题
一、问题描述 可以将文本文件(.txt格式),图像文件(.jpg、.png等格式)上传到我们的FTP服务器上;但是上传一些PDF文件、视频等文件时就会报错“ 将文件复制到FTP服务器时发生错误。请检查是否有权限将文件放到该服务器上。 详细信息: 200 Type set to l. 227 Entering Pas…...
【Linux操作系统】:信号
Linux操作系统下的信号 一、引言 首先我们可以简单理解一下信号的概念,信号,顾名思义,就是我们操作系统发送给进程的消息。举个简单的例子,我们在写C/C程序的时候,当执行a / 0类似的操作的时候,程序直接就挂…...
经典频域分析法(Bode图、Nyquist判据) —— 理论、案例与交互式 GUI 实现
目录 经典频域分析法(Bode图、Nyquist判据) —— 理论、案例与交互式 GUI 实现一、引言二、经典频域分析方法的基本原理2.1 Bode 图分析2.2 Nyquist 判据三、数学建模与公式推导3.1 一阶系统的频域响应3.2 多极系统的 Bode 图绘制3.3 Nyquist 判据的数学描述四、经典频域分析…...
使用scoop一键下载jdk和实现版本切换
安装 在 PowerShell 中输入下面内容,保证允许本地脚本的执行: set-executionpolicy remotesigned -scope currentuser然后执行下面的命令安装 Scoop: iwr -useb get.scoop.sh | iex国内用户可以使用镜像源安装:powershell iwr -us…...
对状态模式的理解
对状态模式的理解 一、场景二、不采用状态模式1、代码2、缺点 三、采用状态模式1、代码1.1 状态类1.2 上下文(这里指:媒体播放器)1.3 客户端 2、优点 一、场景 同一个东西(例如:媒体播放器),有一…...
LangChain与LangGraph内置回调函数
LangChain与LangGraph回调函数指南 回调函数概述 LangChain和LangGraph共享同一套回调系统,通过BaseCallbackHandler类提供了丰富的生命周期钩子,可用于监控、调试和跟踪AI应用的执行过程。 回调函数流程图 #mermaid-svg-EsqgET3Cjlj0l0Z1 {font-fami…...
字符串哈希算法详解:原理、实现与应用
字符串哈希是一种高效处理字符串匹配和比较的技术,它通过将字符串映射为一个唯一的数值(哈希值),从而在O(1)时间内完成子串的比较。本文将结合代码实现,详细讲解前缀哈希法的工作原理,并通过流程图逐步解析…...
