《手把手教你》系列技巧篇(二十)-java+ selenium自动化测试-元素定位大法之终卷(详细教程)

简介: 【4月更文挑战第12天】本文介绍了Selenium的八种元素定位方式,包括id、name、class name、css selector、link text、partial link text、tag name和xpath,并给出了每种方式的示例代码。建议在选择定位方法时,优先使用唯一性的id和name,其次考虑css或xpath,但要注意它们的性能影响。

1.简介

这篇文章主要是对前边的文章中的一些总结和拓展。本来是不打算写着一篇的,但是由于前后文章定位元素的时间有点长,怕大家忘记了,就在这里简单做一个总结和拓展。

2.Selenium八种定位方式

Selenium官方网站在使用教程中说到,定位方式有8种,分别是class name、css selector、id、name、link text、partial link text、tag name、xpath。

方法 语法 描述
id driver.findElement(By.id(String id)) 使用页面元素的id属性
name driver.findElement(By.name(String name)) 使用页面元素的name属性
className driver.findElement(By.className(String class)) 使用页面元素的类名属性
tagName driver.findElement(By.tagName(String tag)) 使用页面元素的HTML的标签名属性
linkText driver.findElement(By.linkText(String text)) 使用页面链接元素的文字属性(全部对应文字内容
partialLinkText driver.findElement(By.partialLinkText(String text)) 使用页面链接元素的文字属性(包含部分文字内容
xpath driver.findElement(By.xpath(String xpath) 使用xpath定位
cssSelector driver.findElement(By.cssSelector(String css)) 使用CSS选择器定位

3.定位遵循原则

我们在选择使用定位方法的时候,建议遵循以下原则

1.若id和name在html中是唯一的,则优先使用这2种。

2.使用css或xpath,他们都很灵活,但语法复杂。Xpath性能应该是最慢的。

3.link text、partial link text缺点在于只对连接元素起作用。

4.class name不支持复合类名的元素。

5.tag name是危险的方法,因为一个页面上有很多相同标签的元素。

若某种方法定位到多个元素,则会返回第一个元素。

4.元素定位调试

4.1IDE自带调试

这种方法比较麻烦,也比较low,宏哥不推荐。

释:

  •  可以不输入,使用“select”点击元素定位,然后用“find”查看是否可定位。
  •  也可以自己输入自己定位的方法,点击“find”查看是否可定位。

4.2chrome控制台调试

chrome自带功能,可生成xpath及css的元素定位值,如图但是,这种生成的很繁琐,一般不采用。这种方法主要适合一些小白,或者为了省事直接一复制一粘贴就可以了。宏哥前边也提到过。

4.3js定位调试

console里面执行javascript代码,操作dom对象。

每个载入浏览器的 HTML 文档都会成为 Document 对象。Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

通过id获取

document.getElementById(“id”)

通过name获取

document.getElementsByName(“Name”) 返回的是list

通过标签名选取元素

document.getElementsByTagName(“tag”)

通过CLASS类选取元素

document.getElementsByClassName(“class”)

兼容性:IE8及其以下版本的浏览器未实现getElementsByClassName方法

通过CSS选择器选取元素

document.querySelectorAll(“css selector")

兼容性:IE8及其以下版本的浏览器只支持CSS2标准的选择器语法

实例:

1.控制台输入:document.getElementById("kw"); 回车,下边输出定位到的元素,鼠标点击定位到的元素,在网页查看是否是我们想要定位的元素,有兴趣的可以自己试一下其他的方法。如下图所示:

4.4书写调试

就是直接书写调试。

(1)可以自己在控制台,书写路径调试。

1)xpath调试:使用$x("")方法,如下图所示:

2)css调试:使用("")("") 或$("")方法,如下图所示:

(2)打开Chrome浏览器,F12打开开发者工具,然后Ctrl+F调出输入框,在输入框中输入xpath表达式或者css表达式,如下图所示:

(3)鼠标置于要定位的元素上->鼠标右键->检查->Elements->Ctrl+F

5.小结

总共有8种方法,但是在实际的运用中,我们一定要合理使用,按以下方法进行选择

1.当页面元素有id和name属性时,最好尽量用id和name来定位。但由于现实项目代码并不规范,没有这些属性时,就要选择其他方法定位。

2.xpath和cssSelector功能很强大,但定位性能并不是太好,所以当有id和name属性可以定位时就勿用。如果元素用别的方法都无法定位,可以选择xpath或cssSelector。

3.当要定位一组相同元素时,可以考虑用tagName、className或者name。

4.当需要定位超文本链接时,可以使用linkText或partialLinkText方式。

好了,到此所有定位就讲解和分享完了,就要告一段落了,下一篇讲解其他知识点。

6.拓展

6.1xpath定位工具

由于目前一些版本的火狐浏览器安装不了firebug和firePath,而有些版本有安装不了seleuinm Ide,导致做自动化测试需要安装两个火狐浏览器,一台机器同时运行两个火狐又很麻烦,于是想了其他Xpath的定位方法

工具:Chrome浏览器

插件:XPath Helper Chrome

安装方法:直接去Chrome商店里搜索XPath Helper,安装即可(目前需要FQ,大家可自行找FQ工具)。安装好插件并让插件处于开启状态 ,具体的安装方法自己百度一下,宏哥这里不做介绍了,后期可能宏哥会在Chrome哪里讲解一下。

使用方法:

1.xpath helper官方文档上介绍的使用方法如下:

打开窗口后,按shift键并移动鼠标至你需要查看的区域即可立即在插件窗口中显示其代码查询结果。

1)打开一个新的标签,并导航到你最喜欢的网页。

2)按Ctrl-Shift键-X以打开XPath辅助控制台。

3)按住Shift键鼠标在页面上的元素。查询框会不断更新,以显示鼠标指针下面的元素充分XPath查询。结果框其右侧将显示评价结果的查询。

4)如果需要的话,可以直接在控制台编辑XPath查询。在结果框中将立即反映任何变化。

5)再次按Ctrl-Shift键-X关闭控制台

2.自己手写在QUERY中输入xpath表达式,回车定位元素,如下图所示:

3.XPath Helper Chrome插件注意事项

虽然XPath Helper插件使用非常方便,但它也不是万能的,有两个问题:

1.XPath Helper 自动提取的 XPath 都是从根路径开始的,这几乎必然导致 XPath 过长,不利于维护;

2.当提取循环的列表数据时,XPath Helper 是使用的下标来分别提取的列表中的每一条数据,这样并不适合程序批量处理,还是需要人为修改一些类似于*标记等。不过,合理的使用Xpath,还是能帮我们省下很多时间的!



每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

相关文章
|
7月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
235 31
Selenium IDE:Web自动化测试的得力助手
|
8月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
125 0
|
9月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
9月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
399 5
|
9月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
1607 5
|
9月前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
787 1
|
9月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
10月前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
10月前
|
敏捷开发 Java 测试技术
探索自动化测试的奥秘:从Selenium到Appium
【9月更文挑战第14天】软件测试,这个看似枯燥乏味却至关重要的领域,正经历着一场革命。随着技术的进步,自动化测试工具如Selenium和Appium已成为质量保证的利器。本文将带你一探这些工具的神秘面纱,了解它们如何简化测试流程、提升效率,并确保软件产品的质量。准备好,我们将深入自动化测试的世界,解锁其背后的原理和实践技巧。
|
10月前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。