在使用selenium进行web自动化测试时,元素定位是非常重要的一个环节,下面介绍selenium元素定位中常用的8种方法。
1、通过元素的id属性定位
driver.findElement(By.id())
示例:driver.findElement(By.id("username"))
2、通过元素的name属性定位
driver.findElement(By.name())
示例:driver.findElement(By.name("login"))
3、通过元素的classname属性定位
driver.findElement(By.className())
示例:driver.findElement(By.className("pass"))
4、通过链接内容定位某元素
driver.findElenment(By.linkText())
示例:driver.findElenment(By.linkText("取消"))
5、通过标签名称定位
driver.findElement(By.tagName())
示例:driver.findElement(By.tagName(“a”))
6、通过链接的部分内容定位
driver.findElement(By.partialLinkText())
示例:driver.findElement(By.partialLinkText(“跳转到“))
7、通过css表达式定位
driver.findElenment(By.cssSelector())
通过ID属性编写表达式:标签#idname,示例:a#top-bnt
通过class属性编写表达式:标签.classname,示例:a.top-bnt
(注意:css表达式中不允许使用空格,如果有空格需使用.代替)
通过元素的其他属性编写表达式:标签[属性=‘值’],示例:button[type='submite']
同时使用两个属性定位表达式:示例:input[class='ui-input'][name='password']
通过层级定位编写表达式:E>F,先定位到E元素,再定位到F元素;示例:div.user-btns>a#top-bnt
通过contains编写表达式:标签:contains(‘部分文字’),示例:a:contains('登录')
8、通过xpath表达式定位
driver.findElenment(By.xpath())
通过元素属性编写表达式://标签[@属性=‘属性值’],示例://input[@name='username']
同时使用两个属性定位://input[@name='username'and @class='input']
同名元素拥有某个属性而没有另一个属性://input[@name='username'and not(@class)]
通过索引编写表达式:通过元素层级定位,示例://header/div/nav/ui/li[3]
(注意:xpath中序号从1开始)
通过text编写表达式:text为完全匹配,需要输入全部文字;示例://a[text()='登录']
通过string编写表达式:元素内容被子元素截断时,通过text无法定位,可以使用string;示例://a[string()='登录']
通过contains编写表达式:contains为部分匹配,只需输入部分文字;示例://a[contains(text(),'登录')]
或//a[contains(text(),'登')]
通过子元素查找父元素:父元素不好定位,且子元素定位表达式唯一,可以通过子元素表达式/..
定位父元素。示例://span[text()="全部"]/..