定位的原则就是:id name class 优先,强烈建议和前端哥哥搞好关系。定位就不是问题:实在不行就xpath和css大部分偶可以定位到。
webdriver定位的方法是通过一个By类,By类中有许多的属性,常用的有已下几个:
NO1.
ID:dom元素首选的定位方式,id是唯一,定位速度快。(和fe处好关系,用id定位杠杠的)
如By.id(“kw”) 就可以定位到百度的搜索框
NO2.
Name:表单定位为name首选,因为表单肯定会有一个name的属性。
如上图中的百度搜索框,也可以用By.name(“wd”)来定位
NO3.
class 一般代表着某一种样式属性,所有很有可能是重复的,不能精准的定位By.classname(“s_ipt”)来定位。
NO4.
linktext 链接定位 (如果元素中间有空格 请注意)
对于百度首页新闻这个链接,我们可以直接用By.linkText(“新闻”) 来查找
NO5.
xpath定位:辅助的工具 firefinder firepath 两个firefox的插件工具。
第一种xpath:绝对路径式的定位 By.xpath("html/body/div/form/input")
第二种xpath:相对的路径定位 By.xpath("//input") 一般要结合某些特定的属性值
//input 找到所有的input
@id=kw 是找到id属性=kw的
例如 By.xpath("//input[@id='kw']")
第三种xpath:使用部分属性值匹配:By.xpath("//input[starts-with(@id,'nice')]")
By.xpath("//input[contains(@id,'白菜')]")
xpath定位方法有些写的非常的长,如果不是非常熟知xpth的语法,请谨慎的使用。原因很简单,例如:By.xpath("html/body/div/form/input")这个地位的方式是绝对的定位,如果pm在其中去掉了一个属性,你的xpath就得重新的定位,xpath就使用不了。而且在茫茫多的xpath中,如何去寻找你哪一个出了问题,所以如果不懂xpath的语法,请谨慎。一切都是为了维护整个项目,简单简单!
NO6.
css定位:简单的介绍一下css的语法。
介绍三个选择器:
1.id的选择器:# 开头
2.类的选择器:. 开头
3.属性的选择器:[key=’value’]
By.cssSelector(“input[name=’username’]”);
作为一个IT行业的人,一般使用的浏览器为chrome和firefox,chrome自带了审查元素功能和xpath和css路径的复制功能,当然也不是每一个都能复制成功。
Firefox就可以扩展很多插件了:
第一个firebug,在浏览器中右击就可以查看页面的元素。
第二个fireFinder和firepath 都是寻找元素xpath路径的,我喜欢结合xpath语法然后去对比和验证自己寻找的元素路径对不对。
安装后,按F12就可以看到如下:
第三个如果你不喜欢打开新的页面,使用这个插件可以只在本页加载页面结果。