由于公司强调要对主业务线进行自动化测试,我从入职到现在一直在做这方面的尝试。从PHPUNIT,htmlunit,selenium1.0,到2.0,再到后来公司改造的自动化测试工具uranium2.0等等,其实这些儿自动化测试都是基于一个录制回放机制。而在这些儿自动化测试过程中,存在着一个共性的问题,就是页面元素的定位,而初学者一运行程序,发现找不到元素,顿时感觉到无从下手。下面我就自己的经验给大家总结一下:
页面自动化元素定位有几个原则:
1,先定位元素的class,如果class有空格,则uranium是定位不到的。改用其他的定位方法。
2,如果没有class,可是找其他属性,如name,id
,node_type等都行,然后用xpath定位,例://div[@node_type='good']
3,如果这些儿属性都没有,或是元素值是动态变化的时候,就需要向上找一层或是几层,再利用这几个原则定位,然后依次向下查找。例如:先定位上层的div,然后再向下找。
//div[@class='class1']/div[2]/a,这样类似的。
4,最好是用火狐打开要测试的页面,然后用firebug,定位到要找的元素。然后在selenium
IDE中按以上的方法定出定位方法,然后单击find按钮,看是否正确。
5,还要考虑一下隐藏属性,如果mouseover过去后才能显示的情况。
6,在打开新窗口,切换到新的frame的时候,也会出现定位不到的情况,所以要在定位元素的时候用selectwindowbytitle(),或是
selenium().switchTo().frame(fr)进行切换后再去定位。
通过上面这几个办法,能定位到百分之八九十的元素,针对其他特殊的元素,要善于尝试。页面级的自动化到现在没有成熟的工具,就是因为变化太多,维护成本太高。所以在对一个工程进行页面级自动化之前一定要估算一下投入与产出,不要盲目进行!!