Selenium中被误用的XPath
来源:互联网 发布:各个国家顶级域名 编辑:程序博客网 时间:2024/05/18 00:55
用Selenium实现自动化测试的过程中,如果选择页面上的元素并且对之进行各种操作,是一个常见的任务。Selenium提供了多种定位方法:
- id:最有效、最方便的方法
- name:跟id类似的
- class name:对某些具有相同类的元素一网打尽的好方法
- link text 和 partial link text: 用在定位超链接上比较多
- tag name:与class name有点类似
- css selector:如果你试用jQuery,这个一定是你喜欢的方法
- xpath:。。。 /html/body/div/div[2]/div[2]/div[2]/div[5]/div/p[2]
网上很多Selenium的介绍文章,在讲述如何利用XPath定位元素的时候,通常都是这样子说的“打开Firefox浏览器,安装Firebug插件,然后就能方便地获得该元素的XPath了”。由于不求甚解,在一段时间内我真以为这些看起来没什么意义,中间穿插着各种数组操作,读起来反人类反社会的所谓XPath就是真的XPath,同志们大家都被误导了。
XPath在Selenium测试中有好些缺点:1. 性能差,定位元素的性能比起大多数其他方法要差;2. 不够健壮,XPath会随着页面元素布局的改变而改变;3. 兼容性不好,在不同的浏览器下对XPath的实现是不一样的。如此多的弱点,为什么它还存在于Selenium中呢?Selenium提供了这7个元素定位的工具,就好像工具箱里面有锤子有老虎钳有螺丝刀,每个工具都能完成特定的任务,前提是要在正确的前提下,正确地使用。
XPath通常会在如下场景:一个写自动化测试的人,发现他想要操作的元素不能通过id, name, link text等比较方便有效的方法来进行定位,苦逼的他没能说服开发这个页面的人把他想要的id加上,他开始用所谓的XPath来定位元素,代码中充满了各种让人摸不着头脑的XPath(/html/body/div/div[3]/div[2]/div[4]/p[2]),在我看来这样的代码跟录制出来的脚本没有任何区别。可读性差,几乎不能维护。XPath理论上可以这样使用,但是实际上应该避免这样的使用。
XPath的一些优点是大家需要知道的,例如:1. XPath可以通过某个元素找到它的祖先(Ancestors);2. 可以做布尔逻辑判断,例如/button[@value=’submit’ or @name=’tijiao’]
参考文章:
- http://www.theautomatedtester.co.uk/tutorials/selenium/selenium_xpath.htm
- http://wiki.openqa.org/display/SEL/Help+With+XPath
- http://stackoverflow.com/questions/5808909/selecting-an-element-with-xpath-and-selenium
- https://community.neustar.biz/community/wpm/blog/2009/04/30/test-your-selenium-xpath-easily-with-firebug
- http://automationtricks.blogspot.com/2010/09/how-to-use-functions-in-xpath-in.html
- Selenium中被误用的XPath
- Selenium中被误用的XPath
- Selenium中被误用的XPath
- selenium中常用的xpath
- selenium中常用的xpath
- 自动化测试selenium中xpath的用法
- Selenium中使用XPath
- selenium 万能的xpath
- Selenium -- XPath的使用大全
- Python+Selenium--XPath的使用
- selenium xpath
- 被误用的保护器件
- selenium中,用xpath定位当前元素的相邻元素/兄弟元素
- 小记C++中switch....case的误用
- 对于java中volatile关键字的误用
- STL中empty()函数的误用
- C++中string.find()的误用
- 在Selenium Webdriver中使用XPath Contains、Sibling函数定位
- 智能性爱机器人的“黑暗面”:伴侣也会变杀手
- Java的多线程
- angular下拉框模糊查询
- Echarts时间坐标轴刻度的改进和优化
- 正确使用日志的技巧
- Selenium中被误用的XPath
- 在CENTOS7上玩转Ethereum区块链(1):虚机架设篇
- DB2函数大全
- 中科院分词系统(NLPIR)JAVA简易教程(转载)
- Android多线程机制
- win7_不主动发送智能卡命令
- js计算出现多位小数-Javascript 浮点运算问题分析与解决
- Runtime浅析
- 性能优化系列之fragment的懒加载