我是这么学习Selenium元素定位操作的
写在前面
相信很多做web自动化测试的同学都深有体会,其本质也就是通过操作页面元素对象来模拟用户操作行为,那么首先我们先找到这些元素对象,然后才能进行一系列操作。
那么,我们要先告诉自动化工具或者说代码要操作那个元素,毕竟代码和工具是无法像人工一样识别页面上的元素的,那么如何让这些动作精准的作用到我们想要作用的元素对象上呢?
下面我们就一起来学习元素定位操作,当然如果懂一点JavaScript、HTML基础的话上手会更快。
查看页面元素
用360浏览器打开博客园我的中心页面,右键选择审查元素,就可以看到整个页面的html代码了
点击框中左上角的箭头图标,移动鼠标到左面页头的欢迎你,Refain,就可以自动定位到欢迎你,Refain位置处的HTML代码了,查看到欢迎你,Refain的属性,我们可以清楚的看到有id属性。

元素定位
Webdriver通过findElement方法来找到页面的某个元素,使用的方法有id、linkText、partialLinkText、name、tagName、xpath、className、cssSelector这八种。下面我们就这些定位方法逐一介绍。
以百度首页搜索框为例,HTML代码如下:
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
使用id定位
从上面搜索框HTML代码片段中,发现有个id="kw"的属性,我们就可以通过这个id定位到这个搜索框
WebElement element = driver.findElement(By.id("kw"));
小贴士:如果你英文好的话,细心点会发现,By是介词,用的意思,下面的代码意思就是用ID的方式查找Id为kw的元素,当时我就是这么学的,有点low,但是很好用
使用name定位
同理,搜索框HTML代码片段中,发现有个name="wd"的属性,我们也可以通过name属性定位到这个搜索框
WebElement element = driver.findElement(By.name("wd"));
使用class定位
再细心点,你会发现有个className="s_ipt"的属性,我们自然也可以通过className这个属性定位到这个搜索框
WebElement element = driver.findElement(By.className("s_ipt"));
说明,常说的class属性就是HTML代码中className属性,这点注意,别被人笑话了哦
使用tagName定位
属性找的也差不多了,我们自然也可以用标签(tag)去定位元素
WebElement element = driver.findElement(By.tagName("input"));
使用linkText定位
字面意思用超链接定位,通俗点就是精确查询的超文本定位,下面用一段html代码为例
<a href="https://www.cnblogs.com/longronglang/" class="gray" target="_blank">https://www.cnblogs.com/longronglang/</a>
这就是一段超链接代码,我就可以通过超链接定位这个元素
WebElement element = driver.findElement(By.linkText("https://www.cnblogs.com/longronglang/"));
使用partialLink定位
这个方法就是模糊查询出来的超文本,比如一个网页中的所有超链接,所有都包含Refain的
WebElement element = driver.findElement(By.partialLinkText("Refain"));
使用xpath定位
一般做自动化的人都很喜欢用的一种方式,还接着刚才百度输入框的例子,用xpath定位,关于xpath详细定位操作可以参考我之前的文章《selenium使用Xpath定位之完整篇》
WebElement element =driver.findElement(By.xpath("//input[@id='kw']"));
使用cssSelector定位
同样这种定位方式也特别受欢迎,这回用css定位,关于css详细的定位操作可以参考我之前的文章《selenium之css定位小结》
WebElement element = driver.findElement(By.cssSelector(".s_ipt"));
小结:
在这些定位方法中,除开xpath和css,其它的定位方法都很容易理解和掌握如何使用,具体实际脚本开发过程中使用哪种方法,还是看个人习惯,到此,关于selenium的元素定位操作就介绍完了,还请各位同学多去学习、实践!
我是这么学习Selenium元素定位操作的的更多相关文章
- Selenium webdriver 学习总结-元素定位
Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要 ...
- selenium元素定位陷阱规避
为什么selenium可以在各个浏览器上运行?因为selenium在与各个浏览器驱动执行前,会先把脚本转化成webdriver, webdriver wire协议(一种json格式的协议),这样就与脚 ...
- 自动化测试基础篇--Selenium元素定位
摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...
- Selenium3 + Python3自动化测试系列二——selenium元素定位
一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...
- selenium元素定位之css选择器
在selenium元素定位时会用到css选择器选取元素,虽说xpath在定位元素时能解决大部分问题,但使用css选择器选取元素也是一种不错的选择. css相较与xpath选择元素优点如下: 表达式更加 ...
- UI自动化学习笔记- Selenium元素定位及元素操作
一.元素定位 1. 如何进行元素定位? 元素定位就是通过元素的信息或元素层级结构来定位元素的 2.定位工具 浏览器开发者工具 3.元素定位方式 Selenium提供了八种定位元素方式 id name ...
- python学习之——selenium元素定位
web自动化测试按步骤拆分,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 其中定位元素尤为关键,此篇是使用webdriver通过页面各个 ...
- java+selenium元素定位和元素操作
1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...
- Java + selenium 元素定位(6)之iframe切换(即对富文本框的操作)
在元素定位中,对富文本框的元素定位是特别的,当我们使用普通的元素定位方法对富文本框进行操作时,我们会发现不管我们之前介绍的八种方法中的任何方法,我们都不能成功定位到富文本框,并对其进行操作.那是因为富 ...
随机推荐
- JS的innerText和innerHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 关于在.Net开发中使用Sqlite的版本选择问题
原文:关于在.Net开发中使用Sqlite的版本选择问题 如果一个.NET应用要自适应32位/64位系统,只需要在项目的“目标平台”设置为“Any CPU”.但是如果应用中使用了SQLite,情况就不 ...
- Android Camera2 拍照(二)——使用TextureView
原文:Android Camera2 拍照(二)--使用TextureView 上一篇博文简单介绍了使用Camera2 API拍摄照片,并使用SurfaceView作为预览界面.实际上,相对于Surf ...
- delphi 操作xml示例(DelphiBBS)
自:http://www.delphibbs.com/keylife/iblog_show.asp?xid=20713 ======================================== ...
- Android基础开发入门(一)
前言:我学了一年多的C#(从学编程算起,也没有两年,我现在大二下),中间也一直在学WP开发,虽然技术不咋地,很渣渣,但微软在Build大会上宣布的策略让我觉得有必要学习一下安卓开发了.关于微软的策略, ...
- HTML5离线缓存攻击测试(二)
经过昨天的测试,发现使用离线缓存的网站会被攻击.但是,不使用离线缓存的网站就真的不会受到这样的攻击么? 据我理解,按照标准当浏览器请求manifest文件时,若没有请求到,或者文件发生改变,应当不使用 ...
- 编译 Qt 5.6(使QtWebEngine支持XP)
说明 qt 5.6的编译进行了数十遍,才得出本文的可行方案,之所以花了这么多的时间,主要是qt引入了QtWebEngine模块后,导致编译难度直线上升,而且又有一些中国特色的问题(如360安全卫士)导 ...
- 20 个免费开源的 CSS3 用户界面工具包
ui.css Metro UI CSS Pure CSS jQuery jKit Solid HTML5/CSS3 UI Kit CSS3 UI Kit Alt CSS3 UI Kit MediaLo ...
- Qt Style Sheet实践(二):组合框QComboBox的定制(24K纯开源)——非常漂亮
组合框是一个重要且应用广泛的组件,一般由两个子组件组成:文本下拉单部分和按钮部分.在许多既需要用户选择.又需要用户手动输入的应用场景下,组合框能够很好的满足我们的需求.如我们经常使用的聊天软件QQ登录 ...
- Qt+VS编译器:默认库“library”与其他库的使用冲突;使用 /NODEFAULTLIB:library(我曾经碰到过,修改qmake.conf,但我修改的是VS的IDE配置)good
找到qt安装目录下的mkspecs文件夹,在里面找到你使用的对应版本编译器,打开qmake.conf.稍等: /MD:动态链接多线程库(msvcrt.lib).使用该选项时,需要用/NODEFAULT ...