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

news/2024/10/21 10:01:28/

1.简介

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

2.Selenium八种定位方式

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

方法语法描述
iddriver.findElement(By.id(String id))使用页面元素的id属性
namedriver.findElement(By.name(String name))使用页面元素的name属性
classNamedriver.findElement(By.className(String class))使用页面元素的类名属性
tagNamedriver.findElement(By.tagName(String tag))使用页面元素的HTML的标签名属性
linkTextdriver.findElement(By.linkText(String text))使用页面链接元素的文字属性(全部对应文字内容)
partialLinkTextdriver.findElement(By.partialLinkText(String text))使用页面链接元素的文字属性(包含部分文字内容)
xpath driver.findElement(By.xpath(String xpath)使用xpath定位
cssSelectordriver.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工具基础使用教程


http://www.ppmy.cn/news/1372550.html

相关文章

第十篇:如何利用人工智能技术做好营销流量整形管理?(Traffic Shaping)- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台,使命和功能 IAB成立于1996年,总部位于纽约市​​​​​​​。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司,互动广告局(IAB- the Interactive Advertising Bureau)自1996年成立以来,先…

HTTPS如何保证数据传输的安全性 以及CA签发证书验签

暴力输出: 越看会越深入,睡前难以想通,后深入研究。得之。 有问题 请留言。 ----------追求内心的富足与平和。日行一善。 亓苏姑娘

Linux运维_Bash脚本_编译安装GNU-Tools

Linux运维_Bash脚本_编译安装GNU-Tools Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux 和 …

Git分布式管理-头歌实验本地版本库

一、本地版本库创建 任务描述 本地Git操作三部曲是“修改-添加-提交”,即先要在本地仓库进行添加、删除或编辑等修改,然后将本地所做的修改添加至暂存区。添加至暂存区的这些本地修改,并未提交到本地仓库,需要执行提交命令才能将暂…

大语言模型在科技研发与创新中的角色在快速变化

在技术研发与创新中,比如在软件开发、编程工具、科技论文撰写等方面,大语言模型可以辅助工程师和技术专家进行快速的知识检索、代码生成、技术文档编写等工作。在当今的软件工程和研发领域,尤其是随着大语言模型技术的快速发展,它…

【Android】View 的滑动

View 的滑动是 Android 实现自定义控件的基础,同时在开发中我们也难免会遇到 View 的滑动处理。其实不管是哪种滑动方式,其基本思想都是类似的:当点击事件传到 View 时,系统记下触摸点的坐标,手指移动时系统记下移动后…

manjaro 安装 wps 教程

内核: Linux 6.6.16.2 wps-office版本: 11.10.11719-1 本文仅作为参考使用, 如果以上版本差别较大不建议参考 安装wps主体 yay -S wps-office 安装wps字体 (如果下载未成功看下面的方法) yay -S ttf-waps-fonts 安装wps中文语言 yay …

计算机二级(Python)真题讲解每日一题:《全球大学排名》

在省略号处填写一行或多行代码,完成如下功能‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬…