《手把手教你》系列技巧篇(二十)-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工具基础使用教程

相关文章
|
25天前
|
数据采集 前端开发 Java
《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)
【4月更文挑战第3天】该文介绍了Selenium自动化测试中元素定位方法的By ClassName,强调了解前端基础知识对Web自动化测试的重要性。文章提到,当元素没有特定属性值(如ID、类名或名称)时,可以使用tagName定位器,例如在查找表格数据或验证链接数量时。但要注意,如果仅通过tagName定位,可能会导致选取多个元素,建议结合其他属性以更精确地定位单个元素。文中还提供了Java代码示例,展示了如何使用tagName定位元素并执行自动化测试。
42 6
|
7天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)
【4月更文挑战第21天】本文介绍了Selenium中处理特殊测试场景的方法,如鼠标悬停。Selenium的Actions类提供了鼠标悬停功能,用于模拟用户在网页元素上的悬停行为。文中通过实例展示了如何使用Actions悬停并展开下拉菜单,以及在搜索时选择自动补全的字段。代码示例包括了打开百度首页,悬停在“更多”元素上显示下拉菜单并点击“音乐”,以及在搜索框输入关键词并自动补全的过程。
31 0
|
28天前
|
Web App开发 前端开发 Java
《手把手教你》系列技巧篇(九)-java+ selenium自动化测试-元素定位大法之By name(详细教程)
【4月更文挑战第1天】 这篇教程介绍了如何使用Selenium Webdriver通过name属性来定位网页元素,作为系列教程的一部分,之前讲解了id定位,后续还会有其他六种定位方法。文中以百度搜索为例,详细说明了定位搜索框(name="wd")并输入关键词“北京宏哥”的步骤,包括手动操作流程、编写自动化脚本以及代码实现。此外,还提供了查看和理解Selenium源码的方法,强调了`open implementation`选项用于查看方法的具体实现。整个过程旨在帮助读者学习Selenium的元素定位,并实践自动化测试。
43 0
|
1月前
|
Web App开发 存储 JavaScript
《手把手教你》系列技巧篇(八)-java+ selenium自动化测试-元素定位大法之By id(详细教程)
【2月更文挑战第17天】本文介绍了Web自动化测试的核心——元素定位。文章首先强调了定位元素的重要性,指出找不到元素则无法进行后续操作。Selenium提供八种定位方法,包括By id、name、class name等。其中,By id是最简单快捷的方式。文章还阐述了自动化测试的步骤:定位元素、操作元素、验证结果和记录测试结果。此外,讨论了如何选择定位方法,推荐优先使用简单稳定的方式,如id,其次考虑其他方法。最后,作者提供了Chrome浏览器的开发者工具作为定位元素的工具,并给出了通过id定位的代码示例。
57 0
|
21天前
|
XML Java 测试技术
《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)
【4月更文挑战第7天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
46 5
|
27天前
|
数据采集 前端开发 JavaScript
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
【4月更文挑战第2天】该文介绍了WebDriver的元素定位方法,重点讲解了By ClassName。作者强调理解前端基础知识对自动化测试的重要性,并列举了8种定位方法,包括id、name、class name、tag name等。文中以百度搜索为例,展示了如何使用class name进行定位,并提供了相关Java代码。在实践中,注意class name含有空格时会导致定位失败的问题。
32 0
|
23天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(十二)-java+ selenium自动化测试-元素定位大法之By link text(详细教程)
【4月更文挑战第4天】本文介绍了link text在自动化测试中的应用。Link text是指网页中链接的文字描述,点击可跳转至其他页面。文章列举了8种常用的定位方法,其中着重讲解了link text定位,并通过实例展示了如何使用Java代码实现点击百度首页的“奥运奖牌榜 最新排名”链接,进入相应页面。如果link text不准确,则无法定位到元素,这说明linkText是精准匹配,而非模糊匹配。文章还提到了partial link text作为link text的模糊匹配版本,将在后续内容中介绍。
38 4
|
22天前
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
【4月更文挑战第6天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
47 0
|
1月前
|
Web App开发 安全 Java
《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)
【2月更文挑战第16天】本文介绍了如何通过查看源码理解Selenium启动Chrome浏览器的过程。首先,展示了启动Chrome的Java代码,包括设置系统属性、创建WebDriver实例、最大化窗口、设置隐性等待、打开网站、获取页面标题以及关闭浏览器。文章还讲解了包(package)、import导入、setProperty设置系统属性、WebDriver接口、driver实例、manage方法、get方法加载网页以及quit方法退出浏览器的基本概念和作用。适合没有Java基础的读者了解Selenium与Java的交互方式。
51 3
|
5天前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
8 2

热门文章

最新文章