当前位置: 首页 > news >正文

F12抓包10:UI自动化 - Elements(元素)定位页面元素

​课程大纲

1、前端基础

1.1 元素

        元素是构成HTML文档的基本组成部分之一,定义了文档的结构和内容,比如段落、标题、链接等。

        元素大致分为3种:基本结构、自闭合元素(self-closing element)、嵌套元素

1、基本结构:由一个开始标签(start tag)、可能的内容(如文本或其他元素)和一个结束标签(end tag)组成。

举例:

<p>土小帽软件测试学习(从入门到高级)</p>

2、自闭合元素:只有开始标签,以 / 符号自闭合(“/”可省略)。

举例:

<image src=”tuxiaomao.jpg” alt=”土小帽的图片说明”>

3、嵌套元素:元素嵌套在其他元素之中,形成层次结构。

举例:

<form id="form" name="f" action="/s" >    <input type="text" id=”name” name="username" >    <input type="password" name="pwd" ></form>

1.2 元素的id、name、class区别

        id、name、class均为标签属性,一个元素可以同时具有id、name、class。

三者区别的类比:

① id → 身份证号,唯一;

② name → 姓名,不唯一,会作为http请求的变量名;

举例:

# 一组单选框<input type="radio" name='sex'/>男<input type="radio" name='sex'/>女

③ class → 类名,不唯一,控制样式。

举例:

        人可以按照地区、男女分类,同一个人可以同时是北京类、 朝阳类、汉族类……

参考文章:

1.《HTML中元素和标签有什么区别?》

https://blog.csdn.net/black_cat7/article/details/140924688

2.《Html中class,id,name的区别》

https://www.cnblogs.com/iamspecialone/p/11171881.html

2、selenium元素定位

        seleniumUI自动化测试中,定位元素主要有以下八种方法,最后两种比较重要:

定位方式

Selenium(python)定位函数

html标签名定位

find_element_by_tag_name()

(标签属性)id定位

find_element_by_id()

(标签属性)name定位

find_element_by_name()

(标签属性)class定位

find_element_by_class_name()

(a标签)完整文字定位

find_element_by_link_text()

(a标签)部分文字定位(确保唯一)

find_element_by_partial_link_text()

xpath定位

find_element_by_xpath()

css定位

find_element_by_css_selector()

2.1 css选择器定位

        填写在函数“find_element_by_css_selector()”中。

定位方式

选择器

举例

选择所有元素

*

标签名定位

tag

“a”:选择页面中所有a元素

父子关系定位

tag1 > tag2

“form > input”:选择form标签包围的所有input元素

同级标签定位

(兄弟关系)

tag1 + tag2

“div+ p”:选择同一级中紧挨div标签的所有p元素

id定位

#id

“#name”:选择id为name的元素

类名定位

.class

“.s_ipt”:选择class为s_ipt的元素

指定属性定位

[attrbute=value]

type=”password”:选择type属性值为password的元素

2.2 xpath定位

        填写在函数“find_element_by_xpath()”中。

        一种XML文档定位元素的语言。HTML可以看做XML的一种实现,也可以用这种定位方式。

4种定位方式:

  • 绝对路径定位(层级定位)

  • 元素属性定位

  • 层级+属性

  • 元素属性+逻辑运算符。

① 绝对路径定位(层级定位)

        使用“/”分隔标签层级,一级一级直到定位目标元素,同级有多个相同标签,标签后加中括号“[]”标注选择同级的第几个标签。

举例:

        xpath定位百度输入框——层级定位

find_element_by_xpath(“/html/body/div[3]/div[1]/div/div[1]/div/form/span[1]/input”)

② 元素属性定位

公式:

//标签名[@属性名=属性值]

        标签名可以改为“*”,意为不指定标签名。属性任选,如:id、name、type、src……

举例:

        xpath定位百度输入框——属性定位

find_element_by_xpath(“//*[@id=’kw’]”)

③ 层级+属性

        有些元素仅使用属性无法明确定位,可以结合层级辅助定位。

举例:

        xpath定位百度搜索结果的某一项,需要层级+属性。

find_element_by_xpath(“//*[@id=’3’]/div/div[1]/h3/a”)

④ 元素属性+逻辑运算符

        有些元素需要使用多个属性来定位,可以用逻辑运算符 and  or连接属性键值对。

举例:

        xpath定位百度输入框——多个属性定位。

find_element_by_xpath(“//*[@id=’kw’ and @name=’wd’ and @class=’s_ipt’]”)

3、F12获取元素定位

① 浏览器F12打开检查工具(开发者工具);

② 选定html元素(标签),鼠标悬停在标签上,右键弹出菜单,选择“复制”;

③ 选择子菜单需要的选择器(如图)。

举例:

        如图复制百度搜索输入框元素定位。

        1. 复制selector(css定位器):

#kw

        2. 复制xpath:

//*[@id="kw"]

        3. 复制完整xpath:

/html/body/div[3]/div[1]/div/div[1]/div/form/span[1]/input

相关文章:

F12抓包10:UI自动化 - Elements(元素)定位页面元素

​课程大纲 1、前端基础 1.1 元素 元素是构成HTML文档的基本组成部分之一&#xff0c;定义了文档的结构和内容&#xff0c;比如段落、标题、链接等。 元素大致分为3种&#xff1a;基本结构、自闭合元素&#xff08;self-closing element&#xff09;、嵌套元素。 1、基本结构&…...

android 删除系统原有的debug.keystore,系统运行的时候,重新生成新的debug.keystore,来完成App的运行。

1、先上一个图&#xff1a;这个是keystore无效的原因 之前在安装这个旧版本android studio的时候呢&#xff0c;安装过一版最新的android studio&#xff0c;然后通过模拟器跑过测试的demo。 2、运行旧的项目到模拟器的时候&#xff0c;就报错了&#xff1a; Execution failed…...

SQL入门题

作者SQL入门小白&#xff0c;此栏仅是记录一些解题过程 1、题目 用户访问表users&#xff0c;记录了用户id&#xff08;usr_id&#xff09;和访问日期&#xff08;log_date&#xff09;,求出连续3天以上访问的用户id。 2、解答过程 2.1数据准备 通过navicat创建数据&#xf…...

Python实战:实战练习案例汇总

Python实战&#xff1a;实战练习案例汇总 **Python世界系列****Python实践系列****Python语音处理系列** 本文逆序更新&#xff0c;汇总实践练习案例。 Python世界系列 Python世界&#xff1a;力扣题43大数相乘算法实践Python世界&#xff1a;求解满足某完全平方关系的整数实…...

zabbix之钉钉告警

钉钉告警设置 我们可以将同一个运維组的人员加入到同一个钉钉工作群中&#xff0c;当有异常出现后&#xff0c;Zabbix 将告警信息发送到钉钉的群里面&#xff0c;此时&#xff0c;群内所有的运维人员都能在第一时间看到这则告警详细。 Zabbix 监控系统默认没有开箱即用…...

《OpenCV计算机视觉》—— 对图片进行旋转的两种方法

文章目录 一、用numpy库中的方法对图片进行旋转二、用OpenCV库中的方法对图片进行旋转 一、用numpy库中的方法对图片进行旋转 numpy库中的 np.rot90 函数方法可以对图片进行旋转 代码实现如下&#xff1a; import cv2 import numpy as np# 读取图片 img cv2.imread(wechat.jp…...

Python 错误 ValueError 解析,实际错误实例详解 (一)

文章目录 前言Python 中错误 ValueError: No JSON object Could Be Decoded在 Python 中解码 JSON 对象将 JSON 字符串解码为 Python 对象将 Python 对象编码为 JSON 字符串Python 中错误 ValueError: Unsupported Pickle Protocol: 3Python 中的 Pickling 和 UnpicklingPython…...

[java][git]上传本地代码及更新代码到GitHub教程

上传本地代码及更新代码到GitHub教程 上传本地代码 第一步&#xff1a;去github上创建自己的Repository&#xff0c;创建页面如下图所示&#xff1a; 红框为新建的仓库的https地址 第二步&#xff1a; echo "# Test" >> README.md 第三步&#xff1a;建立g…...

react antd table expandable defaultExpandAllRows 不生效问题

原因&#xff1a;defaultExpandAllRows只会在第一次渲染时触发 解决方案&#xff1a;渲染前判断table 的datasource 数据是否已准备好 {pageList.length > 0 ? (<TablerowSelection{rowSelection}columns{columns}dataSource{pageList}style{{ marginTop: 24 }}pagina…...

什么是领域驱动设计?

什么是领域驱动设计&#xff1f; 领域驱动设计&#xff08;Domain-Driven Design&#xff0c;简称DDD&#xff09;是一种面向对象的软件开发方法&#xff0c;它强调将软件系统的设计和实现过程与业务领域紧密结合&#xff0c;通过深入理解和建模业务领域&#xff0c;从而实现高…...

信息安全工程师(1)计算机网络分类

一、按分布范围分类 广域网&#xff08;WAN&#xff09;&#xff1a; 定义&#xff1a;广域网的任务是提供长距离通信&#xff0c;运送主机所发送的数据。其覆盖范围通常是直径为几十千米到几千千米的区域&#xff0c;因此也被称为远程网。特点&#xff1a;连接广域网的各个结点…...

利士策分享,探索无界:心灵之旅,发现未知精彩

利士策分享&#xff0c;探索无界&#xff1a;心灵之旅&#xff0c;发现未知精彩 梦想的种子&#xff0c;在心田生根发芽 正如每一颗种子都蕴含着生命的奥秘&#xff0c;每个人心中那颗探索的种子&#xff0c;也藏着对未知世界的渴望与追求。它告诉我们&#xff0c;成长不仅仅…...

Jetson 部署 Faster Whisper

文章目录 WhisperFaster Whisper安装使用尝试WSL部署尝试 Jetson 部署时间戳 实时转录 Whisper Whisper 是一种通用语音识别模型。它是在大量不同音频数据集上进行训练的&#xff0c;也是一个多任务模型&#xff0c;可以执行多语言语音识别、语音翻译和语言识别。 测试&#x…...

测试开发基础——测试分类

四、测试分类 1. 按照测试目标分类 1.1. 界面测试 肉眼看到的任何元素都需要进行测试 界面测试&#xff08;简称U测试&#xff09;&#xff0c;指按照界面的需求&#xff08;一般是U设计稿&#xff09;和界面的设计规则&#xff0c;对我们软件界面所展示的全部内容进行测试…...

【计网】数据链路层:概述之位置|地位|链路|数据链路|帧

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山岗&#xff01; &#x1f4ab; 欢迎来到我的学习笔记&#xff01; ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 1. 在OSI体系结构中的位置 1. 位置&#xff1a;数…...

【Android】NestedScrollView的简单用法与滚动冲突、滑动冲突

一、NestedScrollView 1. 什么是 NestedScrollView NestedScrollView 是 Android 中一个用于处理垂直方向滚动的布局组件&#xff0c;它继承自 FrameLayout&#xff0c;同时支持嵌套滑动&#xff08;Nested Scrolling&#xff09;机制。相比于传统的 ScrollView&#xff0c;N…...

【LeetCode】每日一题 2024_9_13 预算内的最多机器人数目(滑动窗口、单调队列)

LeetCode 启动&#xff01; 每日一题的题解重新开始连载&#xff01; 题目&#xff1a;预算内的最多机器人数目 题目链接&#xff1a;2398. 预算内的最多机器人数目 题目描述 代码与解题思路 func maximumRobots(chargeTimes []int, runningCosts []int, budget int64) (an…...

TypeScript中 any和unknown 的区别

1、给其他变量赋值 any可以给其他类型的变量重新赋值&#xff1b; 但unknown是不行的&#xff0c;unknown 可以保持类型安全&#xff0c;从而减少潜在的错误&#xff1b; 2、使用类型上的方法 any可以用类型上的方法&#xff0c;unknown是不可以的...

道可云人工智能元宇宙每日资讯|第五届深圳国际人工智能展(GAIE)在深圳会展中心举行

道可云元宇宙每日简报&#xff08;2024年9月12日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 成都&#xff1a;最高1000万元&#xff0c;研发川藏线数字文旅元宇宙空间 近日&#xff0c;成都市科学技术局启动2025年成都市第一批科技项目和第一批“常年申报”市…...

Bootstrap布局实例(偏移列)

偏移是一个用于更专业的布局的有用功能。它们可用来给列腾出更多的空间。例如&#xff0c;.col-xs-* 类不支持偏移&#xff0c;但是它们可以简单地通过使用一个空的单元格来实现该效果。 为了在大屏幕显示器上使用偏移&#xff0c;请使用 .col-md-offset-* 类。这些类会把一个…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...