Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析
2015-08-05 10:30
567 查看
加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析
1.技术背景 在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链接等。比如在用户名输入框和密码输入框输入正确的用户名和密码,然后点击登录按钮进行登录。在Selenium自动化中,Selenium提供多种API来对HTML元素进行操作,对于每个HTML元素,需要一个可以标识它的标识符,在Selenium中称之为定位器,Selenium支持多种不同类型的定位器,有标识符,Id,Name, DOM Locator,XPath Locator, 以及CSS Locator等。本文主要讨论DOM, XPATH,以及CSS定位器在不同的浏览器中的使用的优缺点以及注意事项。2.问题与挑战 针对一个使用Selenium RC的Web自动化项目,在项目初期在Firefox上采用了比较灵活,简洁的XPath定位器来对应用中的对象进行操作。但在项目开展到1/3时,增加了对IE浏览器支持的需求。在使用现有基于XPath的脚本运行后,发现脚本运行时间呈现几十上百倍地增加,在Firefox上执行花费1分钟的脚本在IE上会花费10~20分钟,甚至更长的时间。该问题就导致了在IE上直接运行之前已完成脚本变得不可行。要了解到Firefox支持原生的Xpath解析功能,而IE不支持原生的Xpath解析,而是基于一个外部的javascript library(Google's library)来进行Xpath解析。由于需求是要求脚本能够同时支持Firefox和IE浏览器,所以需要寻求另外一种方式来使得在不同浏览器上调用Selenium API所执行时间相当。
3.解决方案 在Selenium RC 0.9.2中,用以解析XPath的javascript库在IE上执行的时间增加了脚本执行时间,而且在越复杂的页面中,在IE上调用API所占用的时间越长。于是决定换用其它类型的定位器,由于该被测Web应用中大多数HTML元素未指定有ID和Name属性,所以在这里首先采用比较灵活的Dom定位器进行测试。
使用Dom定位器来对HTML元素定位,该Locator表达式需要以“dom=” 或者是“document.”开头的形式,Selenium会执行这段javascript片断来最终地取得我们需要访问的HTML元素,由此在Dom定位器中,可以使用Web页面中的DOM对象来获取文档内的所有HTML元素。 需要注意一点的是,Selenium执行这段javascript片断的时候,是采用整段javascript脚本执行的值,也即是在这段javascript片断中最后一个表达式的值。
使用Dom定位器后,在IE上脚本执行的时间比使用Xpath的时候短很多,基本上跟在Firefox上面所花费的时候基本相当。
相关文章推荐
- H5+JS+CSS3 综合应用
- CSS布局定位基础-盒模型和定位机制
- 非常道的css框架
- H5+CSS工具
- css中table-layout:fixed 属性的用法
- css 多行显示省略号....
- css sprite vs Data URI
- IOS 如何更改导航栏样式及状态栏字体颜色(导航栏背景、前景、标题及返回字体颜色)
- CSS3 圆转动 特效
- JS+CSS实现表格高亮的方法
- 将页面table内容与样式另存成excel文件的方法
- 网页学习(部分)CSS
- CSS3选择器详解
- JS动态写入样式
- CSS+html:魔兽世界网页仿制
- 9. CSS 背景属性
- css 提高性能
- 8. CSS 背景
- css reset
- 通过HTML和CSS隐藏和显示元素的方法大全