Selenium 8种基本定位方式
- By ID
- By xpath
- By css
- By class Name
- By name
- By tag name
- By link text
- By partial link text
By ID定位元素
使用ID是最常用定位页面中的元素(如果元素存在id的话),W3C标准推荐开发者提供元素id属性(区别其它元素,具有唯一性不可重复)
备注:建议一般元素如果存在id的话率先使用By ID方式定位元素,因为在实际情况中页面元素可能增加相同其它属性例如name=password,以及导致xpath定位不准确。(以下讲解定位方式具体参考百度首页定位元素)
Java:WebElement searchBar = driver.findElement(By.id("kw"));//ID方式定位到百度首页中的搜索框
By xpath定位元素
Xpath,一种XML路径语言,是一种用于从XML中选择节点的语言。所有主流浏览器都支持Xpath,关于Xpath入门你可以点击这里Xpath入门提示:在chrome浏览器中可以定位到元素后,右键点击选择copy xpath
备注:一般使用Xpath定位元素可以定位到绝大多数元素,所以也是比较常用的一种定位方式,Xpath分为相对定位和绝对定位。下面例子是 使用的相对定位方式(较方便)
Java:WebElement searchBar = driver.findElement(By.xpath("//*[@id="kw"]");//Xpath方式定位到百度首页中的搜索框
By css定位元素
CSS,是一种用来描述用标记语言写的文档的样式(外观和格式),如HTML或XML。跟Xpath同样也分为相对定位和绝对定位(以下例子是讲解相对定位方式),css跟xpath的区别在于css只可以从上往下,而xpath既可以从上往下也可以从下往上,也就是说使用xpath可以先定位到子元素然后定位到父级元素。
Java:WebElement searchBar = driver.findElement(By.cssSelector("#kw"));//css方式定位到百度首页中的搜索框
以上元素定位方式,我觉得在自动化实践中用的比较多的定位方式。
By class Name
通过元素的class 属性进行定位
Java: WebElement element = driver.findElement(By.className(element class));
By name
通过元素的name属性进行定位
Java:WebElement element = driver.findElement(By.name(element name));
By tag name
通过元素标签名进行定位例如
Java:WebElement element = driver.findElement(By.tagName(element tag));
By link text
通过链接文字进行定位元素,例如登录链接
Java:WebElement element = driver .findElement(By.linkText(linkText));
By partial link text
通过部分链接文字进行定位元素
Java:WebElement element = driver.findElement(By.partialLinkText(linktext))
总结
以上描述只是为了作为笔记便于查阅,同时建议对By ID/By Xpath/ By CSS这几种方式做到熟悉掌握,关于Xpath和CSS高级定位将会在下面讲解,这极大方便快速定位元素。对于定位元素的使用优先级,个人认为元素如果有ID优先使用By ID定位方式,其次再考虑到Xpath或者CSS定位方式。如果对于本篇文章有错误之处,有不恰当之处请指出,谢谢。
- 参考:Selenium Testing Tools Cookbook