selenium-元素定位
Posted newme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium-元素定位相关的知识,希望对你有一定的参考价值。
selenium元素的定位方式主要有八种:
要保证用此定位方法定位到的元素是唯一的。
1、By_id
2、By_name
3、By_className(元素的css样式)
4、By_tagName(元素的标签名称)
5、By_linkText (超文本链接上的文字信息)
6、By_particalLinkText (超文本链接上的部分文字信息)
7、By_xpath (XPath是XML Path的简称,由于html文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。绝对路径/相对路径)
8、By_cssSelector
cssSelector这种元素定位方式跟xpath比较类似,但执行速度较快,而且各种浏览器对它的支持都相当到位,所以功能也是蛮强大的。
下面是一些常见的cssSelector的定位方式:
定位id为flrs的div元素,可以写成:#flrs 注:相当于xpath语法的//div[@id=’flrs’]
定位id为flrs下的a元素,可以写成 #flrs > a 注:相当于xpath语法的//div[@id=’flrs’]/a
定位id为flrs下的href属性值为/forexample/about.html的元素,可以写成: #flrs > a[href=”/forexample/about.html”]
eg:driver.findElement(By.cssSelector("button.btn.btn_big.btn_submit"))
如果需要指定多个属性值时,可以逐一加在后面,如#flrs > input[name=”username”][type=”text”]。
此外,cssSelector还有一些高级用法,如果熟练后可以更加方便地帮助我们定位元素,如我们可以利用^用于匹配一个前缀,$用于匹配一个后缀,*用于匹配任意字符。例如:
匹配一个有id属性,并且id属性是以”id_prefix_”开头的超链接元素:a[id^=‘id_prefix_‘]
匹配一个有id属性,并且id属性是以”_id_sufix”结尾的超链接元素:a[id$=‘_id_sufix‘]
匹配一个有id属性,并且id属性中包含”id_pattern”字符的超链接元素:a[id*=‘id_pattern‘]
最后再总结一下,各种方式在选择的时候应该怎么选择:
1. 当页面元素有id属性时,最好尽量用id来定位。但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法。
2. xpath很强悍,但定位性能不是很好,所以还是尽量少用。如果确实少数元素不好定位,可以选择xpath或cssSelector。
3. 当要定位一组元素相同元素时,可以考虑用tagName或name。
4. 当有链接需要定位时,可以考虑linkText或partialLinkText方式。
以上是关于selenium-元素定位的主要内容,如果未能解决你的问题,请参考以下文章
『心善渊』Selenium3.0基础 — 4Selenium基础元素定位详解