相信不少作web自动化测试的同窗都深有体会,其本质也就是经过操做页面元素对象来模拟用户操做行为,那么首先咱们先找到这些元素对象,而后才能进行一系列操做。css
那么,咱们要先告诉自动化工具或者说代码要操做那个元素,毕竟代码和工具是没法像人工同样识别页面上的元素的,那么如何让这些动做精准的做用到咱们想要做用的元素对象上呢?html
下面咱们就一块儿来学习元素定位操做,固然若是懂一点JavaScript、HTML基础的话上手会更快。web
用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">
从上面搜索框HTML代码片断中,发现有个id="kw"的属性,咱们就能够经过这个id定位到这个搜索框spa
WebElement element = driver.findElement(By.id("kw"));
小贴士:若是你英文好的话,细心点会发现,By是介词,用的意思,下面的代码意思就是用ID的方式查找Id为kw的元素,当时我就是这么学的,有点low,可是很好用code
同理,搜索框HTML代码片断中,发现有个name="wd"的属性,咱们也能够经过name属性定位到这个搜索框htm
WebElement element = driver.findElement(By.name("wd"));
再细心点,你会发现有个className="s_ipt"的属性,咱们天然也能够经过className这个属性定位到这个搜索框
WebElement element = driver.findElement(By.className("s_ipt"));
说明,常说的class属性就是HTML代码中className属性,这点注意,别被人笑话了哦
属性找的也差很少了,咱们天然也能够用标签(tag)去定位元素
WebElement element = driver.findElement(By.tagName("input"));
字面意思用超连接定位,通俗点就是精确查询的超文本定位,下面用一段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/"));
这个方法就是模糊查询出来的超文本,好比一个网页中的全部超连接,全部都包含Refain的
WebElement element = driver.findElement(By.partialLinkText("Refain"));
通常作自动化的人都很喜欢用的一种方式,还接着刚才百度输入框的例子,用xpath定位,关于xpath详细定位操做能够参考我以前的文章《selenium使用Xpath定位之完整篇》
WebElement element =driver.findElement(By.xpath("//input[@id='kw']"));
一样这种定位方式也特别受欢迎,这回用css定位,关于css详细的定位操做能够参考我以前的文章《selenium之css定位小结》
WebElement element = driver.findElement(By.cssSelector(".s_ipt"));
在这些定位方法中,除开xpath和css,其它的定位方法都很容易理解和掌握如何使用,具体实际脚本开发过程当中使用哪一种方法,仍是看我的习惯,到此,关于selenium的元素定位操做就介绍完了,还请各位同窗多去学习、实践!
原文出处:https://www.cnblogs.com/longronglang/p/11154521.html