selenium定位方法总结
1.通过id 定位
findElement(By.id("su"))
findElement(By.id())方法用于元素中id 属性的定位。
2.通过name 定位
findElement(By.name("wd"))
findElement(By.name())方法用于元素中name 属性的定位。
3.通过class 定位
findElement(By.className("bg s_btn"))
findElement(By.className())方法用于元素中class 属性的定位。
4.通过tag 定位
findElement(By.tagName("input"))
findElement(By.tagName())方法通过元素的tag name 来定位元素。
5.通过link 定位
findElement(By.linkText("贴吧"))
findElement(By.linkText())方法通过元素标签对之间的文本信息来定位元素。
6.通过partial link 定位
findElement(By.partialLinkText("文本链接"))
findElement(By.partialLinkText())方法通过元素标签对之间的部分文本信息来定位元素。
7.通过XPath 定位
findElement(By.xpath("//input[@id='kw']"))
//表示当前页面某个目录下,input 表示定位元素的标签名,[@id='kw'] 表示这个元素的id
属性值等于kw。
findElement(By.xpath("//*[@class='bg s_btn']"))
如果不想指定标签名也可以用星号(*)代替。
层级与属性结合:
findElement(By.xpath("//span[@class='bg
s_ipt_wr']/input"))
span[@class='bg s_ipt_wr'] 通过class 属性定位到是父元素,后面/input
也就表示父元素下面标签名为input 的子元素。
使用逻辑运算符:
findElement(By.xpath("//input[@id='kw' and
@class='su']/span/input"))
同时使用id 和class 来定位这个元素。
eg:
页面元素既没有id号,又没有唯一的class名称,它的父节点是一个div,拥有class名为paginatorBatchSizes,而它自己本身是一个span元素,那么By.xpath("//div[@class='paginatorBatchSizes']/span")就能拿到这个元素。
starts-with 顾名思义,匹配一个属性开始位置的关键字
contains 匹配一个属性值中包含的字符串
text() 匹配的是显示文本信息,此处也可以用来做定位用
eg: //input[starts-with(@name,'name1')]
查找name属性中开始位置包含'name1'关键字的页面元素
//input[contains(@name,'na')]
查找name属性中包含na关键字的页面元素
xpath写法为
//a[text()='百度搜索']
或者
//a[contains(text(),"百度搜索")]
8.通过CSS 定位
通过class 属性定位:
findElement(By.cssSelector(".s_ipt"))
findElement(By.cssSelector())方法用于CSS 语言定位元素,点号(.)表示通过class
属性来定位元素。
通过id 属性定位:
findElement(By.cssSelector("#su"))
井号(#)表示通过id 属性来定位元素。
通过标签名定位:
findElement(By.cssSelector("input"))
在CSS
语言中用标签名定位元素不需要任何符号标识,直接使用标签名即可,但我们前面已经了解到标签名重复的概率非常大,所以通过这种方式很难唯一的标识一个元素。
通过父子关系定位:
findElement(By.cssSelector("span > input"))
上面的写法表示有父亲元素,它的标签名叫span,查找它的所有标签名叫input 的子元素。
通过属性定位:
findElement(By.cssSelector("input[]"))
在CSS 当中也可以使用元素的任意属性,只要这些属性可以唯一的标识这个元素。
组合定位:
findElement(By.cssSelector("span.bg s_ipt_wr >
input.s_ipt"))
有一个父元素,它的标签名叫span,它有一个class 属性值叫bg
s_ipt_wr,它有一个子元素,标签名叫input,并且这个子元素的class 属性值叫s_ipt。