【2024软件测试面试必会技能】Selenium(5):元素定位的介绍及使用

Selenium元素定位介绍:

  元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,举例:一个对象就是一个人,我们可以通过身份证号、姓名或者他的住址找到这个人。那么一个web对象也是一样的,我们可以通过唯一区别于其它元素的属性来定位这个元素。

元素识别:

一、利用Chrome浏览器开发者工具:

1)打开Chrome浏览器,按F12或依次点击菜单—更多工具—开发者工具;

2)切换到Elements页签,在Elements下点击左上方小箭头可以指定页面元素,查看对应代码

二、利用火狐浏览器开发者工具:

1)打开火狐浏览器,按F12或点击菜单—web开发者—查看器;

2)进入到查看器页签,在查看器下点击左上方小箭头可以指定页面元素,查看对应代码

三、元素定位

下面为百度首页的html部分源码用来认识元素

  百度首页搜索栏的html源码 

  百度首页地图链接的html源码

标签名:a、input ,属性名=属性值:id="kw"、class="s_ipt"、name="wd"、href="http://map.baidu.com",标签文本内容:地图

1.通过id定位元素:
driver.find_element_by_id("id_vaule")

2.通过name定位元素:
driver.find_element_by_name("name_vaule")

3.通过class_name定位元素:
driver.find_element_by_class_name("class_name")

4.通过tag_name定位元素:
driver.find_element_by_tag_name("tag_name_vaule")

5.通过link定位:
driver.find_element_by_link_text("text_vaule")
或:driver.find_element_by_partial_link_text("text_vaule")

6.通过xpath定位元素:
driver.find_element_by_xpath("xpath_syntax")

7.通过css定位元素:
driver.find_element_by_css_selector(“css_syntax”)

注意:以上元素定位的方法在最新的webdriver版本中已经被废弃,如下图:

推荐使用 driver.find_element(By.XPATH,'值'),导入包from selenium.webdriver.common.by import By;如下代码

复制代码

import os
from selenium import webdriver
from selenium.webdriver.common.by import By

current_path = os.path.dirname(os.path.abspath(__file__))  # 当前路径
driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe')  # driver路径
driver = webdriver.Chrome(executable_path=driver_path)  # Firefox,Ie等

driver.get('https://www.baidu.com/')  # 打开网站

# 通过id定位元素
driver.find_element(By.ID,'kw').send_keys('猫咪')
# 通过name定位元素
driver.find_element(By.NAME,'wd').send_keys('天气')
# 通过class_name定位元素
driver.find_element(By.CLASS_NAME,'s_ipt').send_keys('狗')
# 通过标签名定位元素(如果页面中标签有多个input,则无法定位到指定元素)
driver.find_element(By.TAG_NAME,'input').send_keys('猫咪')
# 通过链接文本定位元素
driver.find_element(By.LINK_TEXT,'贴吧').click()
# 通过链接部分文本定位元素
driver.find_element(By.PARTIAL_LINK_TEXT,'图').click()
# 通过xpath定位元素
driver.find_element(By.XPATH,'//*[@id="kw"]').send_keys('猫咪')
# 通过CSS路径定位元素
driver.find_element(By.CSS_SELECTOR,'html body div#wrapper.wrapper_new div#head '
                                    'div#head_wrapper.head_wrapper.s-isindex-wrap.nologin '
                                    'div.s_form.s_form_nologin div.s_form_wrapper.soutu-'
                                    'env-nomac.soutu-env-index form#form.fm span.bg.'
                                    's_ipt_wr.new-pmd.quickdelete-wrap '
                                    'input#kw.s_ipt').send_keys('JAVA')

 总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

​​​

​​​

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

声反射是如何保护内耳的?

声反射是如何保护内耳的? 反射是人和动物通过中枢神经系统对刺激所产生的规律性反应。 在人耳中也同样存在这样一种反射,叫做“声反射”。当人耳受到足够强度的声刺激时,双耳镫骨肌发生反射性收缩,这就是声反射,又称镫…

Vue3_基础使用_3

今天主要学习的是hooks, vue3的使用比vue2方便很多了,但是呢各个功能块的逻辑有时候还是会缠绕在一起,这个时候使用hooks进行模块化管理开发,说白了就是将每个单独的业务放到自己的.ts中去写,以后修改就找到这个ts 不用到处去翻…

5.【架构师成长之路】职场新人:如何快速变得专业(下)

文章目录 导言一、凡事不苟且二、心态要开放1、勇于承担各种事2、别害怕犯错 本文总结说明 导言 上一篇文章我们讲了,作为新人最重要的事情就是“快速变得专业”。 我们先自问自答了一个问题:“新人为何要快速变得专业?新人难道不能就循序渐…

科技快讯:鸿道Intewell操作系统突破国际垄断,引领工控新革命

科东软件Intewell鸿道工业操作系统,已在多种严苛环境下运行检验,并应用于工业控制、智能制造、汽车电子、轨道交通、能源电力、航天航空等实时性要求极高的领域,历经30年的不懈努力和研发迭代,在功能和性能上可以替代风和VxWorks操…

【论文阅读】【yolo系列】YOLO-Pose的论文阅读

Abstract 我们介绍YOLO-pose,一种无热图联合检测的新方法,基于流行的YOLO目标检测框架的图像二维多人姿态估计。 【现有方法的问题】现有的基于热图的两阶段方法是次优的,因为它们不是端到端可训练的,训练依赖于surrogate L1 loss…

【JVM】计数器引用和可达性分析

📝个人主页:五敷有你 🔥系列专栏:JVM ⛺️稳中求进,晒太阳 C/C的内存管理 在C/C这类没有自动垃圾回收机制的语言中,一个对象如果不再使用,需要手动释放,否则就会出现内存泄漏…

常见消息中间件分享

文章目录 概念核心角色作用&使用场景应用解耦异步通信削峰填谷大数据流处理 使用模型点对点模型发布-订阅模型 常见消息中间件介绍一、kafka二、RabbitMQ三、RocketMQ 比较一、Kafka如何实现高吞吐量二、RocketMQ如何实现事务消息 概念 消息中间件是基于队列与消息传递技术…

猿辅导送给新时代家长的一份教育指南,让孩子“学会学习”

新课标发布以来,各学科综合素养内容占比逐渐提升,成为校内教学考察的新方向,素养教育也成为学校、家长讨论的新话题。论坛上,各领域教育创新者、教育实践者围绕素养教育,探讨了学习本质、学习兴趣、作业问题、厌学情绪…

JAVA并发编程之原子性、可见性与有序性

并发编程-原子性、可见性与有序性 一、CPU的可见性 1.1 缓存一致性问题的出现 CPU处理器在处理速度上,远胜于内存,主内存执行一次内存的读写操作,所需要的时间足够处理器去处理上百条指令。 为了弥补处理器与主内存处理能力之间的差距&am…

2023 re:Invent 用 PartyRock 10 分钟构建你的 AI 应用

前言 一年一度的亚马逊云科技的 re:Invent 可谓是全球云计算、科技圈的狂欢,每次都能带来一些最前沿的方向标,这次也不例外。在看完一些 keynote 和介绍之后,我也去亲自体验了一些最近发布的内容。其中让我感受最深刻的无疑是 PartyRock 了。…

3 Nacos源码下载并集成达梦数据库驱动

1、Nacos源码下载 源码直接下载gitee上的nacos2.2.3,具体链接:Nacos: 概览 欢迎来到 Nacos 的世界! Nacos 致力于帮助您发现、配置和管理微服务 - Gitee.com,具体如下图

在编老师可以有副业吗

许多在编老师或许都会面临这样一个问题:除了教书育人,我是否还能有点别的追求?副业,对于很多人来说是一个增加收入、拓展兴趣的途径,但对于在编老师而言,这个问题却显得有些复杂。 老师这份工作本身就充满…

宋仕强介绍说,萨科微slkor

宋仕强介绍说,萨科微slkor(www.slkoric.com)研制了碳化硅SiC SBD二极管、碳化硅SiC MOSFET管、IGBT管、超快恢复功率二极管等高端产品,萨科微SLKOR还有肖特基二极管、ESD静电保护二极管、TVS瞬态抑制二极管、通用二极管和三极管&a…

0-前置知识

前言 SpringBoot框架在设计之初,为了有更好的兼容性,在不同的运行阶,段提供了非常多的扩展点,可以让程序员根据自己的需求,在整个Spring应用程序运行过程中执行程序员自定义的代码。 ApplicationContextInitializer …

springcloud-网关(gateway)

springcloud-网关(gateway) 概述 \Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为其提供跨领域的关注,如:安全、监控/指标和容错 常用术语 Route(路由): 网关的基本构件。它由一个ID、一个目的地…

软考 系统分析师系列知识点之企业信息化规划(1)

所属章节: 第7章. 企业信息化战略与实施 第2节. 企业信息化规划 企业信息化建设是一项长期而艰巨的任务,不可能在短时间内完成。因此,企业信息化建设必然会分解成各个相对独立的项目,在不同时期分别实施,从而建立多个…

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK 全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 上面是涉及到的源代码,而这次需要分析的就是78、79行的两个中断。首先,需要确认NVIC_SYSPRI2寄存器的作用。 进一…

jquery写组件滑动人机验证组件

jquery组件,虽然 jquery 语法古老,但是写好了用起来真的很爽啊,本文用滑动人机验证给大家做个详细教程(直接复制代码就可以用噢o(* ̄▽ ̄*)ブ) 第一步 先看下组件本身 component.js (function() {…

QT中的多线程有什么作用?

概述 在学习QT线程的时候我们首先要知道的是QT的主线程,也叫GUI线程,意如其名,也就是我们程序的最主要的一个线程,主要负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上…

Python urllib模块学习

HTTP协议 HTTP 协议:一般指HTTP(超文本传输)协议。 HTTP是为Web浏览器和Web服务器之间的通信而设计的,基于TCP/IP通信协议嘞传递数据。 HTTP消息结构 客户端请求消息 客户端发送一个HTTP请求到服务器的请求消息包括以下格式 请求行(request line)请求…