定位的原则就是:id name class 优先,强烈建议和前端哥哥搞好关系。定位就不是问题:实在不行就xpath和css大部分偶可以定位到。
selenium定位的方法是通过一个By类,By类中有许多的属性,常用的有已下几个:
NO1.
ID:非表单元素首选的定位方式,id是唯一,定位速度快。(和fe处好关系,用id定位杠杠的)By.id
NO2.
Name:表单定位为name首选,因为表单肯定会有一个name的属性。
NO3.
class 一般代表着某一种样式属性,所有很有可能是重复的,不能精准的定位。
NO4.
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[start-with(@id,'nice')]")
By.xpath("//input[ends-with(@id,'白菜')
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“]
driver.click('css=input[name="username"]');
4.driver.click("css=#loginForm input:nth-child(2)");