selenium之元素定位

news2024/11/20 18:23:07

一、selenium安装

pip3 install selenium

二、安装浏览器驱动

1:下载最新的浏览器驱动

chrome浏览器驱动下载地址:

https://registry.npmmirror.com/binary.html?path=chromedriver/

查看自己电脑上安装的chrome浏览器版本号,驱动和浏览器版本号需对应。

查看自己电脑浏览器的版本号:

进入驱动下载地址,下载驱动;

比如我的谷歌版本是113.0.5672.126,我下载对应的chromedriver的版本是113.0.5672.63,

点击进去之后,如果你是windows系统就选win32这个,苹果的系统就选相对应的下载就行了。

查看驱动的版本号:

2、安装

解压下载的驱动文件放入/user/local/bin下

3:测试安装成功

写一个简单的selenium脚本进行验证

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')

能成功打开浏览器并进入百度首页,即为安装成功。

三、元素定位方式

元素定位方式分为八大元素定位

以百度一下为例

1:通过id进行定位

定位输入框,并输入内容,获取输入框的id属性的值。

 定位:

# 通过id来定位
ele = driver.find_element('id', 'kw')    # 定位元素
ele.send_keys('测试')                     # 输入内容

2:通过name定位

定位百度输入框,获取name属性的值

 定位:

# 通过name来定位
ele = driver.find_element('name', 'wd')
ele.send_keys('通过name定位')

3:通过class_name定位

定位“换一换”按钮,并且进行点击操作

定位:

注意:定位方式的class name中间是个空格

# 通过class_name来定位
ele = driver.find_element('class name', 'hot-refresh-text')
ele.click()             # 点击操作

 4:通过link_text定位

通过超链接的文本进行定位

定位“新闻”,并进行点击操作

定位:

# 通过link_text来定位
ele = driver.find_element('link text', '新闻')
ele.click()

5:通过partial_link_text定位

使用场景:超链接的文本超长,可以只输入部分文本

定位“hao123”

定位:

# 通过partial_link_text定位
ele = driver.find_element('partial link text', 'hao')
ele.click()

6:通过tag_name定位

使用标签进行定位,一般标签都是有多个的,此时可以使用find_elements进行查找,查找的结果是一个列表。

例如:定位标签<a>

# 通过tag_name来定位
eles = driver.find_elements('tag name', 'a')
print(len(eles), eles)
# 点击第5个a标签
eles[4].click()

 7:通过xpath定位

在F12中复制要定位元素的路径

定位百度输入框:

定位:

# 通过xpath来定位
ele = driver.find_element('xpath', '/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input')
ele.send_keys('xpath')

8:通过css进行定位

定位百度输入框

定位:

# 通过css来定位
ele = driver.find_element('css selector', '#kw')
ele.send_keys('css')

在输入定位方式时,可以导入By方法,可以防止输入定位方式拼写错误。

from selenium.webdriver.common.by import By

ele = driver.find_element(By.ID, 'kw')
ele.send_keys('测试') 

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

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

相关文章

【工程实践】python实现多进程

1 多线程与多进程 Python中比较常见的并发方式主要有两种&#xff1a;多线程和多进程。 1-1 多线程 多线程即在一个进程中启动多个线程执行任务。一般来说使用多线程可以达到并行的目的&#xff0c;但由于Python中使用了全局解释锁GIL的概念&#xff0c;导致Python中的多线程并…

Doo Prime 德璞资本:怎么买原油期货?原油期货买卖策略分享

随着中国经济市场的逐步开放&#xff0c;也为了快速和国际金融接轨&#xff0c;我国于2018年3月26日正式挂牌上市原油期货交易。并且我国的原油期货交易合约和美原油期货和布伦特原油期货交易是相互影响的&#xff0c;这让中国投资者可以足不出户的进行原油期货投资。那么在国内…

Jconsole 开启远程连接遇到的一些坑

最近在学习 JVM&#xff0c;其中涉及到性能、内存等指标分析需要使用工具分享&#xff0c;Java 提供了几个可视化工具来监控和管理 Java 应用&#xff0c;比如 Jconsole、JVisual、JMC&#xff0c;他们以图形化的界面实时的监控程序各种性能指标以及内存、CPU 的使用情况。 Jco…

Triton教程 --- 模型管理

Triton教程 — 模型管理 Triton系列教程: 快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理速率限制器 Triton 提供的模型管理 API 是 HTTP/REST 和 GRPC 协议的一部分&#xff0c;也是 C API 的一部分。 Triton 以三种模型控制模式之一…

5.实用干货-你可能没留意的几个生信基础

Reads&#xff1a;高通量测序平台产生的序列。 Raw Reads&#xff1a;原始下机数据称为Raw Reads&#xff08;Raw data&#xff09;。 Clean Reads&#xff1a;通过生物信息的方法&#xff0c;去除一些质量差的reads&#xff08;比如测序错误&#xff0c;长度小于20的reads&a…

TypeScript零基础入门之背景介绍和环境安装

一、什么是TypeScript TypeScript是一种由微软开发和维护的开源编程语言。它是JavaScript的超集&#xff0c;意味着任何JavaScript程序都是一种有效的TypeScript程序。TypeScript添加了静态类型、类、接口、枚举和命名空间等概念&#xff0c;同时支持ES6特性。TypeScript被视为…

Flutter 初探原生混合开发

转载请注明出处&#xff1a;https://blog.csdn.net/kong_gu_you_lan/article/details/131320733?spm1001.2014.3001.5501 本文出自 容华谢后的博客 0.写在前面 现如今跨平台技术被越来越多的开发者提起和应用&#xff0c;从最早的Java到后来的RN、Weex&#xff0c;到现在的Co…

每日学术速递6.11

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Video-ChatGPT: Towards Detailed Video Understanding via Large Vision and Language Model 标题&#xff1a;Video-ChatGPT&#xff1a;通过大型视觉和语言模型实现详细的视频理…

SCI论文插图怎么做?有这一篇文章就够了

SCI插图的整体要求 SCI杂志种类很多&#xff0c;对插图的要求也各有不同&#xff0c;但是以下几条是通用的&#xff1a; 1. 插图尺寸要符合SCI期刊要求 2. 同篇文稿插图中文字须统一字号及字体 3. 须提交SCI期刊指定文件类型的插图 4. 插图文件命名须符合SCI期…

C++基础(15)——STL常用算法(遍历和查找)

前言 本文介绍了C中STL常用遍历和查找算法。 9.1&#xff1a;常用遍历算法&#xff08;for_each、transform&#xff09; 9.1.1&#xff1a;foreach for_each&#xff1a;遍历容器&#xff0c;transform&#xff1a;搬运一个容器中的数据到另一个容器中 for_each中使用普通…

自建iOS消息推送服务Bark

老苏的 DSM6.17 系统恢复之后&#xff0c;发现丢了一些套件&#xff0c;在安装 phpMyAdmin 套件时&#xff0c;显示需要用到 PHP7.4 但是在套件里搜索却只有 PHP7.3 从 https://archive.synology.cn/download/Package/PHP7.4 下载了最低的 7.4.9-0003 手动安装时居然显示 DSM6.…

Java进程调度的基本过程(详细易理解)

目录 一.什么是进程? 二.进程是如何创建的 三.进程如何调度的 优先级: 状态: 记账信息: 上下文: 线程是什么: 为什么要有线程: 坏处: 一.什么是进程? 了解这个问题之前,我们需要先打开我们桌面上的的学习资料 啪的一下,很快啊,点双击学习资料.exe之后,在后台(ctrl…

spring security oauth2 整合 JWT

前言 在这个基础上&#xff0c;进行整合。 spring security oauth2学习 -- 快速入门_本郡主是喵的博客-CSDN博客 1.jwt的一般使用 先把 reids,common-pools 等依赖删掉。 删掉redis的下相关配置 1.1 导入依赖 <!--jjwt--><dependency><groupId>io.json…

正则表达式(2)

文章目录 正则表达式一.正则表达式1.含义2.通配符2.1通配符含义作用2.2常见的通配符 3.元字符&#xff08;字符匹配&#xff09;4.表示次数5.位置锚定6.分组或其他 二.扩展正则表达式1.表示次数2.举例 正则表达式 一.正则表达式 1.含义 &#xff08;1&#xff09;是一种特殊…

基于Java智慧城市实验室主页系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

一、枚举类型——常量特定方法

Java 的枚举机制可以通过为每个枚举实例编写不同的方法&#xff0c;来赋予它们不同的行为。要实现这一点&#xff0c;你可以在枚举类型中定义一个或多个抽象方法&#xff0c;然后为每个枚举实例编写不同的实现&#xff0c;例如&#xff1a; ConstantSpecificMethod.java import…

使用 TensorFlow.js 将机器学习引入您的 Web 应用程序

如何使用 TensorFlow.js 在您的 Web 应用程序中实施机器学习 原文作者: Abhay Singh Rathore 机器学习 (ML) 不再是一个崇高、遥不可及的概念。借助 TensorFlow.js 等库&#xff0c;开发人员现在可以将 ML 整合到他们的 Web 应用程序中。例如&#xff0c;您可以创建一个系统&am…

革新智造业丨云和恩墨数据智能产品 zAIoT 将工控设备KPI分析性能提升百倍

点击关注 随着智能制造业的迅猛发展&#xff0c;工控设备在生产过程中起到至关重要的作用。为了确保生产效率和产品质量的提高&#xff0c;企业需要对工控设备进行全面的分析和评估。 工控设备KPI是指在生产线/车间设备的运行和维护过程中&#xff0c;需要监控的关键指标参数&a…

Vue----Vue的模板语法

【原文链接】Vue----Vue的模板语法 Vue 模板语法的描述 Vue使用一种基于HTML的模板语法&#xff0c;使我们能够声明式地将其组件实例的数据绑定到呈现的DOM上&#xff0c;所有的Vue模板都是语法层面合法的HTML&#xff0c;可以被符合规范的浏览器和HTML解析器解析 文本插值 …

Java性能权威指南-总结16

Java性能权威指南-总结16 线程与同步的性能线程池与ThreadPoolExecutor设置最大线程数设置最小线程数 线程与同步的性能 能够轻松编写多线程程序也是Java的一个标志性特征。Java性能方面的吸引力显而易见&#xff1a;如果有两个CPU可用&#xff0c;那么一个应用能够完成的工作…