Python +selenium 自动化之元素定位

news2024/11/28 8:48:16

selenium之八大元素定位:

1、通过ID的方式定位  id是页面的唯一标识

例如:找到百度的搜索输入框

driver.findElement(By.id("kw"))

2、通过tagName的方式定位     

用标签名定位非常少 ---一般会重复
driver.findElements(By.tagName("input"));

3、通过className方式定位      className == 样式名
注意:如果元素的class样式有多个,只能通过其中一个去定位
driver.findElement(By.className("s_ipt"))

4、linkText  超链接的完整文本

例如:百度首页的地图
driver.findElement(By.linkText("地图"))

5、partialLinkText超链接部分文本定位

例如:百度首页的百度热搜 

driver.findElement(By.partialLinkText("中国迈入创新型国家行列"))

6、name ---name属性

例如:百度首页的输入框
driver.findElement(By.name("wd"))

7、cssSelector
1)根据标签名定位 tagName
driver.findElements(By.cssSelector("input"));

2) 根据ID定位 id前需要加上一个#
driver.findElement(By.cssSelector("#kw"))

3)通过样式名className查找 在样式名前加一个.号
driver.findElement(By.cssSelector(".s_ipt"))
driver.findElement(By.cssSelector(".bg s_btn"))

4)根据属性名查找 (标签名[属性名="属性值"])

属性名查找又可以分为单属性或者多属性

单属性       标签名[属性名="属性值"])
driver.findElement(By.cssSelector("input[name='wd']"))


多属性     (标签名[属性名="属性值"] [属性名="属性值"] [属性名="属性值"])
driver.findElement(By.cssSelector("input[name='wd'][class='s_ipt'][maxlength='255']"))

8、xpath 定位
1)xpath绝对路径 -----容易发生变化,不建议使用

就是根据html格式的路径 一 层层找到需要定位的元素

driver.findElement(By.xpath("html/body/div[1]/div[1]/div[1]/div[1]/form/span[1]/input"))


2)相对路径 

格式://->相对路径   标签名[@属性名='属性值']
百度输入框查找

标签名不确定时用*                           例一: //*[@name='wd']     #通过下标:  //a[@属性名 and @属性名][1]

标签名确定则用标签名代替               例二: //input[@name='wd']
多属性查找, 用and 连接                 例三: //input[@name='wd'] and [@autocomplete='off']
支持文本定位                                   例四: //a[text()='抗击肺炎']
xpath 部分文本的匹配                      例五: //a[contains(text(),'击肺炎')]
xpath 部分属性的匹配                      例六: //input[contains(@type,'submi')]
 

3)xpath 轴定位

常用的轴名称主要有父节点parent 、当前节点之前的所有兄弟节点precedling-sibling、当前节点之后的所有兄弟节点following-sibling

轴定位:
# 找子孙后代
//标签[@属性名 ]//标签[@属性名]//标签名[属性名]

# 轴运算
//a[@id='kw']/ancestor::标签名[@属性名]
# 找哥哥姐姐
//标签[@属性名 ]/preceding-sibling::标签名[@属性名]
# 找弟弟妹妹
//标签[@属性名 ]/following-sibling
#找后代
//li[@class='side-menu__item']/descendant::span[text()='基础']

🎁更多干货


完整版文档下载方式:

这些资料,对于从事【软件测试】等相关工作的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享。

在评论区和我互动交流或者私❤我【软件测试学习】领取即可,拿走不谢。


如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!

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

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

相关文章

Vue2 Diff 算法简易版

背景 最近复习的过程中,准备对比一下Vue2和Vue3的diff算法区别,好知道两者直接的差异和优缺点。刚好看了网上的文章,但是对方写的代码不太正确,所以特意记录一下我的学习过程~ 双端比较法 Vue2采用的双端比较法,即新…

MBD开发 STM32 Timer

开两个定时器 一快一慢 两个中断都要使能 没有自动更新,切换下timerx就好了,但是触发UP要手动勾选

剑指offer27.二叉树的镜像

这道题很简单,写了十多分钟就写出来了,一看题目就知道这道题肯定要用递归。先交换左孩子和右孩子,再用递归交换左孩子的左孩子和右孩子,交换右孩子的左孩子和右孩子,其中做一下空判断就行。以下是我的代码:…

爬虫入门指南(8): 编写天气数据爬虫程序,实现可视化分析

文章目录 前言准备工作爬取天气数据可视化分析完整代码解释说明 运行效果完结 前言 天气变化是生活中一个重要的因素,了解天气状况可以帮助我们合理安排活动和做出决策。本文介绍了如何使用Python编写一个简单的天气数据爬虫程序,通过爬取指定网站上的天…

Pandas+Pyecharts | 双十一美妆销售数据分析可视化

文章目录 🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 数据信息2.3 筛选有销量的数据 🏳️‍🌈 3. Pyecharts数据可视化3.1 双十一前后几天美妆订单数量3.2 双十一前后几天美妆销量3.3…

【Linux】线程终结篇:线程池以及线程池的实现

linux线程完结 文章目录 前言一、线程池的实现二、了解性知识 1.其他常见的各种锁2.读者写者问题总结 前言 什么是线程池呢? 线程池一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着…

智能、安全、高效,看移远如何助力割草机智能化升级

提到割草机,大家可能首先会想到其噪声大、费人力、安全性不足等问题。智能割草机作为一种便捷、高效的智能割草设备,能够自主完成草坪修剪工作,很好地解决传统割草机的痛点问题。 随着人们对家庭园艺以及生活质量要求的逐步提高,割…

向量数据库:新一代的数据处理工具

在我们的日常生活中,数据无处不在。从社交媒体的帖子到在线购物的交易记录,我们每天都在产生和处理大量的数据。为了有效地管理这些数据,我们需要使用数据库。数据库是存储和管理数据的工具,它们可以按照不同的方式组织和处理数据…

python实现简单贪吃蛇

import math import pygame import time import numpy as np # 此模块包含游戏所需的常量 from pygame.locals import *# 设置棋盘的长宽 BOARDWIDTH 90 BOARDHEIGHT 50 # 分数 score 0# 豆子 class Food(object):def __init__(self):self.item (4, 5)# 画出食物def _draw(…

qtav源码包编译(qt5.15+msvc2019)、使用vlc media player串流生成rtsp的url并且在qml客户端中通过qtav打开

QTAV源码包编译 下载源码 下载依赖库(里面有ffmepg等内容) https://sourceforge.net/projects/qtav/files/depends/QtAV-depends-windows-x86x64.7z/download下载源码包 https://github.com/wang-bin/QtAV更新子模块 cd QtAV && git submod…

vmware postgresql大杂烩

Vmware 窗口过界: https://blog.csdn.net/u014139753/article/details/111603882 vmware, ubuntu 安装: https://zhuanlan.zhihu.com/p/141033713 https://blog.csdn.net/weixin_41805734/article/details/120698714 centos安装: https://w…

【Go】短信内链接拉起小程序

一、 需求场景 (1) 业务方,要求给用户发送的短信内含有可以拉起我们的小程序指定位置的链接; 【XXX】尊敬的客户,您好,由于您XX,请微信XX小程序-微信授权登录-个人中心去XX,如已操作请忽略,[…

Jenkins2.346新建项目时没有Maven项目选项解决办法

解决办法:需要安装Maven Integration 系统管理-->管理插件-->可选插件-->过滤输入框中输入搜索关键字: Maven Integration,下载好后安装。

Mysql:创建和管理表(全面详解)

创建和管理表 前言一、基础知识1、一条数据存储的过程2、标识符命名规则3、MySQL中的数据类型 二、创建和管理数据库1、创建数据库2、使用数据库3、修改数据库4、删除数据库 三、创建表1、创建方式12、创建方式23、查看数据表结构 四、修改表1、追加一个列2、修改一个列3、重命…

MySQL存储引擎(InnoDB、MyISAM、Memory面试题)

1.1 MySQL体系结构 1). 连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的…

暑期学JavaScript【第六天】

一、正则表达式 边界符 ^:表示以后面字符开头 $:表示以前方字符结尾量词 *:前面的字符至少出现0次 :前面的字符至少出现1次 ?:前面的字符出现0/1次 {n}:重复n次 {n,}:至少重复n次 {n,m}:重复n~m次字符类 [ ]:代表字符集合 /^[a-z]$/[ ^ ] 取反 [^a-…

leetcode 257. 二叉树的所有路径

2023.7.5 这题需要用到递归回溯,也是我第一次接触回溯这个概念。 大致思路是: 在reversal函数中,首先将当前节点的值加入到路径path中。然后判断当前节点是否为叶子节点,即没有左右子节点。如果是叶子节点,将路径转化…

nnUNet保姆级使用教程!从环境配置到训练与推理(新手必看)

文章目录 写在前面nnUNet是什么?一、配置虚拟环境二、安装nnUNet框架1.安装nnUNet这一步我遇到的两个问题: 2.安装隐藏层hiddenlayer(可选) 三、数据集准备nnUNet对于你要训练的数据是有严格要求的,这第一点就体现在我…

apple pencil值不值得购买?ipad可以用的手写笔推荐

现在市面的电容笔品牌鱼龙混杂,我们很在选购中很容易就踩坑,例如买到一些书写会频繁出现断触的,或者防误触功能会失灵。所以我们在选购中务必要擦亮双眼。而对于一些将ipad作为一种学习工具的人而言,电容笔已经是iPad中不可或缺的…

【C++】vector基本用法介绍

vector简单介绍 前言vector原型vector常用函数接口介绍vector的构造、析构、赋值构造析构 修改类的函数push_backinsertfind 函数 eraseswap 关于容量的函数max_sizesort vector\<char\> 和 string的区别vector\<数据类型\> 结束 前言 首先&#xff0c;vector的用…