python自动化测试(二):xpath获取元素

目录

前置代码

一、什么是xpath方式

二、通过xpath 单组属性名=属性值 的方式进行元素定位

三、通过xpath的多组属性进行元素的定位

四、通过xpath文本值的方式进行元素定位

五、通过模糊的文本值方式进行元素定位


前置代码
# coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)
# 最大化浏览器窗口
driver.maximize_window()
# 添加全局的等待时间
driver.implicitly_wait(10)

一、什么是xpath方式

XPath的使用方式非常灵活,可以通过相对路径或绝对路径来定位元素。

相对路径是相对于当前元素的路径

而绝对路径是相对于整个文档的路径。

通过使用XPath表达式,可以快速地定位并选择XML文档中的元素和属性。

使用语法:

find_element_by_xpath("xpath方式定位的语句")

二、通过xpath 单组属性名=属性值 的方式进行元素定位

通过xpath单组属性名=属性值的方式进行元素定位

参数值://标签名[@属性名="属性值"]

先通过检查元素去拿到个xpath的元素地址

然后在标签末尾用[@属性名="属性值"]

这个登录框没有name属性这些,只有个class属性,所以我这里用class来占位

url = "https://id1.cloud.huawei.com/CAS/portal/loginAuth.html"
driver.get(url)
# 输入华为用户名
driver.find_element_by_class_name('hwid-input-div').click()
# 通过xpath://标签名[@属性名="属性值"]作为参数
driver.find_element_by_xpath('/html/body/div/div/div[1]/div[3]/div[3]/span[3]/div[1]/form/div[2]/div/div/div/input[@class="hwid-input userAccount"]').send_keys("admin")

运行是正常定位到了账号表单并输入的

三、通过xpath的多组属性进行元素的定位

操作与单组属性相同,但是在参数值的拼接上,一个是单个、这个则是多个参数,多个参数之间用 and 拼接

driver.find_element_by_xpath('/html/body/div/div/div[1]/div[3]/div[3]/span[3]/div[1]/form/div[2]/div/div/div/input[@class="hwid-input userAccount" and name="userInput"]').send_keys("admin")

(这里就拿上面那个举例,因为检查中没有name属性,就自己取一个来暂时替代)

四、通过xpath文本值的方式进行元素定位

语法

参数值:路径/标签[text() = '文本值']

去读取华为登录界面的标题

url = "https://id1.cloud.huawei.com/CAS/portal/loginAuth.html"
driver.get(url)
# 通过文本的方式去获取
ele = driver.find_element_by_xpath("/html/body/div/div/div[1]/div[3]/div[2]/span/span[text()='华为帐号登录']")
print(f'元素{ele}')
print("---------------")
print(f'元素文本{ele.text}')

五、通过模糊的文本值方式进行元素定位

通过xpath模糊文本值的方式进行元素定位
//标签名[contains(.,"部分的文本值")]

打开百度新闻页

去定位这个新闻

url = "https://news.baidu.com/"
driver.get(url)
# 模糊查询
ele = driver.find_element_by_xpath("/html/body/div[3]/div[2]/div[1]/div/div[3]/div[1]/ul[1]/li[4]/a[contains(.,'今日辟谣')]")
print(f'元素{ele}')
print("---------------")
print(f'元素{ele.text}')

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

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

相关文章

python树结构包treelib入门及其计算应用

树是计算机科学中重要的数据结构。例如决策树等机器学习算法设计、文件系统索引等。创建treelib包是为了在Python中提供树数据结构的有效实现。 Treelib的主要特点包括: 节点搜索的高效操作。支持常见的树操作,如遍历、插入、删除、节点移动、浅/深复制…

使用Go语言测试Redis性能

1. 前言 Redis是一个高性能的键值存储数据库,常用于缓存、队列、排行榜等场景。在实际应用中,我们需要对Redis的性能进行测试,以便了解其在不同场景下的表现。本文将介绍如何使用Go语言测试Redis的性能。 2. 环境准备 在开始测试前&#x…

如何让家居设备快速通过Matter认证?移远通信为您带来标准回答

2022年10月,Matter协议正式面向全球发布;2023年10月23日,Matter 1.2最新版本正式发布。在Matter发布至今的时日里,众多头部厂商纷纷加速开发新产品,只为更快抢占市场先机,以“先发者”身份入局新赛道&#…

数据库安全定义以及重要性简单讲解

数据库安全定义 数据库安全指的是对数据库进行保护,以确保其数据的机密性、完整性和可用性,并防止非法访问、篡改、破坏、泄露等安全威胁。一般包括访问控制、数据加密、审计和监控、数据备份、漏洞修补、网络安全等方面。 数据库安全的重要性 1、数据…

C++ 学习 之 名字空间 namespace

必须在模块里面 extern 声明 在一个 cpp 文件中, 一个namespace 可以多次定义,最后合并,使用 using namespace A 这种引入方式的话,使用的时候可以用所有 A 中的数据 多个 cpp 文件的话,不能会自动合并相同的 名字空…

HackTheBox - Starting Point -- Tier 0 ---Preignition

文章目录 一 题目二 实验过程 一 题目 Tags Web、Custom Applications、Apache、Reconnaissance、Web Site Structure Discovery、Default Credentials译文:Web、定制应用程序、Apache、侦察、网站结构发现、默认凭证Connect To attack the target machine, you …

论文-分布式-分布式计算|容错-分布式控制下的自稳定系统

参考文献Self-stabilizing systems in spite of distributed control可以把松散耦合的 循环序列过程 间的同步任务,看成是要保持一个这样的不变性:“系统要处于一种合法状态”因此每个进程在运行每一个可能会改变不变性的步骤之前都要先检查一下是可以执…

人机环境系统智能是东方与西方智能思想的融合

人机环境系统的思想是一种综合性的思想,它融合了东方思想和西方思想的元素。在东方文化中,人类与自然环境有着密切的联系,强调人类与自然环境的和谐共生关系。而在西方文化中,科技和机器的应用越来越广泛,对人类社会和…

21.2 Python 使用Scapy实现端口探测

Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包。能够很容易的创建,发送,捕获,分析和操作网络数据包,包括TCP,UDP,ICMP等协议,此外它还提…

十四天学会C++之第八天:文件操作

1. 文件的打开和关闭 文件操作的基本概念。打开文件:使用fstream库打开文件以供读写。关闭文件:确保文件在使用完毕后正确关闭。 文件的打开和关闭:C 文件操作入门 在C编程中,文件操作是一项重要的任务,可以读取和写…

《Cesium 进阶知识点》- el-select 列表打开后,点击Cesium.Viewer场景无法自动关闭

前提 el-select属性 popper-append-to-body 必须 为 false。这样初始化的列表 el-select-dropdown 才在 el-select下;目前测试,仅对 Cesium.Viewer 生成的 canvas 点击时列表无法自动关闭;使用原生 canvas 和 echarts,点击其场景…

vivado简单仿真入门

打开软件 创建工程 create project ![在这里插入图片描述](https://img-blog.csdnimg.cn/892eda626d394733920854b71ca8f726.png)先next,保留工程路径,配置环境 配置芯片环境 本次芯片类型 xc7k325tffg900-2 创建之后完整的demo 编写仿真内容 timescale 1ns/1…

RabbitMQ 笔记

一、win10安装erlang 1.1 安装erLang语言,配置环境变量 erLang官网地址 1.2 配置环境变量 (1)添加系统变量ERLANG_HOME (2)path路径,指向bin目录 1.3 配置完成后再cmd命令窗口erl -version可以查看…

管理类联考——数学——汇总篇——知识点突破——数据分析——记忆

文章目录 考点记忆/考点汇总——按大纲 整体目录大纲法记忆宫殿法绘图记忆法 局部数字编码法对号不对号 归类记忆法重点记忆法歌决记忆法口诀:加法分类,类类相加;乘法分步,步步相乘。 谐音记忆法涂色 理解记忆法比较记忆法转图像记…

1997-2017年各省能源投入数据(万吨标准煤)

1997-2017年各省能源投入数据(万吨标准煤) 1、时间:1997-2017年 2、来源:中国统计年鉴 3、范围:30个省 4、指标:能源投入(各省8种能源消费总量计算得出)(万吨标准煤&…

DeepSpeed: 大模型训练框架 | 京东云技术团队

背景: 目前,大模型的发展已经非常火热,关于大模型的训练、微调也是各个公司重点关注方向。但是大模型训练的痛点是模型参数过大,动辄上百亿,如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这…

华为NAT配置实例(含dhcp、ospf配置)

一、网络拓朴如下: 二、要求:PC1 能访问到Server1 三、思路: R2配置DHCP,R2和R1配OSPF,R1出NAT 四、主要配置: R2的DHCP和OSPF: ip pool 1gateway-list 10.1.1.1 network 10.1.1.0 mask 25…

Leetcode—7.整数反转【中等】

2023每日刷题&#xff08;十&#xff09; Leetcode—7.整数反转 关于为什么要设long变量 参考自这篇博客 long可以表示-2147483648而且只占4个字节&#xff0c;所以能满足题目要求 复杂逻辑版实现代码 int reverse(int x){int arr[32] {0};long y;int flag 1;if(x <…

JS操作DOM及CSS

JS创造于1994年&#xff0c;其目的是为浏览器显示的文档赋予动态行为。 1 Web编程基础 本节讲解如何编写Web应用中的js程序&#xff0c;如果将这些程序加载到浏览器&#xff0c;以及如何获取输入、产出输出&#xff0c;如何运行响应事件的异步代码。 1.1 js 脚本 虽然现在不…

什么是 Node.js

目标 什么是 Node.js&#xff0c;有什么用&#xff0c;为何能独立执行 JS 代码&#xff0c;演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来编写服务器后端的应用…