selenium元素定位--xpath定位--层级与逻辑组合定位

news2024/11/19 13:35:12

其他元素非唯一时,又不想用xpath绝对定位时,需要用到层级与逻辑定位.

一、层级属性结合定位:

遇到元素没有class、name、id等或属性动态变化情况时,可以找父节点元素,父级节点没有id时,可以继续往上找id,定位到id元素后,依次往下找。通过标签定位。层级定位

例如:百度输入框

from selenium import webdriver  # webdriver浏览器驱动,包含了各种前端浏览器的操作的工具方法
from selenium.webdriver.common.by import By
driver =webdriver.Chrome()
driver.implicitly_wait(5) #隐式等待5s
driver.maximize_window()
driver.get("http://www.baidu.com")

#层级属性结合定位输入框
driver.find_element(By.XPATH,"//form[@id='form']/span/input[1]").send_keys('selenuim')
#ID定位“百度一下”
driver.find_element(By.ID, "su").click()
#关闭
driver.quit()

1.(//)当前页面

2.(form)先定位到form元素

3.([@id='loginForm']) form元素的id值

4.(/)标签层级含义

5.[1]代表个数,第多少个,与数组的显示个数不同。

二、逻辑运算组合定位

单个元素的属性不唯一的定位:class  name   ID  元素属性全部不唯一时,进行组合定位,同时满足(and),同时作为定位依据,进行元素的精准定位。

find_element_by_xpath("//form[@id='kw' and @name='wd']").send_keys("python")

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

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

相关文章

Flutter(踩坑)之Android sdkmanager tool not found

D:\Flutter\flutter\bin\flutter.bat doctor --verbose [√] Flutter (Channel stable, v1.2.1, on Microsoft Windows [Version 10.0.22631.3296], locale zh-CN)• Flutter version 1.2.1 at D:\Flutter\flutter• Framework revision 8661d8aecd (5 years ago), 2019-02-14 …

[leetcode]118.杨辉三角

前言:剑指offer刷题系列 问题: 给定一个非负整数 *numRows,*生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,…

【ZigBee/ZStack快速入门】04-串口

时钟 协议栈都是用的32M晶振工作的,所以在学习串口使用之前,应该学习一下如何调时钟 cc2530在运行过程中需要一个高频时钟信号和一个低频时钟信号,高频时钟信号主要供给cpu保证程序运行,16Mhz RC(这也是为什么定时器计算分频时是…

GPU-CPU-ARM-X86-RISC-CUDA

CPU更适合处理复杂逻辑运算和单线程任务,而GPU则更适合处理大规模并行计算任务。 CPU(中央处理器)通常具有较少的核心数量(一般在2到16个之间),但每个核心的性能较强,擅长执行复杂的运算和逻辑…

DevSecOps平台架构系列-亚马逊云AWS DevSecOps平台架构

目录 一、概述 二、AWS DevSecOps实施原则 2.1 尽早采用安全测试,加速问题反馈 2.2 优先考虑预防性安全控制 2.3 部署检测性安全控制时,确保有与之互补的响应性安全控制 2.4 安全自动化 2.5 总结 三、AWS DevSecOps关键组件 3.1 关键组件 3.2 关…

LeetCode Python - 78. 子集

目录 题目描述解法方法一:DFS(回溯)方法二:二进制枚举 运行结果方法一方法二 题目描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集 (幂集)。 解集 不能 包含重复的子集。你可以按 任…

视频声音生成字幕 pr生成视频字幕 以及字幕乱码的解决

目录 目录 1、首先把要生成字幕的视频拖入以创建序列 2、点击工具栏的 窗口 选择 文本 3、选择字幕下的 转录序列 4、选择输出的语言(主要看视频声音说的是啥语言) 5、音轨 选择 音频1​编辑 6、点击转录 7、等待转录文本 8、点击创建说明性字幕按…

智慧交通(代码实现案例)

1.项目简介 目标: 了解智慧交通项目的架构知道智慧交通项目中的模块能够完成智慧交通项目的环境搭建 该项目是智慧交通项目,通过该项目掌握计算机视觉的方法在交通领域的相关应用,包括车道线检测的方法,多目标车辆追踪及流量统计方法&#…

如何快速进行城市内涝模拟?HTWATER软件

原文链接:如何快速进行城市内涝模拟?HTWATER软件https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247599079&idx2&sndc6f3da8b17c5587cf5b7766e7019729&chksmfa820200cdf58b16658983ecfbf2b369bff39813302942d6f7eb7b71428c68da71…

Django 仿博客园练习

数据库搭建 部分功能介绍 【一】注册 (1)效果显示、简单简介 主要亮点 结合了layui和forms组件默认头像可以随着性别的选择发生改变自定义头像可以实时更新显示forms组件报错信息可以局部刷新显示在对应框体下面 没有直接使用layui的前端验证后端验证…

Vue2 使用mockjs

一、创建项目 vue create mock-demo二、安装 npm install mockjs --save-dev npm install axios --save三、创建mock文件夹 四、修改main.js 五、应用

js选择语句

文章目录 1. if 分支语句1.1. 示例代码1.2. 运行结果 2. if 双分支语句3. if 多分支语句4. switch 语句(了解)4.1. 注意4.2. case 穿透现象4.3. case 穿透产生的原因 5. switch 语句与选择语句区别别5.1. 语法上的区别5.2. 应用场景上的区别 6. 三元表达…

HCIP—BGP路由发布

R1和R2,R4和R5建立EBGP对等体 R1和R2(R4和R5)之间属于EBGP对等体,可以使用直连物理接口建立对等体关系,TTL值默认1。由于使用直连物理接口方式建立,刚好一跳到达。 [R1]bgp 100 [R1-bgp]router-i…

燃气官网安全运行监测系统-阀井燃气监测仪-旭华智能

近年来,燃气爆炸事故频发,造成了重大人员伤亡和财产损失。这也再次为我们敲响警钟,燃气是我们日常生活中不可或缺的能源,但其潜在的危险性也是不容小觑。因此在重要节点加装燃气阀井气体监测仪,并将数据上传到系统平台…

【QT+QGIS跨平台编译】之九十四:【QGIS_App跨平台编译】—【错误处理:字符串错误】

文章目录 一、字符串错误二、涉及到的文件一、字符串错误 常量中有换行符错误:(也有const char * 到 LPCWSTR 转换的错误) 需要把对应的文档用记事本打开,另存为 “带有BOM的UTF-8” 二、涉及到的文件 涉及到的文件有: src\app\qgisapp.cpp src\app\qgsprojectpropert…

JetBrains全家桶激活,分享 DataGrip 2024 激活的方案

大家好,欢迎来到金榜探云手! DataGrip 公司简介 JetBrains 是一家专注于开发工具的软件公司,总部位于捷克。他们以提供强大的集成开发环境(IDE)而闻名,如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工…

金融投贷通--接口测试分析、设计与实现

金融投贷通--接口测试分析、设计与实现 接⼝相关理论ui功能测试和接⼝测试那个先执⾏ui功能测试与接⼝测试的区别ui功能测试和接⼝测试那个更⾼效 投资业务接⼝接口测试流程如何测试分析api文档项目难点 测试点提取注册图⽚验证码、注册验证码注册登录测试点开通登录测试点开通…

API成网络攻击常见载体,如何确保API安全?

根据Imperva发布的《2024年API安全状况报告》,API成为网络攻击者的常见载体,这是因为大部分互联网流量(71%)都是API调用,API是访问敏感数据的直接途径。根据安全公司Fastly的一项调查显示,95%的企业在过去1…

蓝桥杯刷题-子串简写

子串简写 代码 kint(input()) s,c1,c2input().split() pre[0]*len(s) ans0 for i in range(len(s)):pre[i]pre[i-1]if c1s[i]:pre[i]1elif c2s[i] and i1-k>0:anspre[i-k1] print(ans)

宾大率先推出藤校首个AI专业!25Fall即可申请!

随着人工智能技术的不断发展,当今社会对AI的需求已呈现出日益多样化的趋势。由ChatGPT、Midjourney等AI应用领衔,生成式的人工智能迅速崛起。各个领域都开始意识到AI的潜在应用价值,该领域的人才需求量也越来越大。在这样的人工智能热潮下&am…